From: Sean E. <sea...@us...> - 2002-03-17 04:24:56
|
Update of /cvsroot/gaim/gaim/src/protocols/oscar In directory usw-pr-cvs1:/tmp/cvs-serv1328/src/protocols/oscar Modified Files: auth.c oscar.c Log Message: Added SSI to ICQ again. Not positive if it works, though. Let me know if it doesn't. Index: auth.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/oscar/auth.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- auth.c 1 Dec 2001 00:56:30 -0000 1.5 +++ auth.c 17 Mar 2002 04:24:52 -0000 1.6 @@ -304,8 +304,8 @@ * If set, old-fashioned buddy lists will not work. You will need * to use SSI. */ - if (0) - aim_addtlvtochain8(&tl, 0x004a, 0x01); + + aim_addtlvtochain8(&tl, 0x004a, 0x01); aim_writetlvchain(&fr->data, &tl); Index: oscar.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/oscar/oscar.c,v retrieving revision 1.120 retrieving revision 1.121 diff -u -d -r1.120 -r1.121 --- oscar.c 16 Mar 2002 22:18:38 -0000 1.120 +++ oscar.c 17 Mar 2002 04:24:52 -0000 1.121 @@ -2239,8 +2239,7 @@ aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_CHATNAV); - if (!odata->icq) - aim_ssi_reqrights(sess, fr->conn); + aim_ssi_reqrights(sess, fr->conn); return 1; } @@ -2662,96 +2661,74 @@ static void oscar_add_buddy(struct gaim_connection *g, char *name) { struct oscar_data *odata = (struct oscar_data *)g->proto_data; - if (odata->icq) { - aim_add_buddy(odata->sess, odata->conn, name); - } else { - if ((odata->sess->ssi.received_data) && !(aim_ssi_inlist(odata->sess, odata->conn, name, 0x0000))) { + if ((odata->sess->ssi.received_data) && !(aim_ssi_inlist(odata->sess, odata->conn, name, 0x0000))) { debug_printf("ssi: adding buddy %s to group %s\n", name, find_group_by_buddy(g, name)->name); aim_ssi_addbuddies(odata->sess, odata->conn, find_group_by_buddy(g, name)->name, &name, 1); - } } + } static void oscar_add_buddies(struct gaim_connection *g, GList *buddies) { struct oscar_data *odata = (struct oscar_data *)g->proto_data; - if (odata->icq) { - char buf[MSG_LEN]; - int n=0; - while (buddies) { - if (n > MSG_LEN - 18) { - aim_bos_setbuddylist(odata->sess, odata->conn, buf); - n = 0; - } - n += g_snprintf(buf + n, sizeof(buf) - n, "%s&", (char *)buddies->data); - buddies = buddies->next; - } - aim_bos_setbuddylist(odata->sess, odata->conn, buf); - } else { - if (odata->sess->ssi.received_data) { - int tmp; - GSList *curgrp, *curbud; - for (curgrp=g->groups; curgrp; curgrp=g_slist_next(curgrp)) { + if (odata->sess->ssi.received_data) { + int tmp; + GSList *curgrp, *curbud; + for (curgrp=g->groups; curgrp; curgrp=g_slist_next(curgrp)) { + tmp = 0; + for (curbud=((struct group*)curgrp->data)->members; curbud; curbud=curbud->next) + if (!aim_ssi_inlist(odata->sess, odata->conn, ((struct buddy*)curbud->data)->name, 0x0000)) + tmp++; + if (tmp) { + char **sns = (char **)malloc(tmp*sizeof(char*)); tmp = 0; for (curbud=((struct group*)curgrp->data)->members; curbud; curbud=curbud->next) - if (!aim_ssi_inlist(odata->sess, odata->conn, ((struct buddy*)curbud->data)->name, 0x0000)) + if (!aim_ssi_inlist(odata->sess, odata->conn, ((struct buddy*)curbud->data)->name, 0x0000)) { + debug_printf("ssi: adding buddy %s to group %s\n", ((struct buddy*)curbud->data)->name, ((struct group*)curgrp->data)->name); + sns[tmp] = (char *)((struct buddy*)curbud->data)->name; tmp++; - if (tmp) { - char **sns = (char **)malloc(tmp*sizeof(char*)); - tmp = 0; - for (curbud=((struct group*)curgrp->data)->members; curbud; curbud=curbud->next) - if (!aim_ssi_inlist(odata->sess, odata->conn, ((struct buddy*)curbud->data)->name, 0x0000)) { - debug_printf("ssi: adding buddy %s to group %s\n", ((struct buddy*)curbud->data)->name, ((struct group*)curgrp->data)->name); - sns[tmp] = (char *)((struct buddy*)curbud->data)->name; - tmp++; - } - aim_ssi_addbuddies(odata->sess, odata->conn, ((struct group*)curgrp->data)->name, sns, tmp); - free(sns); + } + aim_ssi_addbuddies(odata->sess, odata->conn, ((struct group*)curgrp->data)->name, sns, tmp); + free(sns); } - } } + } } static void oscar_remove_buddy(struct gaim_connection *g, char *name, char *group) { struct oscar_data *odata = (struct oscar_data *)g->proto_data; - if (odata->icq) { - aim_remove_buddy(odata->sess, odata->conn, name); - } else { - if (odata->sess->ssi.received_data) { - char *ssigroup; - while (aim_ssi_inlist(odata->sess, odata->conn, name, 0x0000) && (ssigroup = aim_ssi_getparentgroup(odata->sess, odata->conn, name)) && !aim_ssi_delbuddies(odata->sess, odata->conn, ssigroup, &name, 1)) - debug_printf("ssi: deleted buddy %s from group %s\n", name, group); - } + + if (odata->sess->ssi.received_data) { + char *ssigroup; + while (aim_ssi_inlist(odata->sess, odata->conn, name, 0x0000) && (ssigroup = aim_ssi_getparentgroup(odata->sess, odata->conn, name)) && !aim_ssi_delbuddies(odata->sess, odata->conn, ssigroup, &name, 1)) + debug_printf("ssi: deleted buddy %s from group %s\n", name, group); } } + static void oscar_remove_buddies(struct gaim_connection *g, GList *buddies, char *group) { struct oscar_data *odata = (struct oscar_data *)g->proto_data; - if (odata->icq) { + + if (odata->sess->ssi.received_data) { GList *cur; + int tmp = 0; for (cur=buddies; cur; cur=cur->next) - aim_remove_buddy(odata->sess, odata->conn, cur->data); - } else { - if (odata->sess->ssi.received_data) { - GList *cur; - int tmp = 0; + if (aim_ssi_inlist(odata->sess, odata->conn, cur->data, 0x0000)) + tmp++; + if (tmp) { + char **sns; + sns = (char **)malloc(tmp*sizeof(char*)); + tmp = 0; for (cur=buddies; cur; cur=cur->next) - if (aim_ssi_inlist(odata->sess, odata->conn, cur->data, 0x0000)) + if (aim_ssi_inlist(odata->sess, odata->conn, cur->data, 0x0000)) { + debug_printf("ssi: deleting buddy %s from group %s\n", cur->data, group); + sns[tmp] = cur->data; tmp++; - if (tmp) { - char **sns; - sns = (char **)malloc(tmp*sizeof(char*)); - tmp = 0; - for (cur=buddies; cur; cur=cur->next) - if (aim_ssi_inlist(odata->sess, odata->conn, cur->data, 0x0000)) { - debug_printf("ssi: deleting buddy %s from group %s\n", cur->data, group); - sns[tmp] = cur->data; - tmp++; - } - aim_ssi_delbuddies(odata->sess, odata->conn, group, sns, tmp); - free(sns); - } + } + aim_ssi_delbuddies(odata->sess, odata->conn, group, sns, tmp); + free(sns); } + } } @@ -2785,13 +2762,6 @@ debug_printf("ssi: syncing local list and server list\n"); - if (odata->icq) { - /* Delete the buddy list */ - debug_printf("ssi: using ICQ, removing ssi data\n"); - aim_ssi_deletelist(sess, fr->conn); - return 1; - } - /* Activate SSI */ debug_printf("ssi: activating server-stored buddy list\n"); aim_ssi_enable(sess, fr->conn); @@ -2929,7 +2899,7 @@ } } } - + return 1; } |