Mercurial > ~mikael > mcabber > hg
diff mcabber/src/commands.c @ 1603:54029aba9452
Allow specifying nickname for bookmark
author | Myhailo Danylenko <isbear@ukrpost.net> |
---|---|
date | Mon, 15 Jun 2009 10:59:31 +0200 |
parents | f4a2c6f767d1 |
children | 14690e624e9d |
line wrap: on
line diff
--- a/mcabber/src/commands.c Wed Sep 24 11:41:29 2008 +0200 +++ b/mcabber/src/commands.c Mon Jun 15 10:59:31 2009 +0200 @@ -2817,17 +2817,19 @@ { const char *roomid; const char *name = NULL, *nick = NULL; + char *tmpnick = NULL; enum room_autowhois autowhois = 0; enum room_printstatus printstatus = 0; enum { bm_add = 0, bm_del = 1 } action = 0; int autojoin = 0; + int nick_set = 0; if (arg && *arg) { - // /room bookmark [add|del] [[+|-]autojoin] + // /room bookmark [add|del] [[+|-]autojoin] [-|nick] char **paramlst; char **pp; - paramlst = split_arg(arg, 2, 0); // At most 2 parameters + paramlst = split_arg(arg, 3, 0); // At most 3 parameters for (pp = paramlst; *pp; pp++) { if (!strcasecmp(*pp, "add")) action = bm_add; @@ -2837,6 +2839,12 @@ autojoin = 0; else if (!strcasecmp(*pp, "+autojoin") || !strcasecmp(*pp, "autojoin")) autojoin = 1; + else if (!strcmp(*pp, "-")) + nick_set = 1; + else { + nick_set = 1; + nick = tmpnick = to_utf8 (*pp); + } } free_arg_lst(paramlst); } @@ -2845,13 +2853,15 @@ if (action == bm_add) { name = buddy_getname(bud); - nick = buddy_getnickname(bud); + if (!nick_set) + nick = buddy_getnickname(bud); printstatus = buddy_getprintstatus(bud); autowhois = buddy_getautowhois(bud); } xmpp_set_storage_bookmark(roomid, name, nick, NULL, autojoin, printstatus, autowhois); + g_free (tmpnick); } static void display_all_bookmarks(void)