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;