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