From 11c04d9fcd0706109ea88f081fa073d802e27032 Mon Sep 17 00:00:00 2001 From: James Booth Date: Sun, 16 Mar 2014 17:53:41 +0000 Subject: Added /roster clearnick command --- src/command/command.c | 5 ++++ src/command/commands.c | 78 +++++++++++++++++++++++++++++--------------------- 2 files changed, 50 insertions(+), 33 deletions(-) (limited to 'src/command') diff --git a/src/command/command.c b/src/command/command.c index 8d4ccf8e..dc8a685f 100644 --- a/src/command/command.c +++ b/src/command/command.c @@ -1015,6 +1015,7 @@ cmd_init(void) roster_ac = autocomplete_new(); autocomplete_add(roster_ac, "add"); autocomplete_add(roster_ac, "nick"); + autocomplete_add(roster_ac, "clearnick"); autocomplete_add(roster_ac, "remove"); group_ac = autocomplete_new(); @@ -1564,6 +1565,10 @@ _roster_autocomplete(char *input, int *size) if (result != NULL) { return result; } + result = autocomplete_param_with_func(input, size, "/roster clearnick", roster_find_jid); + if (result != NULL) { + return result; + } result = autocomplete_param_with_func(input, size, "/roster remove", roster_find_jid); if (result != NULL) { return result; diff --git a/src/command/commands.c b/src/command/commands.c index c7a8e0d5..4a7418f4 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -1200,49 +1200,41 @@ cmd_roster(gchar **args, struct cmd_help_t help) GSList *list = roster_get_contacts(); cons_show_roster(list); return TRUE; - } // add contact - if (strcmp(args[0], "add") == 0) { - - if (args[1] == NULL) { + } else if (strcmp(args[0], "add") == 0) { + char *jid = args[1]; + if (jid == NULL) { cons_show("Usage: %s", help.usage); - return TRUE; + } else { + char *name = args[2]; + roster_send_add_new(jid, name); } - - char *jid = args[1]; - char *name = args[2]; - - roster_send_add_new(jid, name); - return TRUE; - } // remove contact - if (strcmp(args[0], "remove") == 0) { - - if (args[1] == NULL) { + } else if (strcmp(args[0], "remove") == 0) { + char *jid = args[1]; + if (jid == NULL) { cons_show("Usage: %s", help.usage); - return TRUE; + } else { + roster_send_remove(jid); } - - char *jid = args[1]; - - roster_send_remove(jid); - return TRUE; - } // change nickname - if (strcmp(args[0], "nick") == 0) { - - if (args[1] == NULL) { + } else if (strcmp(args[0], "nick") == 0) { + char *jid = args[1]; + if (jid == NULL) { cons_show("Usage: %s", help.usage); return TRUE; } - char *jid = args[1]; char *name = args[2]; + if (name == NULL) { + cons_show("Usage: %s", help.usage); + return TRUE; + } // contact does not exist PContact contact = roster_get_contact(jid); @@ -1256,17 +1248,37 @@ cmd_roster(gchar **args, struct cmd_help_t help) GSList *groups = p_contact_groups(contact); roster_send_name_change(barejid, name, groups); - if (name == NULL) { - cons_show("Nickname for %s removed.", jid); - } else { - cons_show("Nickname for %s set to: %s.", jid, name); + cons_show("Nickname for %s set to: %s.", jid, name); + + return TRUE; + + // remove nickname + } else if (strcmp(args[0], "clearnick") == 0) { + char *jid = args[1]; + if (jid == NULL) { + cons_show("Usage: %s", help.usage); + return TRUE; + } + + // contact does not exist + PContact contact = roster_get_contact(jid); + if (contact == NULL) { + cons_show("Contact not found in roster: %s", jid); + return TRUE; } + const char *barejid = p_contact_barejid(contact); + roster_change_name(contact, NULL); + GSList *groups = p_contact_groups(contact); + roster_send_name_change(barejid, NULL, groups); + + cons_show("Nickname for %s removed.", jid); + + return TRUE; + } else { + cons_show("Usage: %s", help.usage); return TRUE; } - - cons_show("Usage: %s", help.usage); - return TRUE; } gboolean -- cgit 1.4.1-2-gfad0