--- a/mcabber/src/commands.c Sun Nov 12 10:45:13 2006 +0100
+++ b/mcabber/src/commands.c Sun Nov 12 10:51:43 2006 +0100
@@ -190,6 +190,7 @@
// Room category
compl_add_category_word(COMPL_ROOM, "affil");
compl_add_category_word(COMPL_ROOM, "ban");
+ compl_add_category_word(COMPL_ROOM, "bookmark");
compl_add_category_word(COMPL_ROOM, "destroy");
compl_add_category_word(COMPL_ROOM, "invite");
compl_add_category_word(COMPL_ROOM, "join");
@@ -2018,6 +2019,42 @@
free_arg_lst(paramlst);
}
+static void room_bookmark(gpointer bud, char *arg)
+{
+ const char *roomid;
+ const char *name = NULL, *nick = NULL;
+ enum { bm_add = 0, bm_del = 1 } action = 0;
+ int autojoin = 0;
+
+ if (arg && *arg) {
+ // /room bookmark [add|del] [[+|-]autojoin]
+ char **paramlst;
+ char **pp;
+
+ paramlst = split_arg(arg, 2, 0); // At most 2 parameters
+ for (pp = paramlst; *pp; pp++) {
+ if (!strcasecmp(*pp, "add"))
+ action = bm_add;
+ else if (!strcasecmp(*pp, "del"))
+ action = bm_del;
+ else if (!strcasecmp(*pp, "-autojoin"))
+ autojoin = 0;
+ else if (!strcasecmp(*pp, "+autojoin") || !strcasecmp(*pp, "autojoin"))
+ autojoin = 1;
+ }
+ free_arg_lst(paramlst);
+ }
+
+ roomid = buddy_getjid(bud);
+
+ if (action == bm_add) {
+ name = buddy_getname(bud);
+ nick = buddy_getnickname(bud);
+ }
+
+ jb_set_storage_bookmark(roomid, name, nick, NULL, autojoin);
+}
+
static void do_room(char *arg)
{
char **paramlst;
@@ -2094,6 +2131,9 @@
} else if (!strcasecmp(subcmd, "whois")) {
if ((arg = check_room_subcommand(arg, TRUE, bud)) != NULL)
room_whois(bud, arg, TRUE);
+ } else if (!strcasecmp(subcmd, "bookmark")) {
+ if ((arg = check_room_subcommand(arg, FALSE, bud)) != NULL)
+ room_bookmark(bud, arg);
} else {
scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!");
}
--- a/mcabber/src/jabglue.h Sun Nov 12 10:45:13 2006 +0100
+++ b/mcabber/src/jabglue.h Sun Nov 12 10:51:43 2006 +0100
@@ -65,6 +65,9 @@
struct role_affil ra, const char *reason);
void jb_iqs_display_list(void);
void jb_request(const char *jid, enum iqreq_type reqtype);
+void jb_set_storage_bookmark(const char *roomid, const char *name,
+ const char *nick, const char *passwd,
+ int autojoin);
#endif /* __JABGLUE_H__ */