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; |