changeset 571:d63e6cbdc297

Add "/room ban"
author Mikael Berthe <mikael@lilotux.net>
date Sat, 03 Dec 2005 14:25:34 +0100
parents 29806b0fe830
children afc2bd38b15c
files mcabber/src/commands.c
diffstat 1 files changed, 28 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/src/commands.c	Sat Dec 03 13:48:27 2005 +0100
+++ b/mcabber/src/commands.c	Sat Dec 03 14:25:34 2005 +0100
@@ -156,6 +156,7 @@
   compl_add_category_word(COMPL_MULTILINE, "verbatim");
 
   // Room category
+  compl_add_category_word(COMPL_ROOM, "ban");
   compl_add_category_word(COMPL_ROOM, "invite");
   compl_add_category_word(COMPL_ROOM, "join");
   compl_add_category_word(COMPL_ROOM, "kick");
@@ -1244,13 +1245,36 @@
   free_arg_lst(paramlst);
 }
 
+// The expected argument is a Jabber id
+static void room_ban(gpointer bud, char *arg)
+{
+  char **paramlst;
+  gchar *jid;
+  const char *roomid = buddy_getjid(bud);
+
+  paramlst = split_arg(arg, 2, 1); // jid, [reason]
+  jid = *paramlst;
+  arg = *(paramlst+1);
+
+  if (!jid || !*jid) {
+    scr_LogPrint(LPRINT_NORMAL, "Missing parameter (Jabber id)");
+    free_arg_lst(paramlst);
+    return;
+  }
+
+  jb_room_kickban(roomid, jid, NULL, 2, arg);
+
+  free_arg_lst(paramlst);
+}
+
+// The expected argument is a nickname
 static void room_kick(gpointer bud, char *arg)
 {
   char **paramlst;
   gchar *nick;
   const char *roomid = buddy_getjid(bud);
 
-  paramlst = split_arg(arg, 2, 1); // nickname, reason
+  paramlst = split_arg(arg, 2, 1); // nickname, [reason]
   nick = *paramlst;
   arg = *(paramlst+1);
 
@@ -1395,6 +1419,9 @@
   } else if (!strcasecmp(subcmd, "invite"))  {
     if ((arg = check_room_subcommand(arg, TRUE, bud)) != NULL)
       room_invite(bud, arg);
+  } else if (!strcasecmp(subcmd, "ban"))  {
+    if ((arg = check_room_subcommand(arg, TRUE, bud)) != NULL)
+      room_ban(bud, arg);
   } else if (!strcasecmp(subcmd, "kick"))  {
     if ((arg = check_room_subcommand(arg, TRUE, bud)) != NULL)
       room_kick(bud, arg);