Mercurial > pidgin
diff libpurple/protocols/irc/msgs.c @ 26994:1fcd09c34fee
Use purple_find_buddies() instead of iterating the buddy list.
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Mon, 01 Jun 2009 04:02:10 +0000 |
parents | 839c5481b32a |
children | 01f1929d0936 |
line wrap: on
line diff
--- a/libpurple/protocols/irc/msgs.c Mon Jun 01 03:34:02 2009 +0000 +++ b/libpurple/protocols/irc/msgs.c Mon Jun 01 04:02:10 2009 +0000 @@ -78,7 +78,7 @@ { PurpleConnection *gc; PurpleStatus *status; - PurpleBlistNode *gnode, *cnode, *bnode; + GSList *buddies; PurpleAccount *account; if ((gc = purple_account_get_connection(irc->account)) == NULL @@ -97,33 +97,13 @@ } /* this used to be in the core, but it's not now */ - for (gnode = purple_blist_get_root(); - gnode; - gnode = purple_blist_node_get_sibling_next(gnode)) + for (buddies = purple_find_buddies(account, NULL); buddies; + buddies = g_slist_delete_link(buddies, buddies)) { - if(!PURPLE_BLIST_NODE_IS_GROUP(gnode)) - continue; - for(cnode = purple_blist_node_get_first_child(gnode); - cnode; - cnode = purple_blist_node_get_sibling_next(cnode)) - { - if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) - continue; - for(bnode = purple_blist_node_get_first_child(cnode); - bnode; - bnode = purple_blist_node_get_sibling_next(bnode)) - { - PurpleBuddy *b; - if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) - continue; - b = (PurpleBuddy *)bnode; - if(purple_buddy_get_account(b) == account) { - struct irc_buddy *ib = g_new0(struct irc_buddy, 1); - ib->name = g_strdup(purple_buddy_get_name(b)); - g_hash_table_insert(irc->buddies, ib->name, ib); - } - } - } + PurpleBuddy *b = buddies->data; + struct irc_buddy *ib = g_new0(struct irc_buddy, 1); + ib->name = g_strdup(purple_buddy_get_name(b)); + g_hash_table_insert(irc->buddies, ib->name, ib); } irc_blist_timeout(irc);