comparison libpurple/protocols/mxit/formcmds.c @ 32672:3828a61c44da

A boring and large patch so I can merge heads.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Fri, 23 Dec 2011 08:21:58 +0000
parents 9ad5fcde4af4
children
comparison
equal deleted inserted replaced
32671:0e69949b3e61 32672:3828a61c44da
23 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA 23 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
24 */ 24 */
25 25
26 26
27 #include "internal.h" 27 #include "internal.h"
28 #include <glib/gprintf.h> 28 #include <glib.h>
29 29
30 #include "purple.h" 30 #include "purple.h"
31 31
32 #include "protocol.h" 32 #include "protocol.h"
33 #include "mxit.h" 33 #include "mxit.h"
84 * @param error_message Descriptive error message 84 * @param error_message Descriptive error message
85 */ 85 */
86 static void mxit_cb_ii_returned(PurpleUtilFetchUrlData* url_data, gpointer user_data, const gchar* url_text, gsize len, const gchar* error_message) 86 static void mxit_cb_ii_returned(PurpleUtilFetchUrlData* url_data, gpointer user_data, const gchar* url_text, gsize len, const gchar* error_message)
87 { 87 {
88 struct ii_url_request* iireq = (struct ii_url_request*) user_data; 88 struct ii_url_request* iireq = (struct ii_url_request*) user_data;
89 char* ii_data;
90 int* intptr = NULL; 89 int* intptr = NULL;
91 int id; 90 int id;
92 91
93 #ifdef MXIT_DEBUG_COMMANDS 92 #ifdef MXIT_DEBUG_COMMANDS
94 purple_debug_info(MXIT_PLUGIN_ID, "Inline Image returned from %s\n", iireq->url); 93 purple_debug_info(MXIT_PLUGIN_ID, "Inline Image returned from %s\n", iireq->url);
104 if (g_hash_table_lookup(iireq->mx->session->iimages, iireq->url)) { 103 if (g_hash_table_lookup(iireq->mx->session->iimages, iireq->url)) {
105 /* inline image found in the cache, so we just ignore this reply */ 104 /* inline image found in the cache, so we just ignore this reply */
106 goto done; 105 goto done;
107 } 106 }
108 107
109 /* make a copy of the data */ 108 /* we now have the inline image, store a copy in the imagestore */
110 ii_data = g_malloc(len); 109 id = purple_imgstore_add_with_id(g_memdup(url_text, len), len, NULL);
111 memcpy(ii_data, (const char*) url_text, len);
112
113 /* we now have the inline image, store it in the imagestore */
114 id = purple_imgstore_add_with_id(ii_data, len, NULL);
115 110
116 /* map the inline image id to purple image id */ 111 /* map the inline image id to purple image id */
117 intptr = g_malloc(sizeof(int)); 112 intptr = g_malloc(sizeof(int));
118 *intptr = id; 113 *intptr = id;
119 g_hash_table_insert(iireq->mx->session->iimages, iireq->url, intptr); 114 g_hash_table_insert(iireq->mx->session->iimages, iireq->url, intptr);
365 else { 360 else {
366 /* send the request for the inline image */ 361 /* send the request for the inline image */
367 purple_debug_info(MXIT_PLUGIN_ID, "sending request for inline image '%s'\n", iireq->url); 362 purple_debug_info(MXIT_PLUGIN_ID, "sending request for inline image '%s'\n", iireq->url);
368 363
369 /* request the image (reference: "libpurple/util.h") */ 364 /* request the image (reference: "libpurple/util.h") */
370 purple_util_fetch_url_request(iireq->url, TRUE, NULL, TRUE, NULL, FALSE, mxit_cb_ii_returned, iireq); 365 purple_util_fetch_url(iireq->url, TRUE, NULL, TRUE, -1, mxit_cb_ii_returned, iireq);
371 mx->img_count++; 366 mx->img_count++;
372 } 367 }
373 } 368 }
374 } 369 }
375 370