Mercurial > pidgin
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; |