libpurple/protocols/jabber/useravatar.c

branch
cpw.darkrain42.xmpp.avatars
changeset 25481
46c34a4f99df
parent 25480
6e01ab2bc943
child 25543
48141976258f
equal deleted inserted replaced
25480:6e01ab2bc943 25481:46c34a4f99df
275 purple_debug(PURPLE_DEBUG_ERROR, "jabber", 275 purple_debug(PURPLE_DEBUG_ERROR, "jabber",
276 "do_buddy_avatar_update_fromurl got error \"%s\"", 276 "do_buddy_avatar_update_fromurl got error \"%s\"",
277 error_message); 277 error_message);
278 goto out; 278 goto out;
279 } 279 }
280 280
281 purple_buddy_icons_set_for_user(purple_connection_get_account(info->js->gc), info->from, (void*)url_text, len, info->id); 281 purple_buddy_icons_set_for_user(purple_connection_get_account(info->js->gc), info->from, (void*)url_text, len, info->id);
282 282
283 out: 283 out:
284 g_free(info->from); 284 g_free(info->from);
285 g_free(info->id); 285 g_free(info->id);
294 char *b64data; 294 char *b64data;
295 void *img; 295 void *img;
296 size_t size; 296 size_t size;
297 if(!items) 297 if(!items)
298 return; 298 return;
299 299
300 item = xmlnode_get_child(items, "item"); 300 item = xmlnode_get_child(items, "item");
301 if(!item) 301 if(!item)
302 return; 302 return;
303 303
304 data = xmlnode_get_child(item, "data"); 304 data = xmlnode_get_child(item, "data");
312 return; 312 return;
313 313
314 checksum = xmlnode_get_attrib(item,"id"); 314 checksum = xmlnode_get_attrib(item,"id");
315 if(!checksum) 315 if(!checksum)
316 return; 316 return;
317 317
318 b64data = xmlnode_get_data(data); 318 b64data = xmlnode_get_data(data);
319 if(!b64data) 319 if(!b64data)
320 return; 320 return;
321 321
322 img = purple_base64_decode(b64data, &size); 322 img = purple_base64_decode(b64data, &size);
323 if(!img) { 323 if(!img) {
324 g_free(b64data); 324 g_free(b64data);
325 return; 325 return;
326 } 326 }
327 327
328 purple_buddy_icons_set_for_user(purple_connection_get_account(js->gc), from, img, size, checksum); 328 purple_buddy_icons_set_for_user(purple_connection_get_account(js->gc), from, img, size, checksum);
329 g_free(b64data); 329 g_free(b64data);
330 } 330 }
331 331
332 static void 332 static void
335 PurpleBuddy *buddy = purple_find_buddy(purple_connection_get_account(js->gc), from); 335 PurpleBuddy *buddy = purple_find_buddy(purple_connection_get_account(js->gc), from);
336 const char *checksum, *ns; 336 const char *checksum, *ns;
337 xmlnode *item, *metadata; 337 xmlnode *item, *metadata;
338 if(!buddy) 338 if(!buddy)
339 return; 339 return;
340 340
341 checksum = purple_buddy_icons_get_checksum_for_user(buddy); 341 checksum = purple_buddy_icons_get_checksum_for_user(buddy);
342 item = xmlnode_get_child(items,"item"); 342 item = xmlnode_get_child(items,"item");
343 metadata = xmlnode_get_child(item, "metadata"); 343 metadata = xmlnode_get_child(item, "metadata");
344 if(!metadata) 344 if(!metadata)
345 return; 345 return;
362 if(info->type == XMLNODE_TYPE_TAG) 362 if(info->type == XMLNODE_TYPE_TAG)
363 has_children = TRUE; 363 has_children = TRUE;
364 if(info->type == XMLNODE_TYPE_TAG && !strcmp(info->name,"info")) { 364 if(info->type == XMLNODE_TYPE_TAG && !strcmp(info->name,"info")) {
365 const char *type = xmlnode_get_attrib(info,"type"); 365 const char *type = xmlnode_get_attrib(info,"type");
366 const char *id = xmlnode_get_attrib(info,"id"); 366 const char *id = xmlnode_get_attrib(info,"id");
367 367
368 if(checksum && id && !strcmp(id, checksum)) { 368 if(checksum && id && !strcmp(id, checksum)) {
369 /* we already have that avatar, so we don't have to do anything */ 369 /* we already have that avatar, so we don't have to do anything */
370 goodinfo = NULL; 370 goodinfo = NULL;
371 break; 371 break;
372 } 372 }

mercurial