Mercurial > pidgin
diff src/server.c @ 3348:dd34e0b40fed
[gaim-migrate @ 3367]
Support for server-side synchronization on group rename. (Thanks, Mark
Doliner)
committer: Tailor Script <tailor@pidgin.im>
| author | Jim Seymour <jseymour> |
|---|---|
| date | Sun, 07 Jul 2002 14:31:57 +0000 |
| parents | e102d1629c71 |
| children | 8fa61405af2b |
line wrap: on
line diff
--- a/src/server.c Fri Jul 05 22:27:40 2002 +0000 +++ b/src/server.c Sun Jul 07 14:31:57 2002 +0000 @@ -315,6 +315,31 @@ } } +/* + * Rename a group on server roster/list. + */ +void serv_rename_group(struct gaim_connection *g, struct group *old_group, char *new_name) +{ + if (g && g->prpl && old_group && new_name) { + GList *tobemoved = NULL; + GSList *original; + + for (original=old_group->members; original; original=g_slist_next(original)) + tobemoved = g_list_append(tobemoved, ((struct buddy *)original->data)->name); + + if (g->prpl->rename_group) { + /* prpl's might need to check if the group already + * exists or not, and handle that differently */ + g->prpl->rename_group(g, old_group->name, new_name, tobemoved); + } else { + serv_remove_buddies(g, tobemoved, old_group->name); + serv_add_buddies(g, tobemoved); + } + + g_list_free(tobemoved); + } +} + void serv_add_permit(struct gaim_connection *g, char *name) { if (g && g_slist_find(connections, g) && g->prpl && g->prpl->add_permit)
