about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2015-06-20 00:38:28 +0100
committerJames Booth <boothj5@gmail.com>2015-06-20 00:38:28 +0100
commitd7ec339e3ea668668cbe5fb817bf9914d0265116 (patch)
tree6e9f94fd298a13b2d007d95d66759e37fc0f7e21 /src
parente117c0368f4e9a53ec13883b1eb83c2d64cbe9a2 (diff)
downloadprofani-tty-d7ec339e3ea668668cbe5fb817bf9914d0265116.tar.gz
Added /roster empty command
Diffstat (limited to 'src')
-rw-r--r--src/command/command.c2
-rw-r--r--src/command/commands.c17
2 files changed, 19 insertions, 0 deletions
diff --git a/src/command/command.c b/src/command/command.c
index af04f23a..43bca08b 100644
--- a/src/command/command.c
+++ b/src/command/command.c
@@ -204,6 +204,7 @@ static struct cmd_t command_defs[] =
           "size           : Percentage of the screen taken up by the roster (1-99).",
           "add jid [nick] : Add a new item to the roster.",
           "remove jid     : Removes an item from the roster.",
+          "empty          : Remove all items from roster."
           "nick jid nick  : Change a contacts nickname.",
           "clearnick jid  : Removes the current nickname.",
           "",
@@ -1396,6 +1397,7 @@ cmd_init(void)
     autocomplete_add(roster_ac, "nick");
     autocomplete_add(roster_ac, "clearnick");
     autocomplete_add(roster_ac, "remove");
+    autocomplete_add(roster_ac, "empty");
     autocomplete_add(roster_ac, "show");
     autocomplete_add(roster_ac, "hide");
     autocomplete_add(roster_ac, "by");
diff --git a/src/command/commands.c b/src/command/commands.c
index b7b9c73a..73dc4d47 100644
--- a/src/command/commands.c
+++ b/src/command/commands.c
@@ -1640,6 +1640,23 @@ cmd_roster(ProfWin *window, gchar **args, struct cmd_help_t help)
         }
         return TRUE;
 
+    } else if (strcmp(args[0], "empty") == 0) {
+        if (conn_status != JABBER_CONNECTED) {
+            cons_show("You are not currently connected.");
+            return TRUE;
+        }
+
+        GSList *all = roster_get_contacts();
+        GSList *curr = all;
+        while (curr) {
+            PContact contact = curr->data;
+            roster_send_remove(p_contact_barejid(contact));
+            curr = g_slist_next(curr);
+        }
+
+        g_slist_free(all);
+        return TRUE;
+
     // change nickname
     } else if (strcmp(args[0], "nick") == 0) {
         if (conn_status != JABBER_CONNECTED) {