static void adg_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) { MsnSession *session; gint group_id; const char *group_name; session = cmdproc->session; group_id = atoi(cmd->params[3]); group_name = gaim_url_decode(cmd->params[2]); msn_group_new(session->userlist, group_id, group_name); /* There is a user that must me moved to this group */ if (cmd->trans->data) { /* msn_userlist_move_buddy(); */ MsnUserList *userlist = cmdproc->session->userlist; MsnMoveBuddy *data = cmd->trans->data; if (data->old_group_name != NULL) { msn_userlist_rem_buddy(userlist, data->who, MSN_LIST_FL, data->old_group_name); g_free(data->old_group_name); } msn_userlist_add_buddy(userlist, data->who, MSN_LIST_FL, group_name); g_free(data->who); } }
void msn_userlist_move_buddy(MsnUserList *userlist, const char *who, const char *old_group_name, const char *new_group_name) { int new_group_id; new_group_id = msn_userlist_find_group_id(userlist, new_group_name); if (new_group_id < 0) { msn_request_add_group(userlist, who, old_group_name, new_group_name); return; } msn_userlist_add_buddy(userlist, who, MSN_LIST_FL, new_group_name); msn_userlist_rem_buddy(userlist, who, MSN_LIST_FL, old_group_name); }
static void msn_rem_cb(MsnAddRemData *data) { MsnSession *session; MsnUserList *userlist; msn_complete_sync_issue(data); session = data->gc->proto_data; userlist = session->userlist; msn_userlist_rem_buddy(userlist, data->who, MSN_LIST_FL, data->group); g_free(data->group); g_free(data->who); g_free(data); }