Mercurial > pidgin
comparison libpurple/protocols/msn/session.c @ 20399:6f986caeab59
merge of 'b4911943cba6f29cf0694dfd563cac17612236dc'
and 'c28931a50bfa21e0be81777bcd91fdeab9116d77'
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Sun, 15 Apr 2007 04:29:56 +0000 |
parents | 60bc06498746 4a099e4d0d09 |
children | 7c0a2ef88018 |
comparison
equal
deleted
inserted
replaced
19843:60bc06498746 | 20399:6f986caeab59 |
---|---|
268 PurpleBlistNode *gnode, *cnode, *bnode; | 268 PurpleBlistNode *gnode, *cnode, *bnode; |
269 PurpleConnection *gc = purple_account_get_connection(session->account); | 269 PurpleConnection *gc = purple_account_get_connection(session->account); |
270 | 270 |
271 g_return_if_fail(gc != NULL); | 271 g_return_if_fail(gc != NULL); |
272 | 272 |
273 for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next){ | 273 /* The core used to use msn_add_buddy to add all buddies before |
274 * being logged in. This no longer happens, so we manually iterate | |
275 * over the whole buddy list to identify sync issues. */ | |
276 for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next) | |
277 { | |
274 if(!PURPLE_BLIST_NODE_IS_GROUP(gnode)) | 278 if(!PURPLE_BLIST_NODE_IS_GROUP(gnode)) |
275 continue; | 279 continue; |
276 for(cnode = gnode->child; cnode; cnode = cnode->next) { | 280 for(cnode = gnode->child; cnode; cnode = cnode->next) { |
277 if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) | 281 if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) |
278 continue; | 282 continue; |
312 | 316 |
313 /* The core used to use msn_add_buddy to add all buddies before | 317 /* The core used to use msn_add_buddy to add all buddies before |
314 * being logged in. This no longer happens, so we manually iterate | 318 * being logged in. This no longer happens, so we manually iterate |
315 * over the whole buddy list to identify sync issues. | 319 * over the whole buddy list to identify sync issues. |
316 */ | 320 */ |
317 for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next){ | 321 for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next) { |
318 PurpleGroup *group = (PurpleGroup *)gnode; | 322 PurpleGroup *group = (PurpleGroup *)gnode; |
319 const char *group_name = group->name; | 323 const char *group_name = group->name; |
320 if(!PURPLE_BLIST_NODE_IS_GROUP(gnode)) | 324 if(!PURPLE_BLIST_NODE_IS_GROUP(gnode)) |
321 continue; | 325 continue; |
322 if(!g_strcasecmp(group_name, MSN_INDIVIDUALS_GROUP_NAME) | 326 if(!g_strcasecmp(group_name, MSN_INDIVIDUALS_GROUP_NAME) |
329 for(bnode = cnode->child; bnode; bnode = bnode->next) { | 333 for(bnode = cnode->child; bnode; bnode = bnode->next) { |
330 PurpleBuddy *b; | 334 PurpleBuddy *b; |
331 if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) | 335 if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) |
332 continue; | 336 continue; |
333 b = (PurpleBuddy *)bnode; | 337 b = (PurpleBuddy *)bnode; |
334 if(b->account == gc->account){ | 338 if(purple_buddy_get_account(b) == purple_connection_get_account(gc)) { |
335 MsnUser *remote_user; | 339 MsnUser *remote_user; |
336 gboolean found = FALSE; | 340 gboolean found = FALSE; |
337 | 341 |
338 purple_debug_info("MaYuan","buddy name:%s,group name:%s\n",b->name,group_name); | 342 remote_user = msn_userlist_find_user(session->userlist, purple_buddy_get_name(b)); |
339 remote_user = msn_userlist_find_user(session->userlist, b->name); | 343 |
340 | 344 if ((remote_user != NULL) && (remote_user->list_op & MSN_LIST_FL_OP)) |
341 if ((remote_user != NULL) && (remote_user->list_op & MSN_LIST_FL_OP)){ | 345 { |
342 const char *group_id; | 346 const char *group_id; |
343 GList *l; | 347 GList *l; |
344 | 348 |
345 purple_debug_info("MaYuan","remote user:{%s}\n",b->name); | 349 purple_debug_info("MaYuan","remote user:{%s}\n",b->name); |
346 group_id = msn_userlist_find_group_id(remote_user->userlist, | 350 group_id = msn_userlist_find_group_id(remote_user->userlist, |
348 if(group_id == NULL){ | 352 if(group_id == NULL){ |
349 continue; | 353 continue; |
350 } | 354 } |
351 purple_debug_info("MaYuan","group_id:{%s}\n",group_id); | 355 purple_debug_info("MaYuan","group_id:{%s}\n",group_id); |
352 | 356 |
353 for (l = remote_user->group_ids; l != NULL; l = l->next){ | 357 for (l = remote_user->group_ids; l != NULL; l = l->next) |
358 { | |
354 purple_debug_info("MaYuan","l->data:{%s}\n",l->data); | 359 purple_debug_info("MaYuan","l->data:{%s}\n",l->data); |
355 if (!g_strcasecmp(group_id ,l->data)){ | 360 if (!g_strcasecmp(group_id ,l->data)) |
361 { | |
356 found = TRUE; | 362 found = TRUE; |
357 break; | 363 break; |
358 } | 364 } |
359 } | 365 } |
360 } | 366 } |
361 | 367 |
362 if (!found){ | 368 if (!found) |
369 { | |
363 /* The user was not on the server list or not in that group | 370 /* The user was not on the server list or not in that group |
364 * on the server list */ | 371 * on the server list */ |
365 msn_show_sync_issue(session, b->name, group_name); | 372 msn_show_sync_issue(session, b->name, group_name); |
366 } | 373 } |
367 } | 374 } |