# HG changeset patch # User Mikael Berthe # Date 1127684734 -7200 # Node ID e08b0c2d0e54735640478cebb84fcc1a99c8272b # Parent 39a28cb59af31dfcc1655d93129aa70c5eda6ab3 Add "/room unlock" diff -r 39a28cb59af3 -r e08b0c2d0e54 mcabber/src/commands.c --- a/mcabber/src/commands.c Sun Sep 25 01:04:48 2005 +0200 +++ b/mcabber/src/commands.c Sun Sep 25 23:45:34 2005 +0200 @@ -153,6 +153,7 @@ compl_add_category_word(COMPL_ROOM, "leave"); compl_add_category_word(COMPL_ROOM, "names"); compl_add_category_word(COMPL_ROOM, "remove"); + compl_add_category_word(COMPL_ROOM, "unlock"); } // expandalias(line) @@ -975,8 +976,6 @@ } do_info(NULL); } else if (!strcasecmp(arg, "remove")) { - gpointer bud; - bud = BUDDATA(current_buddy); if (!(buddy_gettype(bud) & ROSTER_TYPE_ROOM)) { scr_LogPrint(LPRINT_NORMAL, "This isn't a chatroom"); return; @@ -990,6 +989,12 @@ roster_del_user(buddy_getjid(bud)); buddylist_build(); update_roster = TRUE; + } else if (!strcasecmp(arg, "unlock")) { + if (!(buddy_gettype(bud) & ROSTER_TYPE_ROOM)) { + scr_LogPrint(LPRINT_NORMAL, "This isn't a chatroom"); + return; + } + jb_room_unlock(buddy_getjid(bud)); } else { scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!"); } diff -r 39a28cb59af3 -r e08b0c2d0e54 mcabber/src/jabglue.c --- a/mcabber/src/jabglue.c Sun Sep 25 01:04:48 2005 +0200 +++ b/mcabber/src/jabglue.c Sun Sep 25 23:45:34 2005 +0200 @@ -489,6 +489,28 @@ jb_reset_keepalive(); } +// Unlock a MUC room +// room syntax: "room@server" +void jb_room_unlock(const char *room) +{ + xmlnode x, y, z; + + if (!online) return; + if (!room) return; + + x = jutil_iqnew(JPACKET__SET, "http://jabber.org/protocol/muc#owner"); + xmlnode_put_attrib(x, "id", "unlock1"); // XXX + xmlnode_put_attrib(x, "to", room); + y = xmlnode_get_tag(x, "query"); + z = xmlnode_insert_tag(y, "x"); + xmlnode_put_attrib(z, "xmlns", "jabber:x:data"); + xmlnode_put_attrib(z, "type", "submit"); + + jab_send(jc, x); + xmlnode_free(x); + jb_reset_keepalive(); +} + void postlogin() { //int i; diff -r 39a28cb59af3 -r e08b0c2d0e54 mcabber/src/jabglue.h --- a/mcabber/src/jabglue.h Sun Sep 25 01:04:48 2005 +0200 +++ b/mcabber/src/jabglue.h Sun Sep 25 23:45:34 2005 +0200 @@ -54,5 +54,6 @@ void jb_set_keepalive_delay(unsigned int delay); inline void jb_set_priority(unsigned int priority); void jb_room_join(const char *room); +void jb_room_unlock(const char *room); #endif /* __JABGLUE_H__ */