pidgin/ljfisher-ssl-client-auth
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.
--- 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);
- g_strdup_printf("<img id='%d'> %s", id, escaped);
+ g_strdup_printf("<img src='" PURPLE_STORED_IMAGE_PROTOCOL "%d'> %s", purple_conversation_write(conv, NULL, message_with_img, flags,
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 @@
+#define PURPLE_STORED_IMAGE_PROTOCOL "purple-image:" /** A reference-counted immutable wrapper around an image's data and its
--- 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 @@
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'>", 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 @@
@@ -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\">", mx->flags |= PURPLE_MESSAGE_IMAGES;
--- 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 @@
- g_snprintf( tag, sizeof( tag ), "<img id=\"%i\">", *img_id );
+ g_snprintf( tag, sizeof( tag ), + "<img src=\"" PURPLE_STORED_IMAGE_PROTOCOL "%i\">", g_string_insert( mx->msg, start, tag );
@@ -1066,7 +1068,7 @@
* Font colour: <font color=#">...</font>
* Links: <a href="">...</a>
- * Inline image: <IMG ID="">
+ * Inline image: <IMG SRC=""> * The following characters are also encoded:
@@ -1133,11 +1135,11 @@
- else if ( purple_str_has_prefix( &message[i], "<IMG ID=" ) ) {
+ else if ( purple_str_has_prefix( &message[i], "<IMG SRC=" PURPLE_STORED_IMAGE_PROTOCOL) ) { - 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 @@
/* this invite has a avatar */
- img_text = g_strdup_printf( "<img id='%d'>", contact->imgid );
+ img_text = g_strdup_printf( "<img src='" PURPLE_STORED_IMAGE_PROTOCOL "%d'>", purple_notify_user_info_add_pair_html( info, _( "Photo" ), 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 @@
/* 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\">", /* 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)))) {
+ && 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, "");
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\">", 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>", purple_notify_user_info_add_pair_html(user_info, NULL, tmp);