Mercurial > pidgin
comparison libpurple/protocols/silc/ops.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 | 8d562557ed6f |
children | f541583e31bd |
comparison
equal
deleted
inserted
replaced
26993:5ff1d66e6aef | 26994: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 */ |