From now on, prpls must specify images using SRC instead of ID.

Fri, 15 Jun 2012 00:59:46 -0400

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Fri, 15 Jun 2012 00:59:46 -0400
changeset 33052
df92c3d93904
parent 33051
2e75223c078e
child 33053
6ba80150e4c3

From now on, prpls must specify images using SRC instead of ID.

This only fixes libpurple, the UI side doesn't follow this change
just yet.

libpurple/ft.c file | annotate | diff | comparison | revisions
libpurple/imgstore.h file | annotate | diff | comparison | revisions
libpurple/protocols/jabber/buddy.c file | annotate | diff | comparison | revisions
libpurple/protocols/msn/switchboard.c file | annotate | diff | comparison | revisions
libpurple/protocols/mxit/formcmds.c file | annotate | diff | comparison | revisions
libpurple/protocols/mxit/markup.c file | annotate | diff | comparison | revisions
libpurple/protocols/mxit/profile.c file | annotate | diff | comparison | revisions
libpurple/protocols/mxit/splashscreen.c file | annotate | diff | comparison | revisions
libpurple/protocols/oscar/odc.c file | annotate | diff | comparison | revisions
libpurple/protocols/oscar/oscar.c file | annotate | diff | comparison | revisions
libpurple/protocols/sametime/sametime.c file | annotate | diff | comparison | revisions
libpurple/protocols/silc/ops.c file | annotate | diff | comparison | revisions
libpurple/protocols/yahoo/yahoo_profile.c file | annotate | diff | comparison | revisions
--- a/libpurple/ft.c	Fri Jun 15 00:23:44 2012 -0400
+++ b/libpurple/ft.c	Fri Jun 15 00:59:46 2012 -0400
@@ -306,7 +306,8 @@
 		int id = purple_imgstore_add_with_id(data, size, NULL);
 
 		message_with_img =
-			g_strdup_printf("<img id='%d'> %s", id, escaped);
+			g_strdup_printf("<img src='" PURPLE_STORED_IMAGE_PROTOCOL "%d'> %s",
+			                id, escaped);
 		purple_conversation_write(conv, NULL, message_with_img, flags,
 			time(NULL));
 		purple_imgstore_unref_by_id(id);
--- a/libpurple/imgstore.h	Fri Jun 15 00:23:44 2012 -0400
+++ b/libpurple/imgstore.h	Fri Jun 15 00:59:46 2012 -0400
@@ -29,6 +29,8 @@
 
 #include <glib.h>
 
+#define PURPLE_STORED_IMAGE_PROTOCOL "purple-image:"
+
 /** A reference-counted immutable wrapper around an image's data and its
  *  filename.
  */
--- a/libpurple/protocols/jabber/buddy.c	Fri Jun 15 00:23:44 2012 -0400
+++ b/libpurple/protocols/jabber/buddy.c	Fri Jun 15 00:59:46 2012 -0400
@@ -1204,7 +1204,8 @@
 						char *hash;
 
 						jbi->vcard_imgids = g_slist_prepend(jbi->vcard_imgids, GINT_TO_POINTER(purple_imgstore_add_with_id(g_memdup(data, size), size, "logo.png")));
-						img_text = g_strdup_printf("<img id='%d'>", GPOINTER_TO_INT(jbi->vcard_imgids->data));
+						img_text = g_strdup_printf("<img src='" PURPLE_STORED_IMAGE_PROTOCOL "%d'>",
+						                           GPOINTER_TO_INT(jbi->vcard_imgids->data));
 
 						purple_notify_user_info_add_pair_html(user_info, (photo ? _("Photo") : _("Logo")), img_text);
 
--- a/libpurple/protocols/msn/switchboard.c	Fri Jun 15 00:23:44 2012 -0400
+++ b/libpurple/protocols/msn/switchboard.c	Fri Jun 15 00:59:46 2012 -0400
@@ -828,7 +828,8 @@
 	}
 
 	imgid = purple_imgstore_add_with_id(image_data, image_len, NULL);
