comparison libpurple/protocols/silc/ops.c @ 27076: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 8d562557ed6f
children f541583e31bd
comparison
equal deleted inserted replaced
27075:5ff1d66e6aef 27076:1fcd09c34fee
837 notify = va_arg(va, int); 837 notify = va_arg(va, int);
838 public_key = va_arg(va, SilcPublicKey); 838 public_key = va_arg(va, SilcPublicKey);
839 839
840 b = NULL; 840 b = NULL;
841 if (public_key) { 841 if (public_key) {
842 PurpleBlistNode *gnode, *cnode, *bnode; 842 GSList *buddies;
843 const char *f; 843 const char *f;
844 844
845 pk = silc_pkcs_public_key_encode(public_key, &pk_len); 845 pk = silc_pkcs_public_key_encode(public_key, &pk_len);
846 if (!pk) 846 if (!pk)
847 break; 847 break;
855 silcpurple_silcdir(), fingerprint); 855 silcpurple_silcdir(), fingerprint);
856 silc_free(fingerprint); 856 silc_free(fingerprint);
857 silc_free(pk); 857 silc_free(pk);
858 858
859 /* Find buddy by associated public key */ 859 /* Find buddy by associated public key */
860 for (gnode = purple_blist_get_root(); gnode; 860 for (buddies = purple_find_buddies(account, NULL); buddies;
861 gnode = purple_blist_node_get_sibling_next(gnode)) { 861 buddies = g_slist_delete_link(buddies, buddies)) {
862 if (!PURPLE_BLIST_NODE_IS_GROUP(gnode)) 862 b = buddies->data;
863 continue; 863 f = purple_blist_node_get_string(PURPLE_BLIST_NODE(b), "public-key");
864 for (cnode = purple_blist_node_get_first_child(gnode); 864 if (purple_strequal(f, buf))
865 cnode; 865 goto cont;
866 cnode = purple_blist_node_get_sibling_next(cnode)) { 866 b = NULL;
867 if( !PURPLE_BLIST_NODE_IS_CONTACT(cnode))
868 continue;
869 for (bnode = purple_blist_node_get_first_child(cnode);
870 bnode;
871 bnode = purple_blist_node_get_sibling_next(bnode)) {
872 if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
873 continue;
874 b = (PurpleBuddy *)bnode;
875 if (purple_buddy_get_account(b) != account)
876 continue;
877 f = purple_blist_node_get_string(bnode, "public-key");
878 if (f && !strcmp(f, buf))
879 goto cont;
880 b = NULL;
881 }
882 }
883 } 867 }
884 } 868 }
885 cont: 869 cont:
886 if (!b) { 870 if (!b) {
887 /* Find buddy by nickname */ 871 /* Find buddy by nickname */