diff -r c5c09f8f60b0 -r b4ccc5b2a6de mcabber/src/commands.c --- a/mcabber/src/commands.c Wed Jun 27 22:13:10 2007 +0200 +++ b/mcabber/src/commands.c Wed Jun 27 23:03:22 2007 +0200 @@ -225,6 +225,7 @@ compl_add_category_word(COMPL_ROOM, "remove"); compl_add_category_word(COMPL_ROOM, "role"); compl_add_category_word(COMPL_ROOM, "topic"); + compl_add_category_word(COMPL_ROOM, "unban"); compl_add_category_word(COMPL_ROOM, "unlock"); compl_add_category_word(COMPL_ROOM, "whois"); @@ -2018,6 +2019,27 @@ free_arg_lst(paramlst); } +// The expected argument is a Jabber id +static void room_unban(gpointer bud, char *arg) +{ + gchar *fjid = arg; + gchar *jid_utf8; + struct role_affil ra; + const char *roomid = buddy_getjid(bud); + + if (!fjid || !*fjid) { + scr_LogPrint(LPRINT_NORMAL, "Please specify a Jabber ID."); + return; + } + + ra.type = type_affil; + ra.val.affil = affil_none; + + jid_utf8 = to_utf8(fjid); + jb_room_setattrib(roomid, jid_utf8, NULL, ra, NULL); + g_free(jid_utf8); +} + // The expected argument is a nickname static void room_kick(gpointer bud, char *arg) { @@ -2381,6 +2403,9 @@ } else if (!strcasecmp(subcmd, "ban")) { if ((arg = check_room_subcommand(arg, TRUE, bud)) != NULL) room_ban(bud, arg); + } else if (!strcasecmp(subcmd, "unban")) { + if ((arg = check_room_subcommand(arg, TRUE, bud)) != NULL) + room_unban(bud, arg); } else if (!strcasecmp(subcmd, "kick")) { if ((arg = check_room_subcommand(arg, TRUE, bud)) != NULL) room_kick(bud, arg);