Mercurial > pidgin
comparison 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 |
comparison
equal
deleted
inserted
replaced
27493:65b5bc543214 | 27494:93a41017dca9 |
---|---|
985 } | 985 } |
986 | 986 |
987 gboolean jabber_google_roster_incoming(JabberStream *js, xmlnode *item) | 987 gboolean jabber_google_roster_incoming(JabberStream *js, xmlnode *item) |
988 { | 988 { |
989 PurpleAccount *account = purple_connection_get_account(js->gc); | 989 PurpleAccount *account = purple_connection_get_account(js->gc); |
990 GSList *list = account->deny; | |
991 const char *jid = xmlnode_get_attrib(item, "jid"); | 990 const char *jid = xmlnode_get_attrib(item, "jid"); |
992 gboolean on_block_list = FALSE; | 991 gboolean on_block_list = FALSE; |
993 | 992 |
994 char *jid_norm; | 993 char *jid_norm; |
995 | 994 |
1003 return FALSE; | 1002 return FALSE; |
1004 } | 1003 } |
1005 | 1004 |
1006 jid_norm = g_strdup(jabber_normalize(account, jid)); | 1005 jid_norm = g_strdup(jabber_normalize(account, jid)); |
1007 | 1006 |
1008 while (list) { | 1007 on_block_list = NULL != g_slist_find_custom(account->deny, jid_norm, |
1009 if (!strcmp(jid_norm, (char*)list->data)) { | 1008 (GCompareFunc)strcmp); |
1010 on_block_list = TRUE; | |
1011 break; | |
1012 } | |
1013 list = list->next; | |
1014 } | |
1015 | 1009 |
1016 if (grt && (*grt == 'H' || *grt == 'h')) { | 1010 if (grt && (*grt == 'H' || *grt == 'h')) { |
1017 PurpleBuddy *buddy = purple_find_buddy(account, jid_norm); | 1011 /* Hidden; don't show this buddy. */ |
1018 if (buddy) | 1012 GSList *buddies = purple_find_buddies(account, jid_norm); |
1019 purple_blist_remove_buddy(buddy); | 1013 if (buddies) |
1014 purple_debug_info("jabber", "Removing %s from local buddy list\n", | |
1015 jid_norm); | |
1016 | |
1017 for ( ; buddies; buddies = g_slist_delete_link(buddies, buddies)) { | |
1018 purple_blist_remove_buddy(buddies->data); | |
1019 } | |
1020 | |
1020 g_free(jid_norm); | 1021 g_free(jid_norm); |
1021 return FALSE; | 1022 return FALSE; |
1022 } | 1023 } |
1023 | 1024 |
1024 if (!on_block_list && (grt && (*grt == 'B' || *grt == 'b'))) { | 1025 if (!on_block_list && (grt && (*grt == 'B' || *grt == 'b'))) { |