Mercurial > ~mikael > mcabber > hg
comparison 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 |
comparison
equal
deleted
inserted
replaced
1602:f4a2c6f767d1 | 1603:54029aba9452 |
---|---|
2815 | 2815 |
2816 static void room_bookmark(gpointer bud, char *arg) | 2816 static void room_bookmark(gpointer bud, char *arg) |
2817 { | 2817 { |
2818 const char *roomid; | 2818 const char *roomid; |
2819 const char *name = NULL, *nick = NULL; | 2819 const char *name = NULL, *nick = NULL; |
2820 char *tmpnick = NULL; | |
2820 enum room_autowhois autowhois = 0; | 2821 enum room_autowhois autowhois = 0; |
2821 enum room_printstatus printstatus = 0; | 2822 enum room_printstatus printstatus = 0; |
2822 enum { bm_add = 0, bm_del = 1 } action = 0; | 2823 enum { bm_add = 0, bm_del = 1 } action = 0; |
2823 int autojoin = 0; | 2824 int autojoin = 0; |
2825 int nick_set = 0; | |
2824 | 2826 |
2825 if (arg && *arg) { | 2827 if (arg && *arg) { |
2826 // /room bookmark [add|del] [[+|-]autojoin] | 2828 // /room bookmark [add|del] [[+|-]autojoin] [-|nick] |
2827 char **paramlst; | 2829 char **paramlst; |
2828 char **pp; | 2830 char **pp; |
2829 | 2831 |
2830 paramlst = split_arg(arg, 2, 0); // At most 2 parameters | 2832 paramlst = split_arg(arg, 3, 0); // At most 3 parameters |
2831 for (pp = paramlst; *pp; pp++) { | 2833 for (pp = paramlst; *pp; pp++) { |
2832 if (!strcasecmp(*pp, "add")) | 2834 if (!strcasecmp(*pp, "add")) |
2833 action = bm_add; | 2835 action = bm_add; |
2834 else if (!strcasecmp(*pp, "del")) | 2836 else if (!strcasecmp(*pp, "del")) |
2835 action = bm_del; | 2837 action = bm_del; |
2836 else if (!strcasecmp(*pp, "-autojoin")) | 2838 else if (!strcasecmp(*pp, "-autojoin")) |
2837 autojoin = 0; | 2839 autojoin = 0; |
2838 else if (!strcasecmp(*pp, "+autojoin") || !strcasecmp(*pp, "autojoin")) | 2840 else if (!strcasecmp(*pp, "+autojoin") || !strcasecmp(*pp, "autojoin")) |
2839 autojoin = 1; | 2841 autojoin = 1; |
2842 else if (!strcmp(*pp, "-")) | |
2843 nick_set = 1; | |
2844 else { | |
2845 nick_set = 1; | |
2846 nick = tmpnick = to_utf8 (*pp); | |
2847 } | |
2840 } | 2848 } |
2841 free_arg_lst(paramlst); | 2849 free_arg_lst(paramlst); |
2842 } | 2850 } |
2843 | 2851 |
2844 roomid = buddy_getjid(bud); | 2852 roomid = buddy_getjid(bud); |
2845 | 2853 |
2846 if (action == bm_add) { | 2854 if (action == bm_add) { |
2847 name = buddy_getname(bud); | 2855 name = buddy_getname(bud); |
2848 nick = buddy_getnickname(bud); | 2856 if (!nick_set) |
2857 nick = buddy_getnickname(bud); | |
2849 printstatus = buddy_getprintstatus(bud); | 2858 printstatus = buddy_getprintstatus(bud); |
2850 autowhois = buddy_getautowhois(bud); | 2859 autowhois = buddy_getautowhois(bud); |
2851 } | 2860 } |
2852 | 2861 |
2853 xmpp_set_storage_bookmark(roomid, name, nick, NULL, autojoin, | 2862 xmpp_set_storage_bookmark(roomid, name, nick, NULL, autojoin, |
2854 printstatus, autowhois); | 2863 printstatus, autowhois); |
2864 g_free (tmpnick); | |
2855 } | 2865 } |
2856 | 2866 |
2857 static void display_all_bookmarks(void) | 2867 static void display_all_bookmarks(void) |
2858 { | 2868 { |
2859 GSList *bm, *bmp; | 2869 GSList *bm, *bmp; |