Mercurial > pidgin.yaz
comparison libpurple/protocols/jabber/presence.c @ 26862:5c4a4a0f5929
When we download a buddy's vCard to update an avatar, also try to update the nickname.
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Sat, 02 May 2009 20:42:55 +0000 |
parents | 867e231bffbc |
children | 0c1983abe991 |
comparison
equal
deleted
inserted
replaced
26861:d387f1164b3a | 26862:5c4a4a0f5929 |
---|---|
338 jabber_vcard_parse_avatar(JabberStream *js, const char *from, | 338 jabber_vcard_parse_avatar(JabberStream *js, const char *from, |
339 JabberIqType type, const char *id, | 339 JabberIqType type, const char *id, |
340 xmlnode *packet, gpointer blah) | 340 xmlnode *packet, gpointer blah) |
341 { | 341 { |
342 JabberBuddy *jb = NULL; | 342 JabberBuddy *jb = NULL; |
343 xmlnode *vcard, *photo, *binval; | 343 xmlnode *vcard, *photo, *binval, *fn, *nick; |
344 char *text; | 344 char *text; |
345 | 345 |
346 if(!from) | 346 if(!from) |
347 return; | 347 return; |
348 | 348 |
350 | 350 |
351 js->pending_avatar_requests = g_slist_remove(js->pending_avatar_requests, jb); | 351 js->pending_avatar_requests = g_slist_remove(js->pending_avatar_requests, jb); |
352 | 352 |
353 if((vcard = xmlnode_get_child(packet, "vCard")) || | 353 if((vcard = xmlnode_get_child(packet, "vCard")) || |
354 (vcard = xmlnode_get_child_with_namespace(packet, "query", "vcard-temp"))) { | 354 (vcard = xmlnode_get_child_with_namespace(packet, "query", "vcard-temp"))) { |
355 /* The logic here regarding the nickname and full name is copied from | |
356 * buddy.c:jabber_vcard_parse. */ | |
357 gchar *nickname = NULL; | |
358 if ((fn = xmlnode_get_child(vcard, "FN"))) | |
359 nickname = xmlnode_get_data(fn); | |
360 | |
361 if ((nick = xmlnode_get_child(vcard, "NICKNAME"))) { | |
362 char *tmp = xmlnode_get_data(nick); | |
363 char *bare_jid = jabber_get_bare_jid(from); | |
364 if (strstr(bare_jid, tmp) == NULL) { | |
365 g_free(nickname); | |
366 nickname = tmp; | |
367 } else | |
368 g_free(tmp); | |
369 | |
370 g_free(bare_jid); | |
371 } | |
372 | |
373 if (nickname) { | |
374 serv_got_alias(js->gc, from, nickname); | |
375 g_free(nickname); | |
376 } | |
377 | |
355 if((photo = xmlnode_get_child(vcard, "PHOTO")) && | 378 if((photo = xmlnode_get_child(vcard, "PHOTO")) && |
356 (( (binval = xmlnode_get_child(photo, "BINVAL")) && | 379 (( (binval = xmlnode_get_child(photo, "BINVAL")) && |
357 (text = xmlnode_get_data(binval))) || | 380 (text = xmlnode_get_data(binval))) || |
358 (text = xmlnode_get_data(photo)))) { | 381 (text = xmlnode_get_data(photo)))) { |
359 guchar *data; | 382 guchar *data; |