| 1217 if ((buddy = g_hash_table_lookup(gaimbuddylist->buddies, &hb)) != NULL) |
1217 if ((buddy = g_hash_table_lookup(gaimbuddylist->buddies, &hb)) != NULL) |
| 1218 return buddy; |
1218 return buddy; |
| 1219 } |
1219 } |
| 1220 |
1220 |
| 1221 return NULL; |
1221 return NULL; |
| |
1222 } |
| |
1223 |
| |
1224 GaimBuddy *gaim_find_buddy_in_group(GaimAccount *account, const char *name, |
| |
1225 GaimGroup *group) |
| |
1226 { |
| |
1227 struct _gaim_hbuddy hb; |
| |
1228 |
| |
1229 if (!gaimbuddylist) |
| |
1230 return NULL; |
| |
1231 |
| |
1232 if (!name) |
| |
1233 return NULL; |
| |
1234 |
| |
1235 hb.name = normalize(name); |
| |
1236 hb.account = account; |
| |
1237 hb.group = (GaimBlistNode*)group; |
| |
1238 |
| |
1239 return g_hash_table_lookup(gaimbuddylist->buddies, &hb); |
| 1222 } |
1240 } |
| 1223 |
1241 |
| 1224 GSList *gaim_find_buddies(GaimAccount *account, const char *name) |
1242 GSList *gaim_find_buddies(GaimAccount *account, const char *name) |
| 1225 { |
1243 { |
| 1226 struct buddy *buddy; |
1244 struct buddy *buddy; |
| 2026 blist_parser_contact = NULL; |
2044 blist_parser_contact = NULL; |
| 2027 tag_stack = g_list_delete_link(tag_stack, tag_stack); |
2045 tag_stack = g_list_delete_link(tag_stack, tag_stack); |
| 2028 } else if(!strcmp(element_name, "buddy")) { |
2046 } else if(!strcmp(element_name, "buddy")) { |
| 2029 GaimAccount *account = gaim_accounts_find(blist_parser_account_name, |
2047 GaimAccount *account = gaim_accounts_find(blist_parser_account_name, |
| 2030 blist_parser_account_protocol); |
2048 blist_parser_account_protocol); |
| 2031 if(account) { |
2049 if(account && !gaim_find_buddy_in_group(account, |
| 2032 GaimBuddy *b = gaim_buddy_new(account, blist_parser_buddy_name, blist_parser_buddy_alias); |
2050 blist_parser_buddy_name, blist_parser_group)) { |
| |
2051 GaimBuddy *b = gaim_buddy_new(account, blist_parser_buddy_name, |
| |
2052 blist_parser_buddy_alias); |
| 2033 gaim_blist_add_buddy(b,blist_parser_contact, blist_parser_group, |
2053 gaim_blist_add_buddy(b,blist_parser_contact, blist_parser_group, |
| 2034 gaim_blist_get_last_child((GaimBlistNode*)blist_parser_contact)); |
2054 gaim_blist_get_last_child((GaimBlistNode*)blist_parser_contact)); |
| 2035 if(blist_parser_buddy_settings) { |
2055 if(blist_parser_buddy_settings) { |
| 2036 g_hash_table_destroy(b->settings); |
2056 g_hash_table_destroy(b->settings); |
| 2037 b->settings = blist_parser_buddy_settings; |
2057 b->settings = blist_parser_buddy_settings; |