static void rem_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) { MsnSession *session; MsnUser *user; const char *list; const char *passport; MsnListId list_id; int group_id; session = cmdproc->session; list = cmd->params[1]; passport = cmd->params[3]; user = msn_userlist_find_user(session->userlist, passport); g_return_if_fail(user != NULL); list_id = msn_get_list_id(list); if (cmd->param_count == 5) group_id = atoi(cmd->params[4]); else group_id = -1; msn_got_rem_user(session, user, list_id, group_id); msn_user_update(user); }
static void rem_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) { MsnSession *session; PecanContact *user; const char *list; const gchar *user_id; /* passport or guid */ MsnListId list_id; const gchar *group_guid; session = cmdproc->session; list = cmd->params[1]; user_id = cmd->params[2]; if (strcmp (list, "FL") == 0) user = pecan_contactlist_find_contact_by_guid (session->contactlist, user_id); else user = pecan_contactlist_find_contact (session->contactlist, user_id); g_return_if_fail(user != NULL); list_id = msn_get_list_id(list); if (cmd->param_count == 4) group_guid = cmd->params[3]; else group_guid = NULL; msn_got_rem_contact(session, user, list_id, group_guid); pecan_contact_update(user); }
static void add_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) { MsnSession *session; MsnUser *user; const char *list; const char *passport; const char *friendly; MsnListId list_id; int group_id; list = cmd->params[1]; passport = cmd->params[3]; friendly = gaim_url_decode(cmd->params[4]); session = cmdproc->session; user = msn_userlist_find_user(session->userlist, passport); if (user == NULL) { user = msn_user_new(session->userlist, passport, friendly); msn_userlist_add_user(session->userlist, user); } else msn_user_set_friendly_name(user, friendly); list_id = msn_get_list_id(list); if (cmd->param_count >= 6) group_id = atoi(cmd->params[5]); else group_id = -1; msn_got_add_user(session, user, list_id, group_id); msn_user_update(user); }
static void adc_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd) { MsnSession *session; PecanContact *user = NULL; const gchar *list = NULL; const gchar *passport = NULL; gchar *friendly = NULL; const gchar *user_guid = NULL; const gchar *group_guid = NULL; MsnListId list_id; guint i = 1; list = cmd->params[i++]; for (; i < cmd->param_count; i++) { const char *chopped_str; chopped_str = cmd->params[i] + 2; /* Check for Name/email. */ if (strncmp (cmd->params[i], "N=", 2) == 0) passport = chopped_str; /* Check for Friendlyname. */ else if (strncmp (cmd->params[i], "F=", 2) == 0) friendly = pecan_url_decode (chopped_str); /* Check for Contact GUID. */ else if (strncmp (cmd->params[i], "C=", 2) == 0) user_guid = chopped_str; else break; } group_guid = cmd->params[i++]; session = cmdproc->session; if (passport) user = pecan_contactlist_find_contact (session->contactlist, passport); else if (user_guid) user = pecan_contactlist_find_contact_by_guid (session->contactlist, user_guid); if (user == NULL) { user = pecan_contact_new (session->contactlist); pecan_contact_set_passport (user, passport); } list_id = msn_get_list_id(list); if (list_id == MSN_LIST_FL) pecan_contact_set_guid (user, user_guid); msn_got_add_contact(session, user, list_id, group_guid); /* There is a user that must me moved to this group */ if (cmd->trans && cmd->trans->data) { MsnAddBuddy *data = cmd->trans->data; msn_notification_add_buddy (session->notification, "FL", data->who, user_guid, friendly, data->group_guid); g_free (data->who); g_free (data->group_guid); } pecan_contact_update(user); g_free (friendly); }