Mercurial > pidgin
diff libpurple/protocols/jabber/google.c @ 27509:ebd9630ffc77
propagate from branch 'im.pidgin.pidgin' (head cec487e50b3df746ae8b23771513bf85734f618d)
to branch 'im.pidgin.cpw.darkrain42.obsolete' (head 1fc27ec0bc11e95aeff8c890ab68a5ddcb4bfb8d)
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Sun, 12 Jul 2009 04:41:56 +0000 |
parents | 3bb1085235d0 |
children | a12574d982a1 |
line wrap: on
line diff
--- a/libpurple/protocols/jabber/google.c Mon Jul 06 04:38:08 2009 +0000 +++ b/libpurple/protocols/jabber/google.c Sun Jul 12 04:41:56 2009 +0000 @@ -787,7 +787,7 @@ { xmlnode *child; xmlnode *message; - const char *to, *default_url; + const char *to, *url; const char *in_str; char *to_name; @@ -837,20 +837,16 @@ to = xmlnode_get_attrib(packet, "to"); to_name = jabber_get_bare_jid(to); - default_url = xmlnode_get_attrib(child, "url"); - if (default_url == NULL || *default_url == '\0') - default_url = "http://mail.google.com/mail"; + url = xmlnode_get_attrib(child, "url"); + if (!url || !*url) + url = "http://www.gmail.com"; message= xmlnode_get_child(child, "mail-thread-info"); for (i=0; message; message = xmlnode_get_next_twin(message), i++) { xmlnode *sender_node, *subject_node; - const char *from, *tid, *url; + const char *from, *tid; char *subject; - url = xmlnode_get_attrib(message, "url"); - if (url == NULL || *url == '\0') - url = default_url; - subject_node = xmlnode_get_child(message, "subject"); sender_node = xmlnode_get_child(message, "senders"); sender_node = xmlnode_get_child(sender_node, "sender"); @@ -1006,7 +1002,6 @@ gboolean jabber_google_roster_incoming(JabberStream *js, xmlnode *item) { PurpleAccount *account = purple_connection_get_account(js->gc); - GSList *list = account->deny; const char *jid = xmlnode_get_attrib(item, "jid"); gboolean on_block_list = FALSE; @@ -1024,18 +1019,20 @@ jid_norm = g_strdup(jabber_normalize(account, jid)); - while (list) { - if (!strcmp(jid_norm, (char*)list->data)) { - on_block_list = TRUE; - break; - } - list = list->next; - } + on_block_list = NULL != g_slist_find_custom(account->deny, jid_norm, + (GCompareFunc)strcmp); if (grt && (*grt == 'H' || *grt == 'h')) { - PurpleBuddy *buddy = purple_find_buddy(account, jid_norm); - if (buddy) - purple_blist_remove_buddy(buddy); + /* Hidden; don't show this buddy. */ + GSList *buddies = purple_find_buddies(account, jid_norm); + if (buddies) + purple_debug_info("jabber", "Removing %s from local buddy list\n", + jid_norm); + + for ( ; buddies; buddies = g_slist_delete_link(buddies, buddies)) { + purple_blist_remove_buddy(buddies->data); + } + g_free(jid_norm); return FALSE; } @@ -1066,7 +1063,7 @@ js = (JabberStream*)(gc->proto_data); - if (!js || !js->server_caps & JABBER_CAP_GOOGLE_ROSTER) + if (!js || !(js->server_caps & JABBER_CAP_GOOGLE_ROSTER)) return; jb = jabber_buddy_find(js, who, TRUE); @@ -1136,7 +1133,7 @@ js = (JabberStream*)(gc->proto_data); - if (!js || !js->server_caps & JABBER_CAP_GOOGLE_ROSTER) + if (!js || !(js->server_caps & JABBER_CAP_GOOGLE_ROSTER)) return; buddies = purple_find_buddies(purple_connection_get_account(js->gc), who);