-	image_msg = g_strdup_printf("<IMG ID='%d'>", imgid);
+	image_msg = g_strdup_printf("<IMG SRC='" PURPLE_STORED_IMAGE_PROTOCOL "%d'>",
+	                            imgid);
 
 	if (swboard->current_users > 1 ||
 		((swboard->conv != NULL) &&
--- a/libpurple/protocols/mxit/formcmds.c	Fri Jun 15 00:23:44 2012 -0400
+++ b/libpurple/protocols/mxit/formcmds.c	Fri Jun 15 00:59:46 2012 -0400
@@ -327,7 +327,6 @@
 	const char*	img;
 	const char*	reply;
 	guchar*		rawimg;
-	char		link[256];
 	gsize		rawimglen;
 	int			imgid;
 
@@ -336,8 +335,9 @@
 		rawimg = purple_base64_decode(img, &rawimglen);
 		//purple_util_write_data_to_file_absolute("/tmp/mxitinline.png", (char*) rawimg, rawimglen);
 		imgid = purple_imgstore_add_with_id(rawimg, rawimglen, NULL);
-		g_snprintf(link, sizeof(link), "<img id=\"%i\">", imgid);
-		g_string_append_printf(msg, "%s", link);
+		g_string_append_printf(msg,
+		                       "<img src=\"" PURPLE_STORED_IMAGE_PROTOCOL "%i\">",
+		                       imgid);
 		mx->flags |= PURPLE_MESSAGE_IMAGES;
 	}
 	else {
--- a/libpurple/protocols/mxit/markup.c	Fri Jun 15 00:23:44 2012 -0400
+++ b/libpurple/protocols/mxit/markup.c	Fri Jun 15 00:59:46 2012 -0400
@@ -403,7 +403,9 @@
 			}
 			else {
 				/* insert img tag */
-				g_snprintf( tag, sizeof( tag ), "<img id=\"%i\">", *img_id );
+				g_snprintf( tag, sizeof( tag ),
+				            "<img src=\"" PURPLE_STORED_IMAGE_PROTOCOL "%i\">",
+				            *img_id );
 				g_string_insert( mx->msg, start, tag );
 			}
 		}
@@ -1066,7 +1068,7 @@
 	 *   Font colour:	<font color=#">...</font>
 	 *   Links:			<a href="">...</a>
 	 *   Newline:		<br>
-	 *   Inline image:  <IMG ID="">
+	 *   Inline image:  <IMG SRC="">
 	 * The following characters are also encoded:
 	 *   &amp;  &quot;  &lt;  &gt;
 	 */
@@ -1133,11 +1135,11 @@
 						g_free( tag );
 					}
 				}
