comparison mcabber/src/commands.c @ 1009:c112423ac012

Add /room bookmark
author Mikael Berthe <mikael@lilotux.net>
date Sun, 12 Nov 2006 10:51:43 +0100
parents b57a01ffeed6
children 7f216b904315
comparison
equal deleted inserted replaced
1008:bbf53cd43fbb 1009:c112423ac012
188 compl_add_category_word(COMPL_MULTILINE, "verbatim"); 188 compl_add_category_word(COMPL_MULTILINE, "verbatim");
189 189
190 // Room category 190 // Room category
191 compl_add_category_word(COMPL_ROOM, "affil"); 191 compl_add_category_word(COMPL_ROOM, "affil");
192 compl_add_category_word(COMPL_ROOM, "ban"); 192 compl_add_category_word(COMPL_ROOM, "ban");
193 compl_add_category_word(COMPL_ROOM, "bookmark");
193 compl_add_category_word(COMPL_ROOM, "destroy"); 194 compl_add_category_word(COMPL_ROOM, "destroy");
194 compl_add_category_word(COMPL_ROOM, "invite"); 195 compl_add_category_word(COMPL_ROOM, "invite");
195 compl_add_category_word(COMPL_ROOM, "join"); 196 compl_add_category_word(COMPL_ROOM, "join");
196 compl_add_category_word(COMPL_ROOM, "kick"); 197 compl_add_category_word(COMPL_ROOM, "kick");
197 compl_add_category_word(COMPL_ROOM, "leave"); 198 compl_add_category_word(COMPL_ROOM, "leave");
2014 scr_WriteIncomingMessage(jid, "End of WHOIS", 0, HBB_PREFIX_INFO); 2015 scr_WriteIncomingMessage(jid, "End of WHOIS", 0, HBB_PREFIX_INFO);
2015 2016
2016 g_free(buffer); 2017 g_free(buffer);
2017 g_free(nick); 2018 g_free(nick);
2018 free_arg_lst(paramlst); 2019 free_arg_lst(paramlst);
2020 }
2021
2022 static void room_bookmark(gpointer bud, char *arg)
2023 {
2024 const char *roomid;
2025 const char *name = NULL, *nick = NULL;
2026 enum { bm_add = 0, bm_del = 1 } action = 0;
2027 int autojoin = 0;
2028
2029 if (arg && *arg) {
2030 // /room bookmark [add|del] [[+|-]autojoin]
2031 char **paramlst;
2032 char **pp;
2033
2034 paramlst = split_arg(arg, 2, 0); // At most 2 parameters
2035 for (pp = paramlst; *pp; pp++) {
2036 if (!strcasecmp(*pp, "add"))
2037 action = bm_add;
2038 else if (!strcasecmp(*pp, "del"))
2039 action = bm_del;
2040 else if (!strcasecmp(*pp, "-autojoin"))
2041 autojoin = 0;
2042 else if (!strcasecmp(*pp, "+autojoin") || !strcasecmp(*pp, "autojoin"))
2043 autojoin = 1;
2044 }
2045 free_arg_lst(paramlst);
2046 }
2047
2048 roomid = buddy_getjid(bud);
2049
2050 if (action == bm_add) {
2051 name = buddy_getname(bud);
2052 nick = buddy_getnickname(bud);
2053 }
2054
2055 jb_set_storage_bookmark(roomid, name, nick, NULL, autojoin);
2019 } 2056 }
2020 2057
2021 static void do_room(char *arg) 2058 static void do_room(char *arg)
2022 { 2059 {
2023 char **paramlst; 2060 char **paramlst;
2092 if ((arg = check_room_subcommand(arg, FALSE, bud)) != NULL) 2129 if ((arg = check_room_subcommand(arg, FALSE, bud)) != NULL)
2093 room_topic(bud, arg); 2130 room_topic(bud, arg);
2094 } else if (!strcasecmp(subcmd, "whois")) { 2131 } else if (!strcasecmp(subcmd, "whois")) {
2095 if ((arg = check_room_subcommand(arg, TRUE, bud)) != NULL) 2132 if ((arg = check_room_subcommand(arg, TRUE, bud)) != NULL)
2096 room_whois(bud, arg, TRUE); 2133 room_whois(bud, arg, TRUE);
2134 } else if (!strcasecmp(subcmd, "bookmark")) {
2135 if ((arg = check_room_subcommand(arg, FALSE, bud)) != NULL)
2136 room_bookmark(bud, arg);
2097 } else { 2137 } else {
2098 scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!"); 2138 scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!");
2099 } 2139 }
2100 2140
2101 free_arg_lst(paramlst); 2141 free_arg_lst(paramlst);