| 227 |
227 |
| 228 if(jb->subscription == JABBER_SUB_REMOVE) { |
228 if(jb->subscription == JABBER_SUB_REMOVE) { |
| 229 remove_purple_buddies(js, jid); |
229 remove_purple_buddies(js, jid); |
| 230 } else { |
230 } else { |
| 231 GSList *groups = NULL; |
231 GSList *groups = NULL; |
| 232 for(group = xmlnode_get_child(item, "group"); group; group = xmlnode_get_next_twin(group)) { |
232 |
| 233 char *group_name; |
|
| 234 |
|
| 235 if(!(group_name = xmlnode_get_data(group))) |
|
| 236 group_name = g_strdup(""); |
|
| 237 |
|
| 238 if (g_slist_find_custom(groups, group_name, (GCompareFunc)purple_utf8_strcasecmp) == NULL) |
|
| 239 groups = g_slist_append(groups, group_name); |
|
| 240 } |
|
| 241 if (js->server_caps & JABBER_CAP_GOOGLE_ROSTER) |
233 if (js->server_caps & JABBER_CAP_GOOGLE_ROSTER) |
| 242 if (!jabber_google_roster_incoming(js, item)) |
234 if (!jabber_google_roster_incoming(js, item)) |
| 243 continue; |
235 continue; |
| |
236 |
| |
237 for(group = xmlnode_get_child(item, "group"); group; group = xmlnode_get_next_twin(group)) { |
| |
238 char *group_name; |
| |
239 |
| |
240 if(!(group_name = xmlnode_get_data(group))) |
| |
241 group_name = g_strdup(""); |
| |
242 |
| |
243 if (g_slist_find_custom(groups, group_name, (GCompareFunc)purple_utf8_strcasecmp) == NULL) |
| |
244 groups = g_slist_append(groups, group_name); |
| |
245 else |
| |
246 g_free(group_name); |
| |
247 } |
| 244 add_purple_buddies_to_groups(js, jid, name, groups); |
248 add_purple_buddies_to_groups(js, jid, name, groups); |
| 245 } |
249 } |
| 246 } |
250 } |
| 247 |
251 |
| 248 /* if we're just now parsing the roster for the first time, |
252 /* if we're just now parsing the roster for the first time, |