-				else if ( purple_str_has_prefix( &message[i], "<IMG ID=" ) ) {
+				else if ( purple_str_has_prefix( &message[i], "<IMG SRC=" PURPLE_STORED_IMAGE_PROTOCOL) ) {
 					/* inline image */
 					int imgid;
 
-					if ( sscanf( &message[i+9], "%i", &imgid ) ) {
+					if ( sscanf( &message[i+sizeof("<IMG SRC=" PURPLE_STORED_IMAGE_PROTOCOL)-1], "%i", &imgid ) ) {
 						inline_image_add( mx, imgid );
 						*msgtype = CP_MSGTYPE_COMMAND;		/* inline image must be sent as a MXit command */
 					}
--- a/libpurple/protocols/mxit/profile.c	Fri Jun 15 00:23:44 2012 -0400
+++ b/libpurple/protocols/mxit/profile.c	Fri Jun 15 00:59:46 2012 -0400
@@ -233,7 +233,8 @@
 			if ( contact->imgid ) {
 				/* this invite has a avatar */
 				char* img_text;
-				img_text = g_strdup_printf( "<img id='%d'>", contact->imgid );
+				img_text = g_strdup_printf( "<img src='" PURPLE_STORED_IMAGE_PROTOCOL "%d'>",
+				                            contact->imgid );
 				purple_notify_user_info_add_pair_html( info, _( "Photo" ), img_text );
 				g_free(img_text);
 			}
--- a/libpurple/protocols/mxit/splashscreen.c	Fri Jun 15 00:23:44 2012 -0400
+++ b/libpurple/protocols/mxit/splashscreen.c	Fri Jun 15 00:59:46 2012 -0400
@@ -187,7 +187,8 @@
 		imgid = purple_imgstore_add_with_id(g_memdup(imgdata, imglen), imglen, NULL);
 
 		/* Generate and display message */
-		g_snprintf(buf, sizeof(buf), "<img id=\"%d\">", imgid);
+		g_snprintf(buf, sizeof(buf),
+		           "<img src=\"" PURPLE_STORED_IMAGE_PROTOCOL "%d\">", imgid);
 
 		/* Open a request-type popup to display the image */
 		{
--- a/libpurple/protocols/oscar/odc.c	Fri Jun 15 00:23:44 2012 -0400
+++ b/libpurple/protocols/oscar/odc.c	Fri Jun 15 00:59:46 2012 -0400
@@ -376,7 +376,9 @@
 		if (imgid != 0)
 		{
 			/* Write the new image tag */
-			g_string_append_printf(newmsg, "<IMG ID=\"%d\">", imgid);
+			g_string_append_printf(newmsg,
+			                       "<IMG SRC=\"" PURPLE_STORED_IMAGE_PROTOCOL "%d\">",
+			                       imgid);
 		}
 
 		/* Continue from the end of the tag */
--- a/libpurple/protocols/oscar/oscar.c	Fri Jun 15 00:23:44 2012 -0400
+++ b/libpurple/protocols/oscar/oscar.c	Fri Jun 15 00:59:46 2012 -0400
@@ -3186,10 +3186,12 @@
 			g_string_append_len(msg, last, start - last);
 		}
 
-		id = g_datalist_get_data(&attribs, "id");
+		id = g_datalist_get_data(&attribs, "src");
 
 		/* ... if it refers to a valid purple image ... */
-		if (id && (image = purple_imgstore_find_by_id(atoi(id)))) {
+		if (id
+		 && strlen(id) > (sizeof(PURPLE_STORED_IMAGE_PROTOCOL) - 1)
+		 && (image = purple_imgstore_find_by_id(atoi(id + sizeof(PURPLE_STORED_IMAGE_PROTOCOL) - 1)))) {
 			/* ... append the message from start to the tag ... */
 			unsigned long size = purple_imgstore_get_size(image);
 			const char *filename = purple_imgstore_get_filename(image);
--- a/libpurple/protocols/sametime/sametime.c	Fri Jun 15 00:23:44 2012 -0400
+++ b/libpurple/protocols/sametime/sametime.c	Fri Jun 15 00:59:46 2012 -0400
@@ -2833,7 +2833,7 @@
 	if(align) g_string_append_printf(atstr, " align=\"%s\"", align);
 	if(border) g_string_append_printf(atstr, " border=\"%s\"", border);
 
-	mov = g_snprintf(start, len, "<img%s id=\"%i\"", atstr->str, img);
+	mov = g_snprintf(start, len, "<img%s src=\"" PURPLE_STORED_IMAGE_PROTOCOL "%i\"", atstr->str, img);
 	while(mov < len) start[mov++] = ' ';
 
 	g_string_free(atstr, TRUE);
--- a/libpurple/protocols/silc/ops.c	Fri Jun 15 00:23:44 2012 -0400
+++ b/libpurple/protocols/silc/ops.c	Fri Jun 15 00:59:46 2012 -0400
@@ -210,7 +210,9 @@
 		imgid = purple_imgstore_add_with_id(g_memdup(data, data_len), data_len, "");
 		if (imgid) {
 			cflags |= PURPLE_MESSAGE_IMAGES | PURPLE_MESSAGE_RECV;
-			g_snprintf(tmp, sizeof(tmp), "<IMG ID=\"%d\">", imgid);
+			g_snprintf(tmp, sizeof(tmp),
+			           "<IMG SRC=\"" PURPLE_STORED_IMAGE_PROTOCOL "%d\">",
+			           imgid);
 
 			if (channel)
 				serv_got_chat_in(gc, purple_conv_chat_get_id(PURPLE_CONV_CHAT(convo)),
--- a/libpurple/protocols/yahoo/yahoo_profile.c	Fri Jun 15 00:23:44 2012 -0400
+++ b/libpurple/protocols/yahoo/yahoo_profile.c	Fri Jun 15 00:59:46 2012 -0400
@@ -1047,7 +1047,8 @@
 					" bytes\n", photo_url_text, len);
 			id = purple_imgstore_add_with_id(g_memdup(url_text, len), len, NULL);
 
-			tmp = g_strdup_printf("<img id=\"%d\"><br>", id);
+			tmp = g_strdup_printf("<img id=\"" PURPLE_STORED_IMAGE_PROTOCOL "%d\"><br>",
+			                      id);
 			purple_notify_user_info_add_pair_html(user_info, NULL, tmp);
 			g_free(tmp);
 		}

mercurial