Mercurial > pidgin
diff libpurple/protocols/jabber/google.c @ 27494:93a41017dca9
Various roster cleanups. Refs #7008.
I haven't tested it, but this may resolve the grouping/case problem (strcmp => purple_utf8_strcasecmp)
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Sun, 07 Jun 2009 00:16:05 +0000 |
parents | f0621e47ccf3 |
children | 6d26258e9f1d |
line wrap: on
line diff
--- a/libpurple/protocols/jabber/google.c Sat Jun 06 22:47:49 2009 +0000 +++ b/libpurple/protocols/jabber/google.c Sun Jun 07 00:16:05 2009 +0000 @@ -987,7 +987,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; @@ -1005,18 +1004,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; }