comparison src/protocols/oscar/oscar.c @ 4292:78a3d2caf84c

[gaim-migrate @ 4545] Better alias synchronization, as well as a rare crash fix (when changing the alias of buddies that you are awaiting authorization from). I'll get rid of those annoying auth dialogs at signon tomorrow. I hope. committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Sat, 11 Jan 2003 08:40:25 +0000
parents aa20cc16dc08
children 79d871c11eb9
comparison
equal deleted inserted replaced
4291:7d3c552c4a89 4292:78a3d2caf84c
4122 tmp = 0; 4122 tmp = 0;
4123 for (curitem=sess->ssi.local; curitem; curitem=curitem->next) { 4123 for (curitem=sess->ssi.local; curitem; curitem=curitem->next) {
4124 switch (curitem->type) { 4124 switch (curitem->type) {
4125 case 0x0000: { /* Buddy */ 4125 case 0x0000: { /* Buddy */
4126 if (curitem->name) { 4126 if (curitem->name) {
4127 char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, curitem->name); 4127 char *gname = aim_ssi_itemlist_findparentname(sess->ssi.local, curitem->name);
4128 char *alias = aim_ssi_getalias(sess->ssi.local, gname, curitem->name); 4128 char *alias = aim_ssi_getalias(sess->ssi.local, gname, curitem->name);
4129 struct buddy *buddy = find_buddy(gc, curitem->name); 4129 struct buddy *buddy = find_buddy(gc, curitem->name);
4130 if (buddy) { 4130 if (buddy) {
4131 /* Get server stored alias */
4131 if (alias) 4132 if (alias)
4132 strcpy(buddy->alias, alias); 4133 strcpy(buddy->alias, alias);
4133 } else { 4134 } else {
4134 debug_printf("ssi: adding buddy %s to group %s to local list\n", curitem->name, gname); 4135 debug_printf("ssi: adding buddy %s to group %s to local list\n", curitem->name, gname);
4135 add_buddy(gc, (gname ? gname : "orphans"), curitem->name, alias); 4136 add_buddy(gc, (gname ? gname : "orphans"), curitem->name, alias);
4203 4204
4204 /* Buddies */ 4205 /* Buddies */
4205 cur = gc->groups; 4206 cur = gc->groups;
4206 while (cur) { 4207 while (cur) {
4207 GSList *curbud; 4208 GSList *curbud;
4208 for (curbud=((struct group*)cur->data)->members; curbud; curbud=curbud->next) 4209 for (curbud=((struct group*)cur->data)->members; curbud; curbud=curbud->next) {
4209 if (!aim_ssi_itemlist_exists(sess->ssi.local, ((struct buddy*)curbud->data)->name)) { 4210 struct buddy *buddy = curbud->data;
4211 char *gname = aim_ssi_itemlist_findparentname(sess->ssi.local, buddy->name);
4212 char *alias = aim_ssi_getalias(sess->ssi.local, gname, buddy->name);
4213 if (aim_ssi_itemlist_exists(sess->ssi.local, buddy->name)) {
4214 /* Store local alias on server */
4215 if (!alias && buddy->alias[0])
4216 aim_ssi_aliasbuddy(sess, od->conn, gname, buddy->name, buddy->alias);
4217 } else {
4210 debug_printf("ssi: adding buddy %s from local list to server list\n", ((struct buddy*)curbud->data)->name); 4218 debug_printf("ssi: adding buddy %s from local list to server list\n", ((struct buddy*)curbud->data)->name);
4211 aim_ssi_addbuddy(od->sess, od->conn, ((struct buddy*)curbud->data)->name, ((struct group*)cur->data)->name, get_buddy_alias_only((struct buddy *)curbud->data), NULL, NULL, 0); 4219 aim_ssi_addbuddy(sess, od->conn, buddy->name, ((struct group*)cur->data)->name, get_buddy_alias_only((struct buddy *)curbud->data), NULL, NULL, 0);
4212 } 4220 }
4221 free(alias);
4222 }
4213 cur = g_slist_next(cur); 4223 cur = g_slist_next(cur);
4214 } 4224 }
4215 4225
4216 /* Permit list */ 4226 /* Permit list */
4217 if (gc->permit) { 4227 if (gc->permit) {
4218 for (cur=gc->permit; cur; cur=cur->next) 4228 for (cur=gc->permit; cur; cur=cur->next)
4219 if (!aim_ssi_itemlist_finditem(sess->ssi.local, NULL, cur->data, AIM_SSI_TYPE_PERMIT)) { 4229 if (!aim_ssi_itemlist_finditem(sess->ssi.local, NULL, cur->data, AIM_SSI_TYPE_PERMIT)) {
4220 debug_printf("ssi: adding permit %s from local list to server list\n", (char *)cur->data); 4230 debug_printf("ssi: adding permit %s from local list to server list\n", (char *)cur->data);
4221 aim_ssi_addpermit(od->sess, od->conn, cur->data); 4231 aim_ssi_addpermit(sess, od->conn, cur->data);
4222 } 4232 }
4223 } 4233 }
4224 4234
4225 /* Deny list */ 4235 /* Deny list */
4226 if (gc->deny) { 4236 if (gc->deny) {
4227 for (cur=gc->deny; cur; cur=cur->next) 4237 for (cur=gc->deny; cur; cur=cur->next)
4228 if (!aim_ssi_itemlist_finditem(sess->ssi.local, NULL, cur->data, AIM_SSI_TYPE_DENY)) { 4238 if (!aim_ssi_itemlist_finditem(sess->ssi.local, NULL, cur->data, AIM_SSI_TYPE_DENY)) {
4229 debug_printf("ssi: adding deny %s from local list to server list\n", (char *)cur->data); 4239 debug_printf("ssi: adding deny %s from local list to server list\n", (char *)cur->data);
4230 aim_ssi_adddeny(od->sess, od->conn, cur->data); 4240 aim_ssi_adddeny(sess, od->conn, cur->data);
4231 } 4241 }
4232 } 4242 }
4233 4243
4234 /* Presence settings (idle time visibility) */ 4244 /* Presence settings (idle time visibility) */
4235 if ((tmp = aim_ssi_getpresence(sess->ssi.local)) != 0xFFFFFFFF) 4245 if ((tmp = aim_ssi_getpresence(sess->ssi.local)) != 0xFFFFFFFF)