comparison plugins/msn/msn.c @ 1991:308bd76c57db

[gaim-migrate @ 2001] server-side buddy list retrieval committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Mon, 11 Jun 2001 20:49:18 +0000
parents 7712a8c13b55
children 5121e706af6d
comparison
equal deleted inserted replaced
1990:7712a8c13b55 1991:308bd76c57db
55 55
56 struct msn_xfr { 56 struct msn_xfr {
57 struct gaim_connection *gc; 57 struct gaim_connection *gc;
58 char *user; 58 char *user;
59 char *what; 59 char *what;
60 };
61
62 struct msn_buddy {
63 char *user;
64 char *friend;
60 }; 65 };
61 66
62 static void msn_login_callback(gpointer, gint, GdkInputCondition); 67 static void msn_login_callback(gpointer, gint, GdkInputCondition);
63 static void msn_login_xfr_connect(gpointer, gint, GdkInputCondition); 68 static void msn_login_xfr_connect(gpointer, gint, GdkInputCondition);
64 69
591 status |= (MSN_LUNCH << 5); 596 status |= (MSN_LUNCH << 5);
592 } 597 }
593 598
594 serv_got_update(gc, user, 1, 0, 0, 0, status, 0); 599 serv_got_update(gc, user, 1, 0, 0, 0, status, 0);
595 } else if (!g_strncasecmp(buf, "LST", 3)) { 600 } else if (!g_strncasecmp(buf, "LST", 3)) {
596 char *which, *who, *tmp = buf; 601 char *which, *who, *friend, *tmp = buf;
597 602
598 GET_NEXT(tmp); 603 GET_NEXT(tmp);
599 GET_NEXT(tmp); 604 GET_NEXT(tmp);
600 which = tmp; 605 which = tmp;
601 606
604 GET_NEXT(tmp); 609 GET_NEXT(tmp);
605 GET_NEXT(tmp); 610 GET_NEXT(tmp);
606 who = tmp; 611 who = tmp;
607 612
608 GET_NEXT(tmp); 613 GET_NEXT(tmp);
609 614 friend = tmp;
610 if (!g_strcasecmp(which, "FL")) 615
611 md->fl = g_slist_append(md->fl, g_strdup(who)); 616 if (!g_strcasecmp(which, "FL")) {
612 else if (!md->imported && bud_list_cache_exists(gc)) { 617 struct msn_buddy *b = g_new0(struct msn_buddy, 1);
613 do_import(NULL, gc); 618 b->user = g_strdup(who);
619 b->friend = g_strdup(friend);
620 md->fl = g_slist_append(md->fl, b);
621 } else if (!md->imported) {
622 if (bud_list_cache_exists(gc))
623 do_import(NULL, gc);
614 md->imported = TRUE; 624 md->imported = TRUE;
625 while (md->fl) {
626 struct msn_buddy *b = md->fl->data;
627 md->fl = g_slist_remove(md->fl, b);
628 if (!find_buddy(gc, b->user))
629 add_buddy(gc, "Buddies", b->user, b->friend);
630 g_free(b->user);
631 g_free(b->friend);
632 g_free(b);
633 }
615 } 634 }
616 } else if (!g_strncasecmp(buf, "MSG", 3)) { 635 } else if (!g_strncasecmp(buf, "MSG", 3)) {
617 char *user, *tmp = buf; 636 char *user, *tmp = buf;
618 int length; 637 int length;
619 char *msg, *skiphead, *utf, *final; 638 char *msg, *skiphead, *utf, *final;
1018 g_free(mx->user); 1037 g_free(mx->user);
1019 g_free(mx->what); 1038 g_free(mx->what);
1020 g_free(mx); 1039 g_free(mx);
1021 } 1040 }
1022 while (md->fl) { 1041 while (md->fl) {
1023 char *tmp = md->fl->data; 1042 struct msn_buddy *tmp = md->fl->data;
1024 md->fl = g_slist_remove(md->fl, tmp); 1043 md->fl = g_slist_remove(md->fl, tmp);
1044 g_free(tmp->user);
1045 g_free(tmp->friend);
1025 g_free(tmp); 1046 g_free(tmp);
1026 } 1047 }
1027 g_free(md); 1048 g_free(md);
1028 } 1049 }
1029 1050
1227 struct msn_data *md = gc->proto_data; 1248 struct msn_data *md = gc->proto_data;
1228 char buf[MSN_BUF_LEN]; 1249 char buf[MSN_BUF_LEN];
1229 GSList *l = md->fl; 1250 GSList *l = md->fl;
1230 1251
1231 while (l) { 1252 while (l) {
1232 if (!g_strcasecmp(who, l->data)) 1253 struct msn_buddy *b = l->data;
1254 if (!g_strcasecmp(who, b->user))
1233 break; 1255 break;
1234 l = l->next; 1256 l = l->next;
1235 } 1257 }
1236 if (l) 1258 if (l)
1237 return; 1259 return;