annotate mcabber/mcabber/commands.c @ 1984:b0470ef8669b

XEP 184: don't send receipts to buddies that have no presence subscription In order to not leak our presence, do not send message delivery receipts to senders who are not authorized to view our presence. (XEP-0184, section 8)
author Mikael Berthe <mikael@lilotux.net>
date Sun, 27 Mar 2011 12:45:41 +0200
parents 3bcc57751283
children 0870005f7efc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
47
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
1 /*
699
ee03b56b93ee Update Copyright (2006)
Mikael Berthe <mikael@lilotux.net>
parents: 696
diff changeset
2 * commands.c -- user commands handling
393
f8f3c7493457 Whitespace cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 384
diff changeset
3 *
1729
e6e89b1d7831 Minor style and header updates
Mikael Berthe <mikael@lilotux.net>
parents: 1726
diff changeset
4 * Copyright (C) 2005-2010 Mikael Berthe <mikael@lilotux.net>
47
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
5 *
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
6 * This program is free software; you can redistribute it and/or modify
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
7 * it under the terms of the GNU General Public License as published by
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or (at
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
9 * your option) any later version.
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
10 *
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
11 * This program is distributed in the hope that it will be useful, but
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
14 * General Public License for more details.
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
15 *
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
17 * along with this program; if not, write to the Free Software
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
19 * USA
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
20 */
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
21
95
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
22 #include <string.h>
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
23 #include <stdlib.h>
1432
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
24 #include <sys/types.h>
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
25 #include <sys/stat.h>
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
26 #include <unistd.h>
1675
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
27 #include <errno.h>
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
28 #include <glob.h>
95
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
29
1676
96b5484423af Use $prefix/lib/mcabber as default modules_dir
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1675
diff changeset
30 #include "config.h"
47
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
31 #include "commands.h"
868
cefdaeb42e67 Add online /help command
Mikael Berthe <mikael@lilotux.net>
parents: 867
diff changeset
32 #include "help.h"
81
0bd578421ce9 [/trunk] Changeset 95 by mikael
mikael
parents: 47
diff changeset
33 #include "roster.h"
47
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
34 #include "screen.h"
95
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
35 #include "compl.h"
113
8ac67e951eab [/trunk] Changeset 127 by mikael
mikael
parents: 108
diff changeset
36 #include "hooks.h"
191
24e6bcb589b0 [/trunk] Changeset 203 by mikael
mikael
parents: 187
diff changeset
37 #include "hbuf.h"
47
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
38 #include "utils.h"
283
00b2377539ac Add /set command (to get/set/unset options values)
Mikael Berthe <mikael@lilotux.net>
parents: 277
diff changeset
39 #include "settings.h"
748
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
40 #include "events.h"
1299
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
41 #include "otr.h"
1442
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
42 #include "utf8.h"
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
43 #include "xmpp.h"
1653
fca9a4c17432 Improve UI latency and CPU usage
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1649
diff changeset
44 #include "main.h"
47
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
45
967
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
46 #define IMSTATUS_AWAY "away"
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
47 #define IMSTATUS_ONLINE "online"
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
48 #define IMSTATUS_OFFLINE "offline"
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
49 #define IMSTATUS_FREE4CHAT "free"
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
50 #define IMSTATUS_AVAILABLE "avail"
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
51 #define IMSTATUS_NOTAVAILABLE "notavail"
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
52 #define IMSTATUS_DONOTDISTURB "dnd"
1972
45f0f0f60656 Remove deprecated status invisible
Mikael Berthe <mikael@lilotux.net>
parents: 1959
diff changeset
53 #ifdef WITH_DEPRECATED_STATUS_INVISIBLE
45f0f0f60656 Remove deprecated status invisible
Mikael Berthe <mikael@lilotux.net>
parents: 1959
diff changeset
54 # define IMSTATUS_INVISIBLE "invisible"
45f0f0f60656 Remove deprecated status invisible
Mikael Berthe <mikael@lilotux.net>
parents: 1959
diff changeset
55 #endif
967
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
56
1173
960f34ec22a2 Add init_bindings() for default key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1172
diff changeset
57 // Return value container for the following functions
960f34ec22a2 Add init_bindings() for default key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1172
diff changeset
58 static int retval_for_cmds;
960f34ec22a2 Add init_bindings() for default key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1172
diff changeset
59
104
fe7257d251ac [/trunk] Changeset 118 by mikael
mikael
parents: 103
diff changeset
60 // Commands callbacks
336
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
61 static void do_roster(char *arg);
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
62 static void do_status(char *arg);
444
5927c3bfba13 Add /status_to command
Mikael Berthe <mikael@lilotux.net>
parents: 439
diff changeset
63 static void do_status_to(char *arg);
336
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
64 static void do_add(char *arg);
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
65 static void do_del(char *arg);
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
66 static void do_group(char *arg);
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
67 static void do_say(char *arg);
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
68 static void do_msay(char *arg);
480
882e1acae422 Add /say_to command
Mikael Berthe <mikael@lilotux.net>
parents: 475
diff changeset
69 static void do_say_to(char *arg);
336
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
70 static void do_buffer(char *arg);
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
71 static void do_clear(char *arg);
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
72 static void do_info(char *arg);
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
73 static void do_rename(char *arg);
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
74 static void do_move(char *arg);
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
75 static void do_set(char *arg);
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
76 static void do_alias(char *arg);
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
77 static void do_bind(char *arg);
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
78 static void do_connect(char *arg);
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
79 static void do_disconnect(char *arg);
436
802da817a684 Add /rawxml command
Mikael Berthe <mikael@lilotux.net>
parents: 416
diff changeset
80 static void do_rawxml(char *arg);
447
03bb57383cea Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents: 446
diff changeset
81 static void do_room(char *arg);
617
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
82 static void do_authorization(char *arg);
622
2b7ef605ddc6 Add /version command
Mikael Berthe <mikael@lilotux.net>
parents: 620
diff changeset
83 static void do_version(char *arg);
693
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
84 static void do_request(char *arg);
748
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
85 static void do_event(char *arg);
868
cefdaeb42e67 Add online /help command
Mikael Berthe <mikael@lilotux.net>
parents: 867
diff changeset
86 static void do_help(char *arg);
1066
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
87 static void do_pgp(char *arg);
1171
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
88 static void do_iline(char *arg);
1172
334ae9f498f1 Add some more iline functions (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1171
diff changeset
89 static void do_screen_refresh(char *arg);
334ae9f498f1 Add some more iline functions (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1171
diff changeset
90 static void do_chat_disable(char *arg);
1192
7b8765c10abb New command: /source
Mikael Berthe <mikael@lilotux.net>
parents: 1190
diff changeset
91 static void do_source(char *arg);
1272
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
92 static void do_color(char *arg);
1299
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
93 static void do_otr(char *arg);
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
94 static void do_otrpolicy(char *arg);
1518
63dc211a4c1a New command: /echo (display a message in the log window)
Mikael Berthe <mikael@lilotux.net>
parents: 1508
diff changeset
95 static void do_echo(char *arg);
1939
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
96 static void do_module(char *arg);
47
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
97
1980
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
98 static void room_bookmark(gpointer bud, char *arg);
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
99
104
fe7257d251ac [/trunk] Changeset 118 by mikael
mikael
parents: 103
diff changeset
100 // Global variable for the commands list
95
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
101 static GSList *Commands;
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
102
1607
14690e624e9d Add modules
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1603
diff changeset
103 #ifdef MODULES_ENABLE
1735
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1732
diff changeset
104 #include "modules.h"
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1732
diff changeset
105
1607
14690e624e9d Add modules
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1603
diff changeset
106 gpointer cmd_del(const char *name)
14690e624e9d Add modules
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1603
diff changeset
107 {
1649
44bbdc961234 Allow commands shading
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1648
diff changeset
108 GSList *sl_cmd;
44bbdc961234 Allow commands shading
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1648
diff changeset
109 for (sl_cmd = Commands; sl_cmd; sl_cmd = sl_cmd->next) {
44bbdc961234 Allow commands shading
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1648
diff changeset
110 cmd *command = (cmd *) sl_cmd->data;
44bbdc961234 Allow commands shading
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1648
diff changeset
111 if (!strcmp (command->name, name)) {
44bbdc961234 Allow commands shading
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1648
diff changeset
112 gpointer userdata = command->userdata;
44bbdc961234 Allow commands shading
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1648
diff changeset
113 Commands = g_slist_delete_link(Commands, sl_cmd);
44bbdc961234 Allow commands shading
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1648
diff changeset
114 compl_del_category_word(COMPL_CMD, command->name);
44bbdc961234 Allow commands shading
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1648
diff changeset
115 g_free(command);
44bbdc961234 Allow commands shading
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1648
diff changeset
116 return userdata;
44bbdc961234 Allow commands shading
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1648
diff changeset
117 }
1607
14690e624e9d Add modules
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1603
diff changeset
118 }
14690e624e9d Add modules
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1603
diff changeset
119 return NULL;
14690e624e9d Add modules
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1603
diff changeset
120 }
1939
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
121 #endif
104
fe7257d251ac [/trunk] Changeset 118 by mikael
mikael
parents: 103
diff changeset
122
95
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
123 // cmd_add()
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
124 // Adds a command to the commands list and to the CMD completion list
1607
14690e624e9d Add modules
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1603
diff changeset
125 void cmd_add(const char *name, const char *help, guint flags_row1,
14690e624e9d Add modules
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1603
diff changeset
126 guint flags_row2, void (*f)(char*), gpointer userdata)
95
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
127 {
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
128 cmd *n_cmd = g_new0(cmd, 1);
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
129 strncpy(n_cmd->name, name, 32-1);
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
130 n_cmd->help = help;
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
131 n_cmd->completion_flags[0] = flags_row1;
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
132 n_cmd->completion_flags[1] = flags_row2;
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
133 n_cmd->func = f;
1607
14690e624e9d Add modules
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1603
diff changeset
134 n_cmd->userdata = userdata;
1649
44bbdc961234 Allow commands shading
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1648
diff changeset
135 Commands = g_slist_prepend(Commands, n_cmd);
95
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
136 // Add to completion CMD category
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
137 compl_add_category_word(COMPL_CMD, name);
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
138 }
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
139
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
140 // cmd_init()
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
141 // Commands table initialization
1173
960f34ec22a2 Add init_bindings() for default key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1172
diff changeset
142 // !!!
960f34ec22a2 Add init_bindings() for default key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1172
diff changeset
143 // After changing commands names and it arguments names here, you must change
960f34ec22a2 Add init_bindings() for default key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1172
diff changeset
144 // ones in init_bindings()!
960f34ec22a2 Add init_bindings() for default key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1172
diff changeset
145 //
95
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
146 void cmd_init(void)
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
147 {
1939
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
148 cmd_add("add", "Add a jabber user", COMPL_JID, 0, &do_add, NULL);
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
149 cmd_add("alias", "Add an alias", 0, 0, &do_alias, NULL);
617
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
150 cmd_add("authorization", "Manage subscription authorizations",
1939
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
151 COMPL_AUTH, COMPL_JID, &do_authorization, NULL);
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
152 cmd_add("bind", "Add an key binding", 0, 0, &do_bind, NULL);
187
4ce9ff808baa [/trunk] Changeset 199 by mikael
mikael
parents: 166
diff changeset
153 cmd_add("buffer", "Manipulate current buddy's buffer (chat window)",
1939
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
154 COMPL_BUFFER, 0, &do_buffer, NULL);
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
155 cmd_add("chat_disable", "Disable chat mode", 0, 0, &do_chat_disable, NULL);
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
156 cmd_add("clear", "Clear the dialog window", 0, 0, &do_clear, NULL);
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
157 cmd_add("color", "Set coloring options", COMPL_COLOR, 0, &do_color, NULL);
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
158 cmd_add("connect", "Connect to the server", 0, 0, &do_connect, NULL);
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
159 cmd_add("del", "Delete the current buddy", 0, 0, &do_del, NULL);
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
160 cmd_add("disconnect", "Disconnect from server", 0, 0, &do_disconnect, NULL);
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
161 cmd_add("echo", "Display a string in the log window", 0, 0, &do_echo, NULL);
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
162 cmd_add("event", "Process an event", COMPL_EVENTSID, COMPL_EVENTS, &do_event,
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
163 NULL);
1507
3de24d857ef7 Complete group names in /group command
Mikael Berthe <mikael@lilotux.net>
parents: 1506
diff changeset
164 cmd_add("group", "Change group display settings",
1939
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
165 COMPL_GROUP, COMPL_GROUPNAME, &do_group, NULL);
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
166 cmd_add("help", "Display some help", COMPL_CMD, 0, &do_help, NULL);
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
167 cmd_add("iline", "Manipulate input buffer", 0, 0, &do_iline, NULL);
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
168 cmd_add("info", "Show basic info on current buddy", 0, 0, &do_info, NULL);
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
169 cmd_add("module", "Manipulations with modules", COMPL_MODULE, 0, &do_module,
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
170 NULL);
225
d5ae42cbe1fa [/trunk] Changeset 237 by mikael
mikael
parents: 221
diff changeset
171 cmd_add("move", "Move the current buddy to another group", COMPL_GROUPNAME,
1939
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
172 0, &do_move, NULL);
238
8e30b2bb380e [/trunk] Changeset 251 by mikael
mikael
parents: 236
diff changeset
173 cmd_add("msay", "Send a multi-lines message to the selected buddy",
1939
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
174 COMPL_MULTILINE, 0, &do_msay, NULL);
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
175 cmd_add("otr", "Manage OTR settings", COMPL_OTR, COMPL_JID, &do_otr, NULL);
1333
e30a9d907105 Minor coding style adjustments
Mikael Berthe <mikael@lilotux.net>
parents: 1329
diff changeset
176 cmd_add("otrpolicy", "Manage OTR policies", COMPL_JID, COMPL_OTRPOLICY,
1939
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
177 &do_otrpolicy, NULL);
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
178 cmd_add("pgp", "Manage PGP settings", COMPL_PGP, COMPL_JID, &do_pgp, NULL);
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
179 cmd_add("quit", "Exit the software", 0, 0, NULL, NULL);
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
180 cmd_add("rawxml", "Send a raw XML string", 0, 0, &do_rawxml, NULL);
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
181 cmd_add("rename", "Rename the current buddy", 0, 0, &do_rename, NULL);
902
2016f52a167f Sort commands (for the completion system)
Mikael Berthe <mikael@lilotux.net>
parents: 900
diff changeset
182 cmd_add("request", "Send a Jabber IQ request", COMPL_REQUEST, COMPL_JID,
1939
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
183 &do_request, NULL);
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
184 cmd_add("room", "MUC actions command", COMPL_ROOM, 0, &do_room, NULL);
128
81ccb1091dd8 [/trunk] Changeset 141 by mikael
mikael
parents: 127
diff changeset
185 cmd_add("roster", "Manipulate the roster/buddylist", COMPL_ROSTER, 0,
1939
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
186 &do_roster, NULL);
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
187 cmd_add("say", "Say something to the selected buddy", 0, 0, &do_say, NULL);
488
9e8519078e00 Enable jid completion for /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 486
diff changeset
188 cmd_add("say_to", "Say something to a specific buddy", COMPL_JID, 0,
1939
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
189 &do_say_to, NULL);
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
190 cmd_add("screen_refresh", "Redraw mcabber screen", 0, 0, &do_screen_refresh,
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
191 NULL);
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
192 cmd_add("set", "Set/query an option value", 0, 0, &do_set, NULL);
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
193 cmd_add("source", "Read a configuration file", 0, 0, &do_source, NULL);
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
194 cmd_add("status", "Show or set your status", COMPL_STATUS, 0, &do_status,
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
195 NULL);
444
5927c3bfba13 Add /status_to command
Mikael Berthe <mikael@lilotux.net>
parents: 439
diff changeset
196 cmd_add("status_to", "Show or set your status for one recipient",
1939
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
197 COMPL_JID, COMPL_STATUS, &do_status_to, NULL);
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
198 cmd_add("version", "Show mcabber version", 0, 0, &do_version, NULL);
95
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
199
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
200 // Status category
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
201 compl_add_category_word(COMPL_STATUS, "online");
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
202 compl_add_category_word(COMPL_STATUS, "avail");
1972
45f0f0f60656 Remove deprecated status invisible
Mikael Berthe <mikael@lilotux.net>
parents: 1959
diff changeset
203 #ifdef WITH_DEPRECATED_STATUS_INVISIBLE
95
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
204 compl_add_category_word(COMPL_STATUS, "invisible");
1972
45f0f0f60656 Remove deprecated status invisible
Mikael Berthe <mikael@lilotux.net>
parents: 1959
diff changeset
205 #endif
95
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
206 compl_add_category_word(COMPL_STATUS, "free");
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
207 compl_add_category_word(COMPL_STATUS, "dnd");
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
208 compl_add_category_word(COMPL_STATUS, "notavail");
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
209 compl_add_category_word(COMPL_STATUS, "away");
1235
58d6e7713164 Complete /status offline
Mikael Berthe <mikael@lilotux.net>
parents: 1226
diff changeset
210 compl_add_category_word(COMPL_STATUS, "offline");
1422
3cd104b41f26 Add "/status message" (to only change the status description string)
Mikael Berthe <mikael@lilotux.net>
parents: 1418
diff changeset
211 compl_add_category_word(COMPL_STATUS, "message");
103
93dcc4e15d4a [/trunk] Changeset 117 by mikael
mikael
parents: 102
diff changeset
212
93dcc4e15d4a [/trunk] Changeset 117 by mikael
mikael
parents: 102
diff changeset
213 // Roster category
93dcc4e15d4a [/trunk] Changeset 117 by mikael
mikael
parents: 102
diff changeset
214 compl_add_category_word(COMPL_ROSTER, "bottom");
265
49e9e02dd6d0 Add "/roster search" command
mikael@frmp8452
parents: 262
diff changeset
215 compl_add_category_word(COMPL_ROSTER, "top");
377
00809e3e327e Add "/roster up" and "/roster down"
Mikael Berthe <mikael@lilotux.net>
parents: 374
diff changeset
216 compl_add_category_word(COMPL_ROSTER, "up");
00809e3e327e Add "/roster up" and "/roster down"
Mikael Berthe <mikael@lilotux.net>
parents: 374
diff changeset
217 compl_add_category_word(COMPL_ROSTER, "down");
1086
5e2e647e781b Add command /roster group_prev|group_next and update documentation
Mikael Berthe <mikael@lilotux.net>
parents: 1074
diff changeset
218 compl_add_category_word(COMPL_ROSTER, "group_prev");
5e2e647e781b Add command /roster group_prev|group_next and update documentation
Mikael Berthe <mikael@lilotux.net>
parents: 1074
diff changeset
219 compl_add_category_word(COMPL_ROSTER, "group_next");
707
b26a0bde4cdb Add /roster hide|show|toggle
Mikael Berthe <mikael@lilotux.net>
parents: 699
diff changeset
220 compl_add_category_word(COMPL_ROSTER, "hide");
b26a0bde4cdb Add /roster hide|show|toggle
Mikael Berthe <mikael@lilotux.net>
parents: 699
diff changeset
221 compl_add_category_word(COMPL_ROSTER, "show");
b26a0bde4cdb Add /roster hide|show|toggle
Mikael Berthe <mikael@lilotux.net>
parents: 699
diff changeset
222 compl_add_category_word(COMPL_ROSTER, "toggle");
1311
0dda8238af21 Implement "/roster display"
Mikael Berthe <mikael@lilotux.net>
parents: 1305
diff changeset
223 compl_add_category_word(COMPL_ROSTER, "display");
103
93dcc4e15d4a [/trunk] Changeset 117 by mikael
mikael
parents: 102
diff changeset
224 compl_add_category_word(COMPL_ROSTER, "hide_offline");
93dcc4e15d4a [/trunk] Changeset 117 by mikael
mikael
parents: 102
diff changeset
225 compl_add_category_word(COMPL_ROSTER, "show_offline");
290
f63839a4cb35 Add /roster toggle_offline
Mikael Berthe <mikael@lilotux.net>
parents: 288
diff changeset
226 compl_add_category_word(COMPL_ROSTER, "toggle_offline");
974
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
227 compl_add_category_word(COMPL_ROSTER, "item_lock");
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
228 compl_add_category_word(COMPL_ROSTER, "item_unlock");
1350
096411233fce Add /roster item_toggle_lock (suggested by Wolfram S.)
Mikael Berthe <mikael@lilotux.net>
parents: 1347
diff changeset
229 compl_add_category_word(COMPL_ROSTER, "item_toggle_lock");
330
a9013124ede6 Add "/roster alternate"
Mikael Berthe <mikael@lilotux.net>
parents: 318
diff changeset
230 compl_add_category_word(COMPL_ROSTER, "alternate");
265
49e9e02dd6d0 Add "/roster search" command
mikael@frmp8452
parents: 262
diff changeset
231 compl_add_category_word(COMPL_ROSTER, "search");
236
72fd1273f2b7 [/trunk] Changeset 249 by mikael
mikael
parents: 232
diff changeset
232 compl_add_category_word(COMPL_ROSTER, "unread_first");
72fd1273f2b7 [/trunk] Changeset 249 by mikael
mikael
parents: 232
diff changeset
233 compl_add_category_word(COMPL_ROSTER, "unread_next");
1016
4d3c48844746 Add /roster note
Mikael Berthe <mikael@lilotux.net>
parents: 1015
diff changeset
234 compl_add_category_word(COMPL_ROSTER, "note");
127
0f7ec11efd06 [/trunk] Changeset 140 by mikael
mikael
parents: 124
diff changeset
235
1626
055ea3cdbcd3 Fix buggy comment
Mikael Berthe <mikael@lilotux.net>
parents: 1607
diff changeset
236 // Buffer category
508
5a2132ba2220 Add "/buffer up" and "/buffer down"
Mikael Berthe <mikael@lilotux.net>
parents: 506
diff changeset
237 compl_add_category_word(COMPL_BUFFER, "clear");
187
4ce9ff808baa [/trunk] Changeset 199 by mikael
mikael
parents: 166
diff changeset
238 compl_add_category_word(COMPL_BUFFER, "bottom");
4ce9ff808baa [/trunk] Changeset 199 by mikael
mikael
parents: 166
diff changeset
239 compl_add_category_word(COMPL_BUFFER, "top");
508
5a2132ba2220 Add "/buffer up" and "/buffer down"
Mikael Berthe <mikael@lilotux.net>
parents: 506
diff changeset
240 compl_add_category_word(COMPL_BUFFER, "up");
5a2132ba2220 Add "/buffer up" and "/buffer down"
Mikael Berthe <mikael@lilotux.net>
parents: 506
diff changeset
241 compl_add_category_word(COMPL_BUFFER, "down");
370
dd9e2eb52916 Add /buffer search_{backward,forward}
Mikael Berthe <mikael@lilotux.net>
parents: 369
diff changeset
242 compl_add_category_word(COMPL_BUFFER, "search_backward");
dd9e2eb52916 Add /buffer search_{backward,forward}
Mikael Berthe <mikael@lilotux.net>
parents: 369
diff changeset
243 compl_add_category_word(COMPL_BUFFER, "search_forward");
1959
ed97057f0881 Add completion item for /buffer readmark subcommand
Mikael Berthe <mikael@lilotux.net>
parents: 1956
diff changeset
244 compl_add_category_word(COMPL_BUFFER, "readmark");
464
e4840b288be0 Add "/buffer date"
Mikael Berthe <mikael@lilotux.net>
parents: 462
diff changeset
245 compl_add_category_word(COMPL_BUFFER, "date");
462
d580e87c11ed Add "/buffer %n"
Mikael Berthe <mikael@lilotux.net>
parents: 461
diff changeset
246 compl_add_category_word(COMPL_BUFFER, "%");
866
b30df2ab457f Add "/buffer purge"
Mikael Berthe <mikael@lilotux.net>
parents: 865
diff changeset
247 compl_add_category_word(COMPL_BUFFER, "purge");
1135
5d7c05932b13 Add command /buffer close
Mikael Berthe <mikael@lilotux.net>
parents: 1130
diff changeset
248 compl_add_category_word(COMPL_BUFFER, "close");
1138
8ba4b1e8b42d Add command /buffer close_all
Mikael Berthe <mikael@lilotux.net>
parents: 1135
diff changeset
249 compl_add_category_word(COMPL_BUFFER, "close_all");
873
ee39f6d94d43 Add /buffer {scroll_lock|scroll_unlock|toggle_scroll}
Mikael Berthe <mikael@lilotux.net>
parents: 868
diff changeset
250 compl_add_category_word(COMPL_BUFFER, "scroll_lock");
ee39f6d94d43 Add /buffer {scroll_lock|scroll_unlock|toggle_scroll}
Mikael Berthe <mikael@lilotux.net>
parents: 868
diff changeset
251 compl_add_category_word(COMPL_BUFFER, "scroll_unlock");
ee39f6d94d43 Add /buffer {scroll_lock|scroll_unlock|toggle_scroll}
Mikael Berthe <mikael@lilotux.net>
parents: 868
diff changeset
252 compl_add_category_word(COMPL_BUFFER, "scroll_toggle");
1424
bb1cc8902d0e Allow "/buffer list" when debugging mode is disabled
Mikael Berthe <mikael@lilotux.net>
parents: 1423
diff changeset
253 compl_add_category_word(COMPL_BUFFER, "list");
1485
0121b6f3047c New command: /buffer save
Mikael Berthe <mikael@lilotux.net>
parents: 1484
diff changeset
254 compl_add_category_word(COMPL_BUFFER, "save");
187
4ce9ff808baa [/trunk] Changeset 199 by mikael
mikael
parents: 166
diff changeset
255
127
0f7ec11efd06 [/trunk] Changeset 140 by mikael
mikael
parents: 124
diff changeset
256 // Group category
240
723433a677f0 [/trunk] Changeset 253 by mikael
mikael
parents: 238
diff changeset
257 compl_add_category_word(COMPL_GROUP, "fold");
723433a677f0 [/trunk] Changeset 253 by mikael
mikael
parents: 238
diff changeset
258 compl_add_category_word(COMPL_GROUP, "unfold");
130
60694c9ddde3 [/trunk] Changeset 143 by mikael
mikael
parents: 129
diff changeset
259 compl_add_category_word(COMPL_GROUP, "toggle");
238
8e30b2bb380e [/trunk] Changeset 251 by mikael
mikael
parents: 236
diff changeset
260
8e30b2bb380e [/trunk] Changeset 251 by mikael
mikael
parents: 236
diff changeset
261 // Multi-line (msay) category
8e30b2bb380e [/trunk] Changeset 251 by mikael
mikael
parents: 236
diff changeset
262 compl_add_category_word(COMPL_MULTILINE, "abort");
8e30b2bb380e [/trunk] Changeset 251 by mikael
mikael
parents: 236
diff changeset
263 compl_add_category_word(COMPL_MULTILINE, "begin");
8e30b2bb380e [/trunk] Changeset 251 by mikael
mikael
parents: 236
diff changeset
264 compl_add_category_word(COMPL_MULTILINE, "send");
636
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
265 compl_add_category_word(COMPL_MULTILINE, "send_to");
796
79c8823da808 Add "/msay toggle" command
Mikael Berthe <mikael@lilotux.net>
parents: 791
diff changeset
266 compl_add_category_word(COMPL_MULTILINE, "toggle");
838
ea1204c8a30b Add "/msay toggle_verbatim"
Mikael Berthe <mikael@lilotux.net>
parents: 837
diff changeset
267 compl_add_category_word(COMPL_MULTILINE, "toggle_verbatim");
260
33e1a05864a6 Add "verbatim multi-line" mode, with commands disabled
mikael@frmp8452
parents: 244
diff changeset
268 compl_add_category_word(COMPL_MULTILINE, "verbatim");
447
03bb57383cea Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents: 446
diff changeset
269
03bb57383cea Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents: 446
diff changeset
270 // Room category
585
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
271 compl_add_category_word(COMPL_ROOM, "affil");
571
d63e6cbdc297 Add "/room ban"
Mikael Berthe <mikael@lilotux.net>
parents: 570
diff changeset
272 compl_add_category_word(COMPL_ROOM, "ban");
1009
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
273 compl_add_category_word(COMPL_ROOM, "bookmark");
599
fb67bf62f4eb Add "/room destroy"
Mikael Berthe <mikael@lilotux.net>
parents: 598
diff changeset
274 compl_add_category_word(COMPL_ROOM, "destroy");
486
2a6a8ebb813b Add "/room invite"
Mikael Berthe <mikael@lilotux.net>
parents: 484
diff changeset
275 compl_add_category_word(COMPL_ROOM, "invite");
447
03bb57383cea Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents: 446
diff changeset
276 compl_add_category_word(COMPL_ROOM, "join");
568
eb1df2371581 Add "/room kick"
Mikael Berthe <mikael@lilotux.net>
parents: 566
diff changeset
277 compl_add_category_word(COMPL_ROOM, "kick");
447
03bb57383cea Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents: 446
diff changeset
278 compl_add_category_word(COMPL_ROOM, "leave");
03bb57383cea Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents: 446
diff changeset
279 compl_add_category_word(COMPL_ROOM, "names");
470
eaa2ad773192 Add "/room nick"
Mikael Berthe <mikael@lilotux.net>
parents: 469
diff changeset
280 compl_add_category_word(COMPL_ROOM, "nick");
490
af6e31e32d9e Add "/room privmsg"
Mikael Berthe <mikael@lilotux.net>
parents: 488
diff changeset
281 compl_add_category_word(COMPL_ROOM, "privmsg");
448
39a28cb59af3 Add "/room remove", to remove an old chatroom from the roster
Mikael Berthe <mikael@lilotux.net>
parents: 447
diff changeset
282 compl_add_category_word(COMPL_ROOM, "remove");
585
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
283 compl_add_category_word(COMPL_ROOM, "role");
1377
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
284 compl_add_category_word(COMPL_ROOM, "setopt");
475
fa49ac0bb8f3 Add "/room topic", and display topic changes
Mikael Berthe <mikael@lilotux.net>
parents: 472
diff changeset
285 compl_add_category_word(COMPL_ROOM, "topic");
1260
b4ccc5b2a6de Add command /room unban
Mikael Berthe <mikael@lilotux.net>
parents: 1235
diff changeset
286 compl_add_category_word(COMPL_ROOM, "unban");
449
e08b0c2d0e54 Add "/room unlock"
Mikael Berthe <mikael@lilotux.net>
parents: 448
diff changeset
287 compl_add_category_word(COMPL_ROOM, "unlock");
572
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
288 compl_add_category_word(COMPL_ROOM, "whois");
617
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
289
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
290 // Authorization category
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
291 compl_add_category_word(COMPL_AUTH, "allow");
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
292 compl_add_category_word(COMPL_AUTH, "cancel");
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
293 compl_add_category_word(COMPL_AUTH, "request");
835
6a732d2ad4b4 Add "/authorization request_unsubscribe"
Mikael Berthe <mikael@lilotux.net>
parents: 831
diff changeset
294 compl_add_category_word(COMPL_AUTH, "request_unsubscribe");
693
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
295
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
296 // Request (query) category
1015
579299b1c9b2 Add /request last
Mikael Berthe <mikael@lilotux.net>
parents: 1014
diff changeset
297 compl_add_category_word(COMPL_REQUEST, "last");
1705
ac881b5f9248 Add /request ping (XEP-0199), by merging isbear's module
Mikael Berthe <mikael@lilotux.net>
parents: 1686
diff changeset
298 compl_add_category_word(COMPL_REQUEST, "ping");
693
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
299 compl_add_category_word(COMPL_REQUEST, "time");
1003
c8b1a52b2fd6 Initial VCard retrieval support
Mikael Berthe <mikael@lilotux.net>
parents: 988
diff changeset
300 compl_add_category_word(COMPL_REQUEST, "vcard");
693
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
301 compl_add_category_word(COMPL_REQUEST, "version");
750
938a8791658c Add partial completion for the "/event" command
Mikael Berthe <mikael@lilotux.net>
parents: 748
diff changeset
302
938a8791658c Add partial completion for the "/event" command
Mikael Berthe <mikael@lilotux.net>
parents: 748
diff changeset
303 // Events category
938a8791658c Add partial completion for the "/event" command
Mikael Berthe <mikael@lilotux.net>
parents: 748
diff changeset
304 compl_add_category_word(COMPL_EVENTS, "accept");
755
b747f76e57ae Add "/event n ignore"
Mikael Berthe <mikael@lilotux.net>
parents: 750
diff changeset
305 compl_add_category_word(COMPL_EVENTS, "ignore");
750
938a8791658c Add partial completion for the "/event" command
Mikael Berthe <mikael@lilotux.net>
parents: 748
diff changeset
306 compl_add_category_word(COMPL_EVENTS, "reject");
1066
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
307
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
308 // PGP category
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
309 compl_add_category_word(COMPL_PGP, "disable");
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
310 compl_add_category_word(COMPL_PGP, "enable");
1197
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
311 compl_add_category_word(COMPL_PGP, "force");
1066
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
312 compl_add_category_word(COMPL_PGP, "info");
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
313 compl_add_category_word(COMPL_PGP, "setkey");
1272
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
314
1299
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
315 // OTR category
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
316 compl_add_category_word(COMPL_OTR, "start");
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
317 compl_add_category_word(COMPL_OTR, "stop");
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
318 compl_add_category_word(COMPL_OTR, "fingerprint");
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
319 compl_add_category_word(COMPL_OTR, "smpq");
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
320 compl_add_category_word(COMPL_OTR, "smpr");
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
321 compl_add_category_word(COMPL_OTR, "smpa");
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
322 compl_add_category_word(COMPL_OTR, "info");
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
323 compl_add_category_word(COMPL_OTR, "key");
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
324
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
325 // OTR Policy category
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
326 compl_add_category_word(COMPL_OTRPOLICY, "plain");
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
327 compl_add_category_word(COMPL_OTRPOLICY, "manual");
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
328 compl_add_category_word(COMPL_OTRPOLICY, "opportunistic");
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
329 compl_add_category_word(COMPL_OTRPOLICY, "always");
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
330
1272
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
331 // Color category
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
332 compl_add_category_word(COMPL_COLOR, "roster");
1292
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
333 compl_add_category_word(COMPL_COLOR, "muc");
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
334 compl_add_category_word(COMPL_COLOR, "mucnick");
1923
924f4552996c Add a category module to complete the /module subcommands
Mikael Berthe <mikael@lilotux.net>
parents: 1921
diff changeset
335
924f4552996c Add a category module to complete the /module subcommands
Mikael Berthe <mikael@lilotux.net>
parents: 1921
diff changeset
336 #ifdef MODULES_ENABLE
924f4552996c Add a category module to complete the /module subcommands
Mikael Berthe <mikael@lilotux.net>
parents: 1921
diff changeset
337 // Module category
924f4552996c Add a category module to complete the /module subcommands
Mikael Berthe <mikael@lilotux.net>
parents: 1921
diff changeset
338 compl_add_category_word(COMPL_MODULE, "info");
924f4552996c Add a category module to complete the /module subcommands
Mikael Berthe <mikael@lilotux.net>
parents: 1921
diff changeset
339 compl_add_category_word(COMPL_MODULE, "list");
924f4552996c Add a category module to complete the /module subcommands
Mikael Berthe <mikael@lilotux.net>
parents: 1921
diff changeset
340 compl_add_category_word(COMPL_MODULE, "load");
924f4552996c Add a category module to complete the /module subcommands
Mikael Berthe <mikael@lilotux.net>
parents: 1921
diff changeset
341 compl_add_category_word(COMPL_MODULE, "unload");
924f4552996c Add a category module to complete the /module subcommands
Mikael Berthe <mikael@lilotux.net>
parents: 1921
diff changeset
342 #endif
95
9e6b7897ec37 [/trunk] Changeset 109 by mikael
mikael
parents: 94
diff changeset
343 }
94
9a4aa2797f02 [/trunk] Changeset 108 by mikael
mikael
parents: 81
diff changeset
344
285
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
345 // expandalias(line)
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
346 // If there is one, expand the alias in line and returns a new allocated line
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
347 // If no alias is found, returns line
1356
7794d76ca90e Warn if the user renames a local item
Mikael Berthe <mikael@lilotux.net>
parents: 1355
diff changeset
348 // Note: if the returned pointer is different from line, the caller should
7794d76ca90e Warn if the user renames a local item
Mikael Berthe <mikael@lilotux.net>
parents: 1355
diff changeset
349 // g_free() the pointer after use
1352
61a54e172010 Add internal hooks support
Mikael Berthe <mikael@lilotux.net>
parents: 1351
diff changeset
350 char *expandalias(const char *line)
285
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
351 {
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
352 const char *p1, *p2;
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
353 char *word;
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
354 const gchar *value;
1352
61a54e172010 Add internal hooks support
Mikael Berthe <mikael@lilotux.net>
parents: 1351
diff changeset
355 char *newline = (char*)line;
285
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
356
967
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
357 // Ignore leading COMMAND_CHAR
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
358 for (p1 = line ; *p1 == COMMAND_CHAR ; p1++)
285
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
359 ;
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
360 // Locate the end of the word
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
361 for (p2 = p1 ; *p2 && (*p2 != ' ') ; p2++)
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
362 ;
1387
3067c096cfc4 Small code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1381
diff changeset
363 // Extract the word and look for an alias in the list
285
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
364 word = g_strndup(p1, p2-p1);
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
365 value = settings_get(SETTINGS_TYPE_ALIAS, (const char*)word);
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
366 g_free(word);
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
367
1387
3067c096cfc4 Small code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1381
diff changeset
368 if (value)
3067c096cfc4 Small code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1381
diff changeset
369 newline = g_strdup_printf("%c%s%s", COMMAND_CHAR, value, p2);
3067c096cfc4 Small code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1381
diff changeset
370
285
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
371 return newline;
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
372 }
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
373
102
2b4cc6bc5bf2 [/trunk] Changeset 116 by mikael
mikael
parents: 101
diff changeset
374 // cmd_get
2b4cc6bc5bf2 [/trunk] Changeset 116 by mikael
mikael
parents: 101
diff changeset
375 // Finds command in the command list structure.
2b4cc6bc5bf2 [/trunk] Changeset 116 by mikael
mikael
parents: 101
diff changeset
376 // Returns a pointer to the cmd entry, or NULL if command not found.
238
8e30b2bb380e [/trunk] Changeset 251 by mikael
mikael
parents: 236
diff changeset
377 cmd *cmd_get(const char *command)
102
2b4cc6bc5bf2 [/trunk] Changeset 116 by mikael
mikael
parents: 101
diff changeset
378 {
238
8e30b2bb380e [/trunk] Changeset 251 by mikael
mikael
parents: 236
diff changeset
379 const char *p1, *p2;
102
2b4cc6bc5bf2 [/trunk] Changeset 116 by mikael
mikael
parents: 101
diff changeset
380 char *com;
2b4cc6bc5bf2 [/trunk] Changeset 116 by mikael
mikael
parents: 101
diff changeset
381 GSList *sl_com;
285
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
382
967
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
383 // Ignore leading COMMAND_CHAR
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
384 for (p1 = command ; *p1 == COMMAND_CHAR ; p1++)
102
2b4cc6bc5bf2 [/trunk] Changeset 116 by mikael
mikael
parents: 101
diff changeset
385 ;
2b4cc6bc5bf2 [/trunk] Changeset 116 by mikael
mikael
parents: 101
diff changeset
386 // Locate the end of the command
2b4cc6bc5bf2 [/trunk] Changeset 116 by mikael
mikael
parents: 101
diff changeset
387 for (p2 = p1 ; *p2 && (*p2 != ' ') ; p2++)
2b4cc6bc5bf2 [/trunk] Changeset 116 by mikael
mikael
parents: 101
diff changeset
388 ;
2b4cc6bc5bf2 [/trunk] Changeset 116 by mikael
mikael
parents: 101
diff changeset
389 // Copy the clean command
2b4cc6bc5bf2 [/trunk] Changeset 116 by mikael
mikael
parents: 101
diff changeset
390 com = g_strndup(p1, p2-p1);
2b4cc6bc5bf2 [/trunk] Changeset 116 by mikael
mikael
parents: 101
diff changeset
391
2b4cc6bc5bf2 [/trunk] Changeset 116 by mikael
mikael
parents: 101
diff changeset
392 // Look for command in the list
2b4cc6bc5bf2 [/trunk] Changeset 116 by mikael
mikael
parents: 101
diff changeset
393 for (sl_com=Commands; sl_com; sl_com = g_slist_next(sl_com)) {
2b4cc6bc5bf2 [/trunk] Changeset 116 by mikael
mikael
parents: 101
diff changeset
394 if (!strcasecmp(com, ((cmd*)sl_com->data)->name))
2b4cc6bc5bf2 [/trunk] Changeset 116 by mikael
mikael
parents: 101
diff changeset
395 break;
2b4cc6bc5bf2 [/trunk] Changeset 116 by mikael
mikael
parents: 101
diff changeset
396 }
2b4cc6bc5bf2 [/trunk] Changeset 116 by mikael
mikael
parents: 101
diff changeset
397 g_free(com);
2b4cc6bc5bf2 [/trunk] Changeset 116 by mikael
mikael
parents: 101
diff changeset
398
2b4cc6bc5bf2 [/trunk] Changeset 116 by mikael
mikael
parents: 101
diff changeset
399 if (sl_com) // Command has been found.
2b4cc6bc5bf2 [/trunk] Changeset 116 by mikael
mikael
parents: 101
diff changeset
400 return (cmd*)sl_com->data;
2b4cc6bc5bf2 [/trunk] Changeset 116 by mikael
mikael
parents: 101
diff changeset
401 return NULL;
2b4cc6bc5bf2 [/trunk] Changeset 116 by mikael
mikael
parents: 101
diff changeset
402 }
2b4cc6bc5bf2 [/trunk] Changeset 116 by mikael
mikael
parents: 101
diff changeset
403
1187
16abe7ec3056 Fix a conflict between verbatim multiline mode and the key binding system
Mikael Berthe <mikael@lilotux.net>
parents: 1181
diff changeset
404 // process_command(line, iscmd)
288
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
405 // Process a command line.
1187
16abe7ec3056 Fix a conflict between verbatim multiline mode and the key binding system
Mikael Berthe <mikael@lilotux.net>
parents: 1181
diff changeset
406 // If iscmd is TRUE, process the command even if verbatim mmode is set;
16abe7ec3056 Fix a conflict between verbatim multiline mode and the key binding system
Mikael Berthe <mikael@lilotux.net>
parents: 1181
diff changeset
407 // it is intended to be used for key bindings.
288
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
408 // Return 255 if this is the /quit command, and 0 for the other commands.
1352
61a54e172010 Add internal hooks support
Mikael Berthe <mikael@lilotux.net>
parents: 1351
diff changeset
409 int process_command(const char *line, guint iscmd)
47
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
410 {
101
4f3ad00b5187 [/trunk] Changeset 115 by mikael
mikael
parents: 98
diff changeset
411 char *p;
285
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
412 char *xpline;
104
fe7257d251ac [/trunk] Changeset 118 by mikael
mikael
parents: 103
diff changeset
413 cmd *curcmd;
fe7257d251ac [/trunk] Changeset 118 by mikael
mikael
parents: 103
diff changeset
414
1365
c7e709719c43 Small code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1363
diff changeset
415 if (!line)
c7e709719c43 Small code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1363
diff changeset
416 return 0;
c7e709719c43 Small code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1363
diff changeset
417
285
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
418 // We do alias expansion here
1187
16abe7ec3056 Fix a conflict between verbatim multiline mode and the key binding system
Mikael Berthe <mikael@lilotux.net>
parents: 1181
diff changeset
419 if (iscmd || scr_get_multimode() != 2)
288
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
420 xpline = expandalias(line);
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
421 else
1352
61a54e172010 Add internal hooks support
Mikael Berthe <mikael@lilotux.net>
parents: 1351
diff changeset
422 xpline = (char*)line; // No expansion in verbatim multi-line mode
61a54e172010 Add internal hooks support
Mikael Berthe <mikael@lilotux.net>
parents: 1351
diff changeset
423
61a54e172010 Add internal hooks support
Mikael Berthe <mikael@lilotux.net>
parents: 1351
diff changeset
424 // We want to use a copy
954
27a7b2f986f5 Fix a freeze with UTF-8 locales
Mikael Berthe <mikael@lilotux.net>
parents: 902
diff changeset
425 if (xpline == line)
27a7b2f986f5 Fix a freeze with UTF-8 locales
Mikael Berthe <mikael@lilotux.net>
parents: 902
diff changeset
426 xpline = g_strdup(line);
27a7b2f986f5 Fix a freeze with UTF-8 locales
Mikael Berthe <mikael@lilotux.net>
parents: 902
diff changeset
427
27a7b2f986f5 Fix a freeze with UTF-8 locales
Mikael Berthe <mikael@lilotux.net>
parents: 902
diff changeset
428 // Remove trailing spaces:
27a7b2f986f5 Fix a freeze with UTF-8 locales
Mikael Berthe <mikael@lilotux.net>
parents: 902
diff changeset
429 for (p=xpline ; *p ; p++)
27a7b2f986f5 Fix a freeze with UTF-8 locales
Mikael Berthe <mikael@lilotux.net>
parents: 902
diff changeset
430 ;
27a7b2f986f5 Fix a freeze with UTF-8 locales
Mikael Berthe <mikael@lilotux.net>
parents: 902
diff changeset
431 for (p-- ; p>xpline && (*p == ' ') ; p--)
27a7b2f986f5 Fix a freeze with UTF-8 locales
Mikael Berthe <mikael@lilotux.net>
parents: 902
diff changeset
432 *p = 0;
27a7b2f986f5 Fix a freeze with UTF-8 locales
Mikael Berthe <mikael@lilotux.net>
parents: 902
diff changeset
433
101
4f3ad00b5187 [/trunk] Changeset 115 by mikael
mikael
parents: 98
diff changeset
434 // Command "quit"?
1187
16abe7ec3056 Fix a conflict between verbatim multiline mode and the key binding system
Mikael Berthe <mikael@lilotux.net>
parents: 1181
diff changeset
435 if ((iscmd || scr_get_multimode() != 2)
1126
771eb6aa2d41 Fix another memory leak, spotted by valgrind
misc@mandriva.org
parents: 1100
diff changeset
436 && (!strncasecmp(xpline, mkcmdstr("quit"), strlen(mkcmdstr("quit"))))) {
771eb6aa2d41 Fix another memory leak, spotted by valgrind
misc@mandriva.org
parents: 1100
diff changeset
437 if (!xpline[5] || xpline[5] == ' ') {
771eb6aa2d41 Fix another memory leak, spotted by valgrind
misc@mandriva.org
parents: 1100
diff changeset
438 g_free(xpline);
116
1e7e59775f12 [/trunk] Changeset 130 by mikael
mikael
parents: 113
diff changeset
439 return 255;
1126
771eb6aa2d41 Fix another memory leak, spotted by valgrind
misc@mandriva.org
parents: 1100
diff changeset
440 }
1359
7daf906fbcdc The command /quit can be used in bindings, hooks and sourced files
Mikael Berthe <mikael@lilotux.net>
parents: 1356
diff changeset
441 } else if (iscmd && !strncasecmp(xpline, "quit", 4) &&
7daf906fbcdc The command /quit can be used in bindings, hooks and sourced files
Mikael Berthe <mikael@lilotux.net>
parents: 1356
diff changeset
442 (!xpline[4] || xpline[4] == ' ')) {
7daf906fbcdc The command /quit can be used in bindings, hooks and sourced files
Mikael Berthe <mikael@lilotux.net>
parents: 1356
diff changeset
443 // If iscmd is true we can have the command without the command prefix
7daf906fbcdc The command /quit can be used in bindings, hooks and sourced files
Mikael Berthe <mikael@lilotux.net>
parents: 1356
diff changeset
444 // character (usually '/').
7daf906fbcdc The command /quit can be used in bindings, hooks and sourced files
Mikael Berthe <mikael@lilotux.net>
parents: 1356
diff changeset
445 g_free(xpline);
7daf906fbcdc The command /quit can be used in bindings, hooks and sourced files
Mikael Berthe <mikael@lilotux.net>
parents: 1356
diff changeset
446 return 255;
1126
771eb6aa2d41 Fix another memory leak, spotted by valgrind
misc@mandriva.org
parents: 1100
diff changeset
447 }
104
fe7257d251ac [/trunk] Changeset 118 by mikael
mikael
parents: 103
diff changeset
448
260
33e1a05864a6 Add "verbatim multi-line" mode, with commands disabled
mikael@frmp8452
parents: 244
diff changeset
449 // If verbatim multi-line mode, we check if another /msay command is typed
1187
16abe7ec3056 Fix a conflict between verbatim multiline mode and the key binding system
Mikael Berthe <mikael@lilotux.net>
parents: 1181
diff changeset
450 if (!iscmd && scr_get_multimode() == 2
967
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
451 && (strncasecmp(xpline, mkcmdstr("msay "), strlen(mkcmdstr("msay "))))) {
260
33e1a05864a6 Add "verbatim multi-line" mode, with commands disabled
mikael@frmp8452
parents: 244
diff changeset
452 // It isn't an /msay command
285
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
453 scr_append_multiline(xpline);
954
27a7b2f986f5 Fix a freeze with UTF-8 locales
Mikael Berthe <mikael@lilotux.net>
parents: 902
diff changeset
454 g_free(xpline);
260
33e1a05864a6 Add "verbatim multi-line" mode, with commands disabled
mikael@frmp8452
parents: 244
diff changeset
455 return 0;
33e1a05864a6 Add "verbatim multi-line" mode, with commands disabled
mikael@frmp8452
parents: 244
diff changeset
456 }
33e1a05864a6 Add "verbatim multi-line" mode, with commands disabled
mikael@frmp8452
parents: 244
diff changeset
457
47
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
458 // Commands handling
285
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
459 curcmd = cmd_get(xpline);
47
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
460
104
fe7257d251ac [/trunk] Changeset 118 by mikael
mikael
parents: 103
diff changeset
461 if (!curcmd) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
462 scr_LogPrint(LPRINT_NORMAL, "Unrecognized command. "
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
463 "Please see the manual for a list of known commands.");
954
27a7b2f986f5 Fix a freeze with UTF-8 locales
Mikael Berthe <mikael@lilotux.net>
parents: 902
diff changeset
464 g_free(xpline);
104
fe7257d251ac [/trunk] Changeset 118 by mikael
mikael
parents: 103
diff changeset
465 return 0;
fe7257d251ac [/trunk] Changeset 118 by mikael
mikael
parents: 103
diff changeset
466 }
fe7257d251ac [/trunk] Changeset 118 by mikael
mikael
parents: 103
diff changeset
467 if (!curcmd->func) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
468 scr_LogPrint(LPRINT_NORMAL,
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
469 "This functionality is not yet implemented, sorry.");
954
27a7b2f986f5 Fix a freeze with UTF-8 locales
Mikael Berthe <mikael@lilotux.net>
parents: 902
diff changeset
470 g_free(xpline);
104
fe7257d251ac [/trunk] Changeset 118 by mikael
mikael
parents: 103
diff changeset
471 return 0;
fe7257d251ac [/trunk] Changeset 118 by mikael
mikael
parents: 103
diff changeset
472 }
fe7257d251ac [/trunk] Changeset 118 by mikael
mikael
parents: 103
diff changeset
473 // Lets go to the command parameters
285
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
474 for (p = xpline+1; *p && (*p != ' ') ; p++)
104
fe7257d251ac [/trunk] Changeset 118 by mikael
mikael
parents: 103
diff changeset
475 ;
fe7257d251ac [/trunk] Changeset 118 by mikael
mikael
parents: 103
diff changeset
476 // Skip spaces
285
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
477 while (*p && (*p == ' '))
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
478 p++;
104
fe7257d251ac [/trunk] Changeset 118 by mikael
mikael
parents: 103
diff changeset
479 // Call command-specific function
1173
960f34ec22a2 Add init_bindings() for default key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1172
diff changeset
480 retval_for_cmds = 0;
1607
14690e624e9d Add modules
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1603
diff changeset
481 #ifdef MODULES_ENABLE
14690e624e9d Add modules
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1603
diff changeset
482 if (curcmd->userdata)
14690e624e9d Add modules
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1603
diff changeset
483 (*(void (*)(char *p, gpointer u))curcmd->func)(p, curcmd->userdata);
14690e624e9d Add modules
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1603
diff changeset
484 else
14690e624e9d Add modules
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1603
diff changeset
485 (*curcmd->func)(p);
14690e624e9d Add modules
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1603
diff changeset
486 #else
285
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
487 (*curcmd->func)(p);
1607
14690e624e9d Add modules
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1603
diff changeset
488 #endif
954
27a7b2f986f5 Fix a freeze with UTF-8 locales
Mikael Berthe <mikael@lilotux.net>
parents: 902
diff changeset
489 g_free(xpline);
1173
960f34ec22a2 Add init_bindings() for default key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1172
diff changeset
490 return retval_for_cmds;
47
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
491 }
7259a61e1a4b [/trunk] Changeset 63 by mikael
mikael
parents:
diff changeset
492
288
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
493 // process_line(line)
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
494 // Process a command/message line.
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
495 // If this isn't a command, this is a message and it is sent to the
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
496 // currently selected buddy.
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
497 // Return 255 if the line is the /quit command, or 0.
1352
61a54e172010 Add internal hooks support
Mikael Berthe <mikael@lilotux.net>
parents: 1351
diff changeset
498 int process_line(const char *line)
288
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
499 {
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
500 if (!*line) { // User only pressed enter
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
501 if (scr_get_multimode()) {
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
502 scr_append_multiline("");
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
503 return 0;
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
504 }
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
505 if (current_buddy) {
1410
0cb4361c85a7 Pressing enter when a group is selected will toggle the fold status (franky)
Mikael Berthe <mikael@lilotux.net>
parents: 1395
diff changeset
506 if (buddy_gettype(BUDDATA(current_buddy)) & ROSTER_TYPE_GROUP)
1749
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1745
diff changeset
507 do_group("toggle");
1410
0cb4361c85a7 Pressing enter when a group is selected will toggle the fold status (franky)
Mikael Berthe <mikael@lilotux.net>
parents: 1395
diff changeset
508 else {
0cb4361c85a7 Pressing enter when a group is selected will toggle the fold status (franky)
Mikael Berthe <mikael@lilotux.net>
parents: 1395
diff changeset
509 // Enter chat mode
0cb4361c85a7 Pressing enter when a group is selected will toggle the fold status (franky)
Mikael Berthe <mikael@lilotux.net>
parents: 1395
diff changeset
510 scr_set_chatmode(TRUE);
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
511 scr_show_buddy_window();
1410
0cb4361c85a7 Pressing enter when a group is selected will toggle the fold status (franky)
Mikael Berthe <mikael@lilotux.net>
parents: 1395
diff changeset
512 }
288
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
513 }
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
514 return 0;
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
515 }
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
516
967
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
517 if (*line != COMMAND_CHAR) {
288
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
518 // This isn't a command
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
519 if (scr_get_multimode())
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
520 scr_append_multiline(line);
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
521 else
1740
391863b7952c Rename do_say_internal() and export it as say_cmd()
Mikael Berthe <mikael@lilotux.net>
parents: 1737
diff changeset
522 say_cmd((char*)line, 0);
288
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
523 return 0;
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
524 }
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
525
1187
16abe7ec3056 Fix a conflict between verbatim multiline mode and the key binding system
Mikael Berthe <mikael@lilotux.net>
parents: 1181
diff changeset
526 /* It is _probably_ a command -- except for verbatim multi-line mode */
16abe7ec3056 Fix a conflict between verbatim multiline mode and the key binding system
Mikael Berthe <mikael@lilotux.net>
parents: 1181
diff changeset
527 return process_command(line, FALSE);
288
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
528 }
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
529
1350
096411233fce Add /roster item_toggle_lock (suggested by Wolfram S.)
Mikael Berthe <mikael@lilotux.net>
parents: 1347
diff changeset
530 // Helper routine for buffer item_{lock,unlock,toggle_lock}
096411233fce Add /roster item_toggle_lock (suggested by Wolfram S.)
Mikael Berthe <mikael@lilotux.net>
parents: 1347
diff changeset
531 // "lock" values: 1=lock 0=unlock -1=invert
096411233fce Add /roster item_toggle_lock (suggested by Wolfram S.)
Mikael Berthe <mikael@lilotux.net>
parents: 1347
diff changeset
532 static void roster_buddylock(char *bjid, int lock)
974
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
533 {
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
534 gpointer bud = NULL;
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
535 bool may_need_refresh = FALSE;
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
536
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
537 // Allow special jid "" or "." (current buddy)
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
538 if (bjid && (!*bjid || !strcmp(bjid, ".")))
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
539 bjid = NULL;
974
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
540
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
541 if (bjid) {
974
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
542 // The JID has been specified. Quick check...
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
543 if (check_jid_syntax(bjid)) {
1064
516b5f7d1023 Fix some UTF-8 related problems
Mikael Berthe <mikael@lilotux.net>
parents: 1059
diff changeset
544 scr_LogPrint(LPRINT_NORMAL|LPRINT_NOTUTF8,
516b5f7d1023 Fix some UTF-8 related problems
Mikael Berthe <mikael@lilotux.net>
parents: 1059
diff changeset
545 "<%s> is not a valid Jabber ID.", bjid);
974
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
546 } else {
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
547 // Find the buddy
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
548 GSList *roster_elt;
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
549 roster_elt = roster_find(bjid, jidsearch,
974
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
550 ROSTER_TYPE_USER|ROSTER_TYPE_ROOM);
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
551 if (roster_elt)
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
552 bud = roster_elt->data;
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
553 else
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
554 scr_LogPrint(LPRINT_NORMAL, "This jid isn't in the roster.");
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
555 may_need_refresh = TRUE;
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
556 }
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
557 } else {
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
558 // Use the current buddy
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
559 if (current_buddy)
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
560 bud = BUDDATA(current_buddy);
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
561 }
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
562
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
563 // Update the ROSTER_FLAG_USRLOCK flag
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
564 if (bud) {
1350
096411233fce Add /roster item_toggle_lock (suggested by Wolfram S.)
Mikael Berthe <mikael@lilotux.net>
parents: 1347
diff changeset
565 if (lock == -1)
096411233fce Add /roster item_toggle_lock (suggested by Wolfram S.)
Mikael Berthe <mikael@lilotux.net>
parents: 1347
diff changeset
566 lock = !(buddy_getflags(bud) & ROSTER_FLAG_USRLOCK);
974
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
567 buddy_setflags(bud, ROSTER_FLAG_USRLOCK, lock);
1350
096411233fce Add /roster item_toggle_lock (suggested by Wolfram S.)
Mikael Berthe <mikael@lilotux.net>
parents: 1347
diff changeset
568 if (may_need_refresh) {
974
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
569 buddylist_build();
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
570 update_roster = TRUE;
1350
096411233fce Add /roster item_toggle_lock (suggested by Wolfram S.)
Mikael Berthe <mikael@lilotux.net>
parents: 1347
diff changeset
571 }
974
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
572 }
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
573 }
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
574
1022
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
575 // display_and_free_note(note, winId)
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
576 // Display the note information in the winId buffer, and free note
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
577 // (winId is a bare jid or NULL for the status window, in which case we
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
578 // display the note jid too)
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
579 static void display_and_free_note(struct annotation *note, const char *winId)
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
580 {
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
581 gchar tbuf[128];
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
582 GString *sbuf;
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
583 guint msg_flag = HBB_PREFIX_INFO;
1268
dbc907b2d92f Add configurable colors for info and incoming messages (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1260
diff changeset
584 /* We use the flag prefix_info for the first line, and prefix_cont
1022
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
585 for the other lines, for better readability */
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
586
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
587 if (!note)
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
588 return;
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
589
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
590 sbuf = g_string_new("");
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
591
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
592 if (!winId) {
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
593 // We're writing to the status window, so let's show the jid too.
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
594 g_string_printf(sbuf, "Annotation on <%s>", note->jid);
1290
e42f48103609 Drawing the MUC nicks by a different color
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1279
diff changeset
595 scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag, 0);
1268
dbc907b2d92f Add configurable colors for info and incoming messages (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1260
diff changeset
596 msg_flag = HBB_PREFIX_INFO | HBB_PREFIX_CONT;
1022
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
597 }
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
598
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
599 // If we have the creation date, display it
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
600 if (note->cdate) {
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
601 strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S",
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
602 localtime(&note->cdate));
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
603 g_string_printf(sbuf, "Note created %s", tbuf);
1290
e42f48103609 Drawing the MUC nicks by a different color
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1279
diff changeset
604 scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag, 0);
1268
dbc907b2d92f Add configurable colors for info and incoming messages (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1260
diff changeset
605 msg_flag = HBB_PREFIX_INFO | HBB_PREFIX_CONT;
1022
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
606 }
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
607 // If we have the modification date, display it
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
608 // unless it's the same as the creation date
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
609 if (note->mdate && note->mdate != note->cdate) {
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
610 strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S",
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
611 localtime(&note->mdate));
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
612 g_string_printf(sbuf, "Note modified %s", tbuf);
1290
e42f48103609 Drawing the MUC nicks by a different color
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1279
diff changeset
613 scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag, 0);
1268
dbc907b2d92f Add configurable colors for info and incoming messages (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1260
diff changeset
614 msg_flag = HBB_PREFIX_INFO | HBB_PREFIX_CONT;
1022
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
615 }
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
616 // Note text
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
617 g_string_printf(sbuf, "Note: %s", note->text);
1290
e42f48103609 Drawing the MUC nicks by a different color
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1279
diff changeset
618 scr_WriteIncomingMessage(winId, sbuf->str, 0, msg_flag, 0);
1022
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
619
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
620 g_string_free(sbuf, TRUE);
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
621 g_free(note->text);
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
622 g_free(note->jid);
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
623 g_free(note);
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
624 }
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
625
1059
875d2c9d399c Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1058
diff changeset
626 static void display_all_annotations(void)
1022
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
627 {
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
628 GSList *notes;
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
629 notes = xmpp_get_all_storage_rosternotes();
1163
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
630
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
631 if (!notes)
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
632 return;
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
633
1022
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
634 // Call display_and_free_note() for each note,
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
635 // with winId = NULL (special window)
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
636 g_slist_foreach(notes, (GFunc)&display_and_free_note, NULL);
1163
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
637 scr_setmsgflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE);
1815
6abca6000762 Make use of ROSTER_UI_PRIO_STATUS_WIN_MESSAGE
Mikael Berthe <mikael@lilotux.net>
parents: 1811
diff changeset
638 scr_setattentionflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE,
6abca6000762 Make use of ROSTER_UI_PRIO_STATUS_WIN_MESSAGE
Mikael Berthe <mikael@lilotux.net>
parents: 1811
diff changeset
639 ROSTER_UI_PRIO_STATUS_WIN_MESSAGE, prio_max);
1022
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
640 g_slist_free(notes);
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
641 }
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
642
1016
4d3c48844746 Add /roster note
Mikael Berthe <mikael@lilotux.net>
parents: 1015
diff changeset
643 static void roster_note(char *arg)
4d3c48844746 Add /roster note
Mikael Berthe <mikael@lilotux.net>
parents: 1015
diff changeset
644 {
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
645 const char *bjid;
1016
4d3c48844746 Add /roster note
Mikael Berthe <mikael@lilotux.net>
parents: 1015
diff changeset
646 guint type;
4d3c48844746 Add /roster note
Mikael Berthe <mikael@lilotux.net>
parents: 1015
diff changeset
647
4d3c48844746 Add /roster note
Mikael Berthe <mikael@lilotux.net>
parents: 1015
diff changeset
648 if (!current_buddy)
4d3c48844746 Add /roster note
Mikael Berthe <mikael@lilotux.net>
parents: 1015
diff changeset
649 return;
4d3c48844746 Add /roster note
Mikael Berthe <mikael@lilotux.net>
parents: 1015
diff changeset
650
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
651 bjid = buddy_getjid(BUDDATA(current_buddy));
1016
4d3c48844746 Add /roster note
Mikael Berthe <mikael@lilotux.net>
parents: 1015
diff changeset
652 type = buddy_gettype(BUDDATA(current_buddy));
4d3c48844746 Add /roster note
Mikael Berthe <mikael@lilotux.net>
parents: 1015
diff changeset
653
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
654 if (!bjid && type == ROSTER_TYPE_SPECIAL && !arg) {
1022
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
655 // We're in the status window (the only special buffer currently)
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
656 // Let's display all server notes
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
657 display_all_annotations();
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
658 return;
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
659 }
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
660
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
661 if (!bjid || (type != ROSTER_TYPE_USER &&
1016
4d3c48844746 Add /roster note
Mikael Berthe <mikael@lilotux.net>
parents: 1015
diff changeset
662 type != ROSTER_TYPE_ROOM &&
4d3c48844746 Add /roster note
Mikael Berthe <mikael@lilotux.net>
parents: 1015
diff changeset
663 type != ROSTER_TYPE_AGENT)) {
4d3c48844746 Add /roster note
Mikael Berthe <mikael@lilotux.net>
parents: 1015
diff changeset
664 scr_LogPrint(LPRINT_NORMAL, "This item can't have a note.");
4d3c48844746 Add /roster note
Mikael Berthe <mikael@lilotux.net>
parents: 1015
diff changeset
665 return;
4d3c48844746 Add /roster note
Mikael Berthe <mikael@lilotux.net>
parents: 1015
diff changeset
666 }
4d3c48844746 Add /roster note
Mikael Berthe <mikael@lilotux.net>
parents: 1015
diff changeset
667
1022
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
668 if (arg && *arg) { // Set a note
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
669 gchar *msg, *notetxt;
1016
4d3c48844746 Add /roster note
Mikael Berthe <mikael@lilotux.net>
parents: 1015
diff changeset
670 msg = to_utf8(arg);
4d3c48844746 Add /roster note
Mikael Berthe <mikael@lilotux.net>
parents: 1015
diff changeset
671 if (!strcmp(msg, "-"))
1019
9d5f6e0ea7b3 XEP-0145: display note dates
Mikael Berthe <mikael@lilotux.net>
parents: 1016
diff changeset
672 notetxt = NULL; // delete note
1016
4d3c48844746 Add /roster note
Mikael Berthe <mikael@lilotux.net>
parents: 1015
diff changeset
673 else
1019
9d5f6e0ea7b3 XEP-0145: display note dates
Mikael Berthe <mikael@lilotux.net>
parents: 1016
diff changeset
674 notetxt = msg;
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
675 xmpp_set_storage_rosternotes(bjid, notetxt);
1019
9d5f6e0ea7b3 XEP-0145: display note dates
Mikael Berthe <mikael@lilotux.net>
parents: 1016
diff changeset
676 g_free(msg);
1016
4d3c48844746 Add /roster note
Mikael Berthe <mikael@lilotux.net>
parents: 1015
diff changeset
677 } else { // Display a note
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
678 struct annotation *note = xmpp_get_storage_rosternotes(bjid, FALSE);
1019
9d5f6e0ea7b3 XEP-0145: display note dates
Mikael Berthe <mikael@lilotux.net>
parents: 1016
diff changeset
679 if (note) {
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
680 display_and_free_note(note, bjid);
1019
9d5f6e0ea7b3 XEP-0145: display note dates
Mikael Berthe <mikael@lilotux.net>
parents: 1016
diff changeset
681 } else {
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
682 scr_WriteIncomingMessage(bjid, "This item doesn't have a note.", 0,
1290
e42f48103609 Drawing the MUC nicks by a different color
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1279
diff changeset
683 HBB_PREFIX_INFO, 0);
1019
9d5f6e0ea7b3 XEP-0145: display note dates
Mikael Berthe <mikael@lilotux.net>
parents: 1016
diff changeset
684 }
1016
4d3c48844746 Add /roster note
Mikael Berthe <mikael@lilotux.net>
parents: 1015
diff changeset
685 }
4d3c48844746 Add /roster note
Mikael Berthe <mikael@lilotux.net>
parents: 1015
diff changeset
686 }
4d3c48844746 Add /roster note
Mikael Berthe <mikael@lilotux.net>
parents: 1015
diff changeset
687
1573
ece4f26bf9ff Add count parameter to roster up/down command
Mikael Berthe <mikael@lilotux.net>
parents: 1562
diff changeset
688 // roster_updown(updown, nitems)
ece4f26bf9ff Add count parameter to roster up/down command
Mikael Berthe <mikael@lilotux.net>
parents: 1562
diff changeset
689 // updown: -1=up, +1=down
ece4f26bf9ff Add count parameter to roster up/down command
Mikael Berthe <mikael@lilotux.net>
parents: 1562
diff changeset
690 inline static void roster_updown(int updown, char *nitems)
ece4f26bf9ff Add count parameter to roster up/down command
Mikael Berthe <mikael@lilotux.net>
parents: 1562
diff changeset
691 {
ece4f26bf9ff Add count parameter to roster up/down command
Mikael Berthe <mikael@lilotux.net>
parents: 1562
diff changeset
692 int nbitems;
ece4f26bf9ff Add count parameter to roster up/down command
Mikael Berthe <mikael@lilotux.net>
parents: 1562
diff changeset
693
ece4f26bf9ff Add count parameter to roster up/down command
Mikael Berthe <mikael@lilotux.net>
parents: 1562
diff changeset
694 if (!nitems || !*nitems)
ece4f26bf9ff Add count parameter to roster up/down command
Mikael Berthe <mikael@lilotux.net>
parents: 1562
diff changeset
695 nbitems = 1;
ece4f26bf9ff Add count parameter to roster up/down command
Mikael Berthe <mikael@lilotux.net>
parents: 1562
diff changeset
696 else
ece4f26bf9ff Add count parameter to roster up/down command
Mikael Berthe <mikael@lilotux.net>
parents: 1562
diff changeset
697 nbitems = strtol(nitems, NULL, 10);
ece4f26bf9ff Add count parameter to roster up/down command
Mikael Berthe <mikael@lilotux.net>
parents: 1562
diff changeset
698
ece4f26bf9ff Add count parameter to roster up/down command
Mikael Berthe <mikael@lilotux.net>
parents: 1562
diff changeset
699 if (nbitems > 0)
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
700 scr_roster_up_down(updown, nbitems);
1573
ece4f26bf9ff Add count parameter to roster up/down command
Mikael Berthe <mikael@lilotux.net>
parents: 1562
diff changeset
701 }
ece4f26bf9ff Add count parameter to roster up/down command
Mikael Berthe <mikael@lilotux.net>
parents: 1562
diff changeset
702
104
fe7257d251ac [/trunk] Changeset 118 by mikael
mikael
parents: 103
diff changeset
703 /* Commands callback functions */
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
704 /* All these do_*() functions will be called with a "arg" parameter */
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
705 /* (with arg not null) */
104
fe7257d251ac [/trunk] Changeset 118 by mikael
mikael
parents: 103
diff changeset
706
336
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
707 static void do_roster(char *arg)
104
fe7257d251ac [/trunk] Changeset 118 by mikael
mikael
parents: 103
diff changeset
708 {
968
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
709 char **paramlst;
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
710 char *subcmd;
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
711
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
712 paramlst = split_arg(arg, 2, 1); // subcmd, arg
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
713 subcmd = *paramlst;
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
714 arg = *(paramlst+1);
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
715
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
716 if (!subcmd || !*subcmd) {
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
717 scr_LogPrint(LPRINT_NORMAL, "Missing parameter.");
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
718 free_arg_lst(paramlst);
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
719 return;
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
720 }
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
721
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
722 if (!strcasecmp(subcmd, "top")) {
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
723 scr_roster_top();
128
81ccb1091dd8 [/trunk] Changeset 141 by mikael
mikael
parents: 127
diff changeset
724 update_roster = TRUE;
968
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
725 } else if (!strcasecmp(subcmd, "bottom")) {
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
726 scr_roster_bottom();
128
81ccb1091dd8 [/trunk] Changeset 141 by mikael
mikael
parents: 127
diff changeset
727 update_roster = TRUE;
968
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
728 } else if (!strcasecmp(subcmd, "hide")) {
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
729 scr_roster_visibility(0);
968
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
730 } else if (!strcasecmp(subcmd, "show")) {
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
731 scr_roster_visibility(1);
968
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
732 } else if (!strcasecmp(subcmd, "toggle")) {
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
733 scr_roster_visibility(-1);
968
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
734 } else if (!strcasecmp(subcmd, "hide_offline")) {
120
cfd3df636d5f [/trunk] Changeset 133 by mikael
mikael
parents: 118
diff changeset
735 buddylist_set_hide_offline_buddies(TRUE);
104
fe7257d251ac [/trunk] Changeset 118 by mikael
mikael
parents: 103
diff changeset
736 if (current_buddy)
fe7257d251ac [/trunk] Changeset 118 by mikael
mikael
parents: 103
diff changeset
737 buddylist_build();
128
81ccb1091dd8 [/trunk] Changeset 141 by mikael
mikael
parents: 127
diff changeset
738 update_roster = TRUE;
968
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
739 } else if (!strcasecmp(subcmd, "show_offline")) {
120
cfd3df636d5f [/trunk] Changeset 133 by mikael
mikael
parents: 118
diff changeset
740 buddylist_set_hide_offline_buddies(FALSE);
124
6d2122c003c4 [/trunk] Changeset 137 by mikael
mikael
parents: 120
diff changeset
741 buddylist_build();
128
81ccb1091dd8 [/trunk] Changeset 141 by mikael
mikael
parents: 127
diff changeset
742 update_roster = TRUE;
968
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
743 } else if (!strcasecmp(subcmd, "toggle_offline")) {
290
f63839a4cb35 Add /roster toggle_offline
Mikael Berthe <mikael@lilotux.net>
parents: 288
diff changeset
744 buddylist_set_hide_offline_buddies(-1);
f63839a4cb35 Add /roster toggle_offline
Mikael Berthe <mikael@lilotux.net>
parents: 288
diff changeset
745 buddylist_build();
f63839a4cb35 Add /roster toggle_offline
Mikael Berthe <mikael@lilotux.net>
parents: 288
diff changeset
746 update_roster = TRUE;
1311
0dda8238af21 Implement "/roster display"
Mikael Berthe <mikael@lilotux.net>
parents: 1305
diff changeset
747 } else if (!strcasecmp(subcmd, "display")) {
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
748 scr_roster_display(arg);
974
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
749 } else if (!strcasecmp(subcmd, "item_lock")) {
1350
096411233fce Add /roster item_toggle_lock (suggested by Wolfram S.)
Mikael Berthe <mikael@lilotux.net>
parents: 1347
diff changeset
750 roster_buddylock(arg, 1);
974
36f7753dfb59 Add /roster item_{lock,unlock}
Mikael Berthe <mikael@lilotux.net>
parents: 968
diff changeset
751 } else if (!strcasecmp(subcmd, "item_unlock")) {
1350
096411233fce Add /roster item_toggle_lock (suggested by Wolfram S.)
Mikael Berthe <mikael@lilotux.net>
parents: 1347
diff changeset
752 roster_buddylock(arg, 0);
096411233fce Add /roster item_toggle_lock (suggested by Wolfram S.)
Mikael Berthe <mikael@lilotux.net>
parents: 1347
diff changeset
753 } else if (!strcasecmp(subcmd, "item_toggle_lock")) {
096411233fce Add /roster item_toggle_lock (suggested by Wolfram S.)
Mikael Berthe <mikael@lilotux.net>
parents: 1347
diff changeset
754 roster_buddylock(arg, -1);
968
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
755 } else if (!strcasecmp(subcmd, "unread_first")) {
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
756 scr_roster_unread_message(0);
968
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
757 } else if (!strcasecmp(subcmd, "unread_next")) {
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
758 scr_roster_unread_message(1);
968
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
759 } else if (!strcasecmp(subcmd, "alternate")) {
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
760 scr_roster_jump_alternate();
968
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
761 } else if (!strncasecmp(subcmd, "search", 6)) {
979
ea939ff047d8 Improve /buffer search_*
Mikael Berthe <mikael@lilotux.net>
parents: 978
diff changeset
762 strip_arg_special_chars(arg);
ea939ff047d8 Improve /buffer search_*
Mikael Berthe <mikael@lilotux.net>
parents: 978
diff changeset
763 if (!arg || !*arg) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
764 scr_LogPrint(LPRINT_NORMAL, "What name or JID are you looking for?");
968
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
765 free_arg_lst(paramlst);
265
49e9e02dd6d0 Add "/roster search" command
mikael@frmp8452
parents: 262
diff changeset
766 return;
49e9e02dd6d0 Add "/roster search" command
mikael@frmp8452
parents: 262
diff changeset
767 }
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
768 scr_roster_search(arg);
265
49e9e02dd6d0 Add "/roster search" command
mikael@frmp8452
parents: 262
diff changeset
769 update_roster = TRUE;
968
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
770 } else if (!strcasecmp(subcmd, "up")) {
1573
ece4f26bf9ff Add count parameter to roster up/down command
Mikael Berthe <mikael@lilotux.net>
parents: 1562
diff changeset
771 roster_updown(-1, arg);
968
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
772 } else if (!strcasecmp(subcmd, "down")) {
1573
ece4f26bf9ff Add count parameter to roster up/down command
Mikael Berthe <mikael@lilotux.net>
parents: 1562
diff changeset
773 roster_updown(1, arg);
1086
5e2e647e781b Add command /roster group_prev|group_next and update documentation
Mikael Berthe <mikael@lilotux.net>
parents: 1074
diff changeset
774 } else if (!strcasecmp(subcmd, "group_prev")) {
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
775 scr_roster_prev_group();
1086
5e2e647e781b Add command /roster group_prev|group_next and update documentation
Mikael Berthe <mikael@lilotux.net>
parents: 1074
diff changeset
776 } else if (!strcasecmp(subcmd, "group_next")) {
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
777 scr_roster_next_group();
1016
4d3c48844746 Add /roster note
Mikael Berthe <mikael@lilotux.net>
parents: 1015
diff changeset
778 } else if (!strcasecmp(subcmd, "note")) {
4d3c48844746 Add /roster note
Mikael Berthe <mikael@lilotux.net>
parents: 1015
diff changeset
779 roster_note(arg);
104
fe7257d251ac [/trunk] Changeset 118 by mikael
mikael
parents: 103
diff changeset
780 } else
374
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 371
diff changeset
781 scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!");
968
d3bfa9e9d88c Use split_arg() in do_roster()
Mikael Berthe <mikael@lilotux.net>
parents: 967
diff changeset
782 free_arg_lst(paramlst);
104
fe7257d251ac [/trunk] Changeset 118 by mikael
mikael
parents: 103
diff changeset
783 }
108
7fb72bc13732 [/trunk] Changeset 122 by mikael
mikael
parents: 104
diff changeset
784
1272
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
785 void do_color(char *arg)
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
786 {
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
787 char **paramlst;
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
788 char *subcmd;
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
789
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
790 paramlst = split_arg(arg, 2, 1); // subcmd, arg
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
791 subcmd = *paramlst;
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
792 arg = *(paramlst+1);
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
793
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
794 if (!subcmd || !*subcmd) {
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
795 scr_LogPrint(LPRINT_NORMAL, "Missing parameter.");
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
796 free_arg_lst(paramlst);
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
797 return;
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
798 }
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
799
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
800 if (!strcasecmp(subcmd, "roster")) {
1333
e30a9d907105 Minor coding style adjustments
Mikael Berthe <mikael@lilotux.net>
parents: 1329
diff changeset
801 char *status, *wildcard, *color;
1272
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
802 char **arglist = split_arg(arg, 3, 0);
1333
e30a9d907105 Minor coding style adjustments
Mikael Berthe <mikael@lilotux.net>
parents: 1329
diff changeset
803
e30a9d907105 Minor coding style adjustments
Mikael Berthe <mikael@lilotux.net>
parents: 1329
diff changeset
804 status = *arglist;
e30a9d907105 Minor coding style adjustments
Mikael Berthe <mikael@lilotux.net>
parents: 1329
diff changeset
805 wildcard = to_utf8(arglist[1]);
e30a9d907105 Minor coding style adjustments
Mikael Berthe <mikael@lilotux.net>
parents: 1329
diff changeset
806 color = arglist[2];
e30a9d907105 Minor coding style adjustments
Mikael Berthe <mikael@lilotux.net>
parents: 1329
diff changeset
807
1272
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
808 if (status && !strcmp(status, "clear")) { // Not a color command, clear all
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
809 scr_roster_clear_color();
1272
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
810 update_roster = TRUE;
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
811 } else {
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
812 if (!status || !*status || !wildcard || !*wildcard || !color || !*color) {
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
813 scr_LogPrint(LPRINT_NORMAL, "Missing argument");
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
814 } else {
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
815 update_roster = scr_roster_color(status, wildcard, color) ||
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
816 update_roster;
1272
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
817 }
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
818 }
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
819 free_arg_lst(arglist);
1292
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
820 g_free(wildcard);
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
821 } else if (!strcasecmp(subcmd, "muc")) {
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
822 char **arglist = split_arg(arg, 2, 0);
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
823 char *free_muc = to_utf8(*arglist);
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
824 const char *muc = free_muc, *mode = arglist[1];
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
825 if (!muc || !*muc)
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
826 scr_LogPrint(LPRINT_NORMAL, "What MUC?");
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
827 else {
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
828 if (!strcmp(muc, "."))
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
829 if (!(muc = CURRENT_JID))
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
830 scr_LogPrint(LPRINT_NORMAL, "No JID selected");
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
831 if (muc) {
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
832 if (check_jid_syntax(muc) && strcmp(muc, "*"))
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
833 scr_LogPrint(LPRINT_NORMAL, "Not a JID");
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
834 else {
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
835 if (!mode || !*mode || !strcasecmp(mode, "on"))
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
836 scr_muc_color(muc, MC_ALL);
1292
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
837 else if (!strcasecmp(mode, "preset"))
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
838 scr_muc_color(muc, MC_PRESET);
1292
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
839 else if (!strcasecmp(mode, "off"))
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
840 scr_muc_color(muc, MC_OFF);
1292
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
841 else if (!strcmp(mode, "-"))
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
842 scr_muc_color(muc, MC_REMOVE);
1292
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
843 else
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
844 scr_LogPrint(LPRINT_NORMAL, "Unknown coloring mode");
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
845 }
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
846 }
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
847 }
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
848 free_arg_lst(arglist);
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
849 g_free(free_muc);
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
850 } else if (!strcasecmp(subcmd, "mucnick")) {
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
851 char **arglist = split_arg(arg, 2, 0);
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
852 const char *nick = *arglist, *color = arglist[1];
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
853 if (!nick || !*nick || !color || !*color)
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
854 scr_LogPrint(LPRINT_NORMAL, "Missing argument");
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
855 else
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
856 scr_muc_nick_color(nick, color);
1292
382ec54b584e Muc nick coloring functionality
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1290
diff changeset
857 free_arg_lst(arglist);
1272
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
858 } else
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
859 scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!");
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
860 free_arg_lst(paramlst);
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
861 }
033576acac4c Add configurable roster colors (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1268
diff changeset
862
1415
317f8d181626 Rename command public functions
Mikael Berthe <mikael@lilotux.net>
parents: 1414
diff changeset
863 // cmd_setstatus(recipient, arg)
444
5927c3bfba13 Add /status_to command
Mikael Berthe <mikael@lilotux.net>
parents: 439
diff changeset
864 // Set your Jabber status.
5927c3bfba13 Add /status_to command
Mikael Berthe <mikael@lilotux.net>
parents: 439
diff changeset
865 // - if recipient is not NULL, the status is sent to this contact only
5927c3bfba13 Add /status_to command
Mikael Berthe <mikael@lilotux.net>
parents: 439
diff changeset
866 // - arg must be "status message" (message is optional)
1415
317f8d181626 Rename command public functions
Mikael Berthe <mikael@lilotux.net>
parents: 1414
diff changeset
867 void cmd_setstatus(const char *recipient, const char *arg)
116
1e7e59775f12 [/trunk] Changeset 130 by mikael
mikael
parents: 113
diff changeset
868 {
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
869 char **paramlst;
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
870 char *status;
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
871 char *msg;
116
1e7e59775f12 [/trunk] Changeset 130 by mikael
mikael
parents: 113
diff changeset
872 enum imstatus st;
1e7e59775f12 [/trunk] Changeset 130 by mikael
mikael
parents: 113
diff changeset
873
1732
4e57d6275a86 Allow status command in the configuration file
Mikael Berthe <mikael@lilotux.net>
parents: 1729
diff changeset
874 if (!xmpp_is_online())
4e57d6275a86 Allow status command in the configuration file
Mikael Berthe <mikael@lilotux.net>
parents: 1729
diff changeset
875 scr_LogPrint(LPRINT_NORMAL, "You are currently not connected...");
4e57d6275a86 Allow status command in the configuration file
Mikael Berthe <mikael@lilotux.net>
parents: 1729
diff changeset
876 // We do not return now, so that the status is memorized and used later...
472
75442262c082 Disable some commands when not connected
Mikael Berthe <mikael@lilotux.net>
parents: 471
diff changeset
877
1428
5667048423db Reset auto-away before changing the status
Mikael Berthe <mikael@lilotux.net>
parents: 1424
diff changeset
878 // It makes sense to reset autoaway before changing the status
5667048423db Reset auto-away before changing the status
Mikael Berthe <mikael@lilotux.net>
parents: 1424
diff changeset
879 // (esp. for FIFO or remote commands) or the behaviour could be
5667048423db Reset auto-away before changing the status
Mikael Berthe <mikael@lilotux.net>
parents: 1424
diff changeset
880 // unexpected...
1429
99d95d4ea806 No need to explicitly reset auto-away for directed presence messages
Mikael Berthe <mikael@lilotux.net>
parents: 1428
diff changeset
881 if (!recipient)
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
882 scr_check_auto_away(TRUE);
1428
5667048423db Reset auto-away before changing the status
Mikael Berthe <mikael@lilotux.net>
parents: 1424
diff changeset
883
1368
23afeb5c555b Don't strip quotes from a status message (Suggested by bb)
Mikael Berthe <mikael@lilotux.net>
parents: 1365
diff changeset
884 paramlst = split_arg(arg, 2, 1); // status, message
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
885 status = *paramlst;
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
886 msg = *(paramlst+1);
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
887
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
888 if (!status) {
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
889 free_arg_lst(paramlst);
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
890 return;
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
891 }
318
45076d02eeef The /status command can specify a status message
Mikael Berthe <mikael@lilotux.net>
parents: 310
diff changeset
892
967
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
893 if (!strcasecmp(status, IMSTATUS_OFFLINE)) st = offline;
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
894 else if (!strcasecmp(status, IMSTATUS_ONLINE)) st = available;
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
895 else if (!strcasecmp(status, IMSTATUS_AVAILABLE)) st = available;
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
896 else if (!strcasecmp(status, IMSTATUS_AWAY)) st = away;
1972
45f0f0f60656 Remove deprecated status invisible
Mikael Berthe <mikael@lilotux.net>
parents: 1959
diff changeset
897 #ifdef WITH_DEPRECATED_STATUS_INVISIBLE
967
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
898 else if (!strcasecmp(status, IMSTATUS_INVISIBLE)) st = invisible;
1972
45f0f0f60656 Remove deprecated status invisible
Mikael Berthe <mikael@lilotux.net>
parents: 1959
diff changeset
899 #endif
967
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
900 else if (!strcasecmp(status, IMSTATUS_DONOTDISTURB)) st = dontdisturb;
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
901 else if (!strcasecmp(status, IMSTATUS_NOTAVAILABLE)) st = notavail;
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
902 else if (!strcasecmp(status, IMSTATUS_FREE4CHAT)) st = freeforchat;
1463
477581e3b95e "status message" expects a message
Mikael Berthe <mikael@lilotux.net>
parents: 1462
diff changeset
903 else if (!strcasecmp(status, "message")) {
477581e3b95e "status message" expects a message
Mikael Berthe <mikael@lilotux.net>
parents: 1462
diff changeset
904 if (!msg || !*msg) {
477581e3b95e "status message" expects a message
Mikael Berthe <mikael@lilotux.net>
parents: 1462
diff changeset
905 // We want a message. If there's none, we give up.
477581e3b95e "status message" expects a message
Mikael Berthe <mikael@lilotux.net>
parents: 1462
diff changeset
906 scr_LogPrint(LPRINT_NORMAL, "Missing parameter.");
477581e3b95e "status message" expects a message
Mikael Berthe <mikael@lilotux.net>
parents: 1462
diff changeset
907 free_arg_lst(paramlst);
477581e3b95e "status message" expects a message
Mikael Berthe <mikael@lilotux.net>
parents: 1462
diff changeset
908 return;
477581e3b95e "status message" expects a message
Mikael Berthe <mikael@lilotux.net>
parents: 1462
diff changeset
909 }
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
910 st = xmpp_getstatus(); // Preserve current status
1463
477581e3b95e "status message" expects a message
Mikael Berthe <mikael@lilotux.net>
parents: 1462
diff changeset
911 } else {
444
5927c3bfba13 Add /status_to command
Mikael Berthe <mikael@lilotux.net>
parents: 439
diff changeset
912 scr_LogPrint(LPRINT_NORMAL, "Unrecognized status!");
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
913 free_arg_lst(paramlst);
116
1e7e59775f12 [/trunk] Changeset 130 by mikael
mikael
parents: 113
diff changeset
914 return;
1e7e59775f12 [/trunk] Changeset 130 by mikael
mikael
parents: 113
diff changeset
915 }
1e7e59775f12 [/trunk] Changeset 130 by mikael
mikael
parents: 113
diff changeset
916
677
633a0522bd37 Using "/status invisible -" did not clear the status message
Mikael Berthe <mikael@lilotux.net>
parents: 659
diff changeset
917 // Use provided message
633a0522bd37 Using "/status invisible -" did not clear the status message
Mikael Berthe <mikael@lilotux.net>
parents: 659
diff changeset
918 if (msg && !*msg) {
318
45076d02eeef The /status command can specify a status message
Mikael Berthe <mikael@lilotux.net>
parents: 310
diff changeset
919 msg = NULL;
677
633a0522bd37 Using "/status invisible -" did not clear the status message
Mikael Berthe <mikael@lilotux.net>
parents: 659
diff changeset
920 }
318
45076d02eeef The /status command can specify a status message
Mikael Berthe <mikael@lilotux.net>
parents: 310
diff changeset
921
528
2f714bd701a1 Do not use default status messages with /status_to
Mikael Berthe <mikael@lilotux.net>
parents: 519
diff changeset
922 // If a recipient is specified, let's don't use default status messages
2f714bd701a1 Do not use default status messages with /status_to
Mikael Berthe <mikael@lilotux.net>
parents: 519
diff changeset
923 if (recipient && !msg)
2f714bd701a1 Do not use default status messages with /status_to
Mikael Berthe <mikael@lilotux.net>
parents: 519
diff changeset
924 msg = "";
2f714bd701a1 Do not use default status messages with /status_to
Mikael Berthe <mikael@lilotux.net>
parents: 519
diff changeset
925
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
926 xmpp_setstatus(st, recipient, msg, FALSE);
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
927
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
928 free_arg_lst(paramlst);
444
5927c3bfba13 Add /status_to command
Mikael Berthe <mikael@lilotux.net>
parents: 439
diff changeset
929 }
5927c3bfba13 Add /status_to command
Mikael Berthe <mikael@lilotux.net>
parents: 439
diff changeset
930
5927c3bfba13 Add /status_to command
Mikael Berthe <mikael@lilotux.net>
parents: 439
diff changeset
931 static void do_status(char *arg)
5927c3bfba13 Add /status_to command
Mikael Berthe <mikael@lilotux.net>
parents: 439
diff changeset
932 {
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
933 if (!*arg) {
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
934 const char *sm = xmpp_getstatusmsg();
519
5c338d31de56 Show current global status message in "/status"
Mikael Berthe <mikael@lilotux.net>
parents: 508
diff changeset
935 scr_LogPrint(LPRINT_NORMAL, "Your status is: [%c] %s",
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
936 imstatus2char[xmpp_getstatus()],
519
5c338d31de56 Show current global status message in "/status"
Mikael Berthe <mikael@lilotux.net>
parents: 508
diff changeset
937 (sm ? sm : ""));
444
5927c3bfba13 Add /status_to command
Mikael Berthe <mikael@lilotux.net>
parents: 439
diff changeset
938 return;
5927c3bfba13 Add /status_to command
Mikael Berthe <mikael@lilotux.net>
parents: 439
diff changeset
939 }
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
940 arg = to_utf8(arg);
1415
317f8d181626 Rename command public functions
Mikael Berthe <mikael@lilotux.net>
parents: 1414
diff changeset
941 cmd_setstatus(NULL, arg);
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
942 g_free(arg);
444
5927c3bfba13 Add /status_to command
Mikael Berthe <mikael@lilotux.net>
parents: 439
diff changeset
943 }
5927c3bfba13 Add /status_to command
Mikael Berthe <mikael@lilotux.net>
parents: 439
diff changeset
944
5927c3bfba13 Add /status_to command
Mikael Berthe <mikael@lilotux.net>
parents: 439
diff changeset
945 static void do_status_to(char *arg)
5927c3bfba13 Add /status_to command
Mikael Berthe <mikael@lilotux.net>
parents: 439
diff changeset
946 {
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
947 char **paramlst;
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
948 char *fjid, *st, *msg;
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
949 char *jid_utf8 = NULL;
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
950
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
951 paramlst = split_arg(arg, 3, 1); // jid, status, [message]
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
952 fjid = *paramlst;
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
953 st = *(paramlst+1);
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
954 msg = *(paramlst+2);
444
5927c3bfba13 Add /status_to command
Mikael Berthe <mikael@lilotux.net>
parents: 439
diff changeset
955
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
956 if (!fjid || !st) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
957 scr_LogPrint(LPRINT_NORMAL,
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
958 "Please specify both a Jabber ID and a status.");
640
1cd7f8e3895b "/status_to" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 638
diff changeset
959 free_arg_lst(paramlst);
1cd7f8e3895b "/status_to" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 638
diff changeset
960 return;
1cd7f8e3895b "/status_to" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 638
diff changeset
961 }
1cd7f8e3895b "/status_to" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 638
diff changeset
962
1cd7f8e3895b "/status_to" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 638
diff changeset
963 // Allow things like /status_to "" away
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
964 if (!*fjid || !strcmp(fjid, "."))
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
965 fjid = NULL;
640
1cd7f8e3895b "/status_to" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 638
diff changeset
966
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
967 if (fjid) {
640
1cd7f8e3895b "/status_to" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 638
diff changeset
968 // The JID has been specified. Quick check...
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
969 if (check_jid_syntax(fjid)) {
1064
516b5f7d1023 Fix some UTF-8 related problems
Mikael Berthe <mikael@lilotux.net>
parents: 1059
diff changeset
970 scr_LogPrint(LPRINT_NORMAL|LPRINT_NOTUTF8,
516b5f7d1023 Fix some UTF-8 related problems
Mikael Berthe <mikael@lilotux.net>
parents: 1059
diff changeset
971 "<%s> is not a valid Jabber ID.", fjid);
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
972 fjid = NULL;
640
1cd7f8e3895b "/status_to" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 638
diff changeset
973 } else {
696
ee06382dfb22 /status_to: Do not convert resource name to lower case
Mikael Berthe <mikael@lilotux.net>
parents: 694
diff changeset
974 // Convert jid to lowercase
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
975 char *p = fjid;
977
5b01de4ac5e1 Cosmetic changes
Alexis Hildebrandt <afh [at] 2drop [dot] net>
parents: 974
diff changeset
976 for ( ; *p && *p != JID_RESOURCE_SEPARATOR; p++)
696
ee06382dfb22 /status_to: Do not convert resource name to lower case
Mikael Berthe <mikael@lilotux.net>
parents: 694
diff changeset
977 *p = tolower(*p);
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
978 fjid = jid_utf8 = to_utf8(fjid);
640
1cd7f8e3895b "/status_to" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 638
diff changeset
979 }
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
980 } else {
640
1cd7f8e3895b "/status_to" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 638
diff changeset
981 // Add the current buddy
1cd7f8e3895b "/status_to" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 638
diff changeset
982 if (current_buddy)
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
983 fjid = (char*)buddy_getjid(BUDDATA(current_buddy));
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
984 if (!fjid)
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
985 scr_LogPrint(LPRINT_NORMAL, "Please specify a Jabber ID.");
640
1cd7f8e3895b "/status_to" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 638
diff changeset
986 }
1cd7f8e3895b "/status_to" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 638
diff changeset
987
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
988 if (fjid) {
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
989 char *cmdline;
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
990 if (!msg)
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
991 msg = "";
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
992 msg = to_utf8(msg);
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
993 cmdline = g_strdup_printf("%s %s", st, msg);
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
994 scr_LogPrint(LPRINT_LOGNORM, "Sending to <%s> /status %s", fjid, cmdline);
1415
317f8d181626 Rename command public functions
Mikael Berthe <mikael@lilotux.net>
parents: 1414
diff changeset
995 cmd_setstatus(fjid, cmdline);
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
996 g_free(msg);
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
997 g_free(cmdline);
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
998 g_free(jid_utf8);
444
5927c3bfba13 Add /status_to command
Mikael Berthe <mikael@lilotux.net>
parents: 439
diff changeset
999 }
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
1000 free_arg_lst(paramlst);
116
1e7e59775f12 [/trunk] Changeset 130 by mikael
mikael
parents: 113
diff changeset
1001 }
1e7e59775f12 [/trunk] Changeset 130 by mikael
mikael
parents: 113
diff changeset
1002
336
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
1003 static void do_add(char *arg)
124
6d2122c003c4 [/trunk] Changeset 137 by mikael
mikael
parents: 120
diff changeset
1004 {
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
1005 char **paramlst;
244
5f8b529412bd [/trunk] Changeset 257 by mikael
mikael
parents: 240
diff changeset
1006 char *id, *nick;
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
1007 char *jid_utf8 = NULL;
472
75442262c082 Disable some commands when not connected
Mikael Berthe <mikael@lilotux.net>
parents: 471
diff changeset
1008
1684
95df4ea512c8 Provide xmpp_is_online()
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1682
diff changeset
1009 if (!xmpp_is_online()) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
1010 scr_LogPrint(LPRINT_NORMAL, "You are not connected.");
472
75442262c082 Disable some commands when not connected
Mikael Berthe <mikael@lilotux.net>
parents: 471
diff changeset
1011 return;
75442262c082 Disable some commands when not connected
Mikael Berthe <mikael@lilotux.net>
parents: 471
diff changeset
1012 }
75442262c082 Disable some commands when not connected
Mikael Berthe <mikael@lilotux.net>
parents: 471
diff changeset
1013
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
1014 paramlst = split_arg(arg, 2, 0); // jid, [nickname]
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
1015 id = *paramlst;
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
1016 nick = *(paramlst+1);
244
5f8b529412bd [/trunk] Changeset 257 by mikael
mikael
parents: 240
diff changeset
1017
638
f6946251acdf "/add" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 636
diff changeset
1018 if (!id)
f6946251acdf "/add" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 636
diff changeset
1019 nick = NULL; // Allow things like: /add "" nick
641
62679532ea55 Allow special jid "." in commands /add and /status_to
Mikael Berthe <mikael@lilotux.net>
parents: 640
diff changeset
1020 else if (!*id || !strcmp(id, "."))
638
f6946251acdf "/add" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 636
diff changeset
1021 id = NULL;
f6946251acdf "/add" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 636
diff changeset
1022
f6946251acdf "/add" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 636
diff changeset
1023 if (id) {
f6946251acdf "/add" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 636
diff changeset
1024 // The JID has been specified. Quick check...
f6946251acdf "/add" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 636
diff changeset
1025 if (check_jid_syntax(id)) {
1064
516b5f7d1023 Fix some UTF-8 related problems
Mikael Berthe <mikael@lilotux.net>
parents: 1059
diff changeset
1026 scr_LogPrint(LPRINT_NORMAL|LPRINT_NOTUTF8,
516b5f7d1023 Fix some UTF-8 related problems
Mikael Berthe <mikael@lilotux.net>
parents: 1059
diff changeset
1027 "<%s> is not a valid Jabber ID.", id);
638
f6946251acdf "/add" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 636
diff changeset
1028 id = NULL;
f6946251acdf "/add" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 636
diff changeset
1029 } else {
f6946251acdf "/add" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 636
diff changeset
1030 mc_strtolower(id);
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
1031 id = jid_utf8 = to_utf8(id);
638
f6946251acdf "/add" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 636
diff changeset
1032 }
f6946251acdf "/add" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 636
diff changeset
1033 } else {
f6946251acdf "/add" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 636
diff changeset
1034 // Add the current buddy
f6946251acdf "/add" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 636
diff changeset
1035 if (current_buddy)
f6946251acdf "/add" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 636
diff changeset
1036 id = (char*)buddy_getjid(BUDDATA(current_buddy));
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
1037 if (!id)
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
1038 scr_LogPrint(LPRINT_NORMAL, "Please specify a Jabber ID.");
638
f6946251acdf "/add" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 636
diff changeset
1039 }
f6946251acdf "/add" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 636
diff changeset
1040
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
1041 if (nick)
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
1042 nick = to_utf8(nick);
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
1043
638
f6946251acdf "/add" can be used with no jid (it will use the current buddy's jid)
Mikael Berthe <mikael@lilotux.net>
parents: 636
diff changeset
1044 if (id) {
452
dfd9c62b3a39 Jabber Id syntax checks
Mikael Berthe <mikael@lilotux.net>
parents: 449
diff changeset
1045 // 2nd parameter = optional nickname
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
1046 xmpp_addbuddy(id, nick, NULL);
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
1047 scr_LogPrint(LPRINT_LOGNORM, "Sent presence notification request to <%s>.",
452
dfd9c62b3a39 Jabber Id syntax checks
Mikael Berthe <mikael@lilotux.net>
parents: 449
diff changeset
1048 id);
dfd9c62b3a39 Jabber Id syntax checks
Mikael Berthe <mikael@lilotux.net>
parents: 449
diff changeset
1049 }
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
1050
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
1051 g_free(jid_utf8);
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
1052 g_free(nick);
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
1053 free_arg_lst(paramlst);
124
6d2122c003c4 [/trunk] Changeset 137 by mikael
mikael
parents: 120
diff changeset
1054 }
128
81ccb1091dd8 [/trunk] Changeset 141 by mikael
mikael
parents: 127
diff changeset
1055
336
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
1056 static void do_del(char *arg)
206
766167c0c57f [/trunk] Changeset 218 by mikael
mikael
parents: 205
diff changeset
1057 {
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1058 const char *bjid;
206
766167c0c57f [/trunk] Changeset 218 by mikael
mikael
parents: 205
diff changeset
1059
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
1060 if (*arg) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
1061 scr_LogPrint(LPRINT_NORMAL, "This action does not require a parameter; "
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
1062 "the currently-selected buddy will be deleted.");
206
766167c0c57f [/trunk] Changeset 218 by mikael
mikael
parents: 205
diff changeset
1063 return;
766167c0c57f [/trunk] Changeset 218 by mikael
mikael
parents: 205
diff changeset
1064 }
766167c0c57f [/trunk] Changeset 218 by mikael
mikael
parents: 205
diff changeset
1065
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1066 if (!current_buddy)
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1067 return;
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1068 bjid = buddy_getjid(BUDDATA(current_buddy));
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1069 if (!bjid)
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1070 return;
206
766167c0c57f [/trunk] Changeset 218 by mikael
mikael
parents: 205
diff changeset
1071
540
887c1bd37617 Prevent deletion from rooms we haven't left
Mikael Berthe <mikael@lilotux.net>
parents: 539
diff changeset
1072 if (buddy_gettype(BUDDATA(current_buddy)) & ROSTER_TYPE_ROOM) {
887c1bd37617 Prevent deletion from rooms we haven't left
Mikael Berthe <mikael@lilotux.net>
parents: 539
diff changeset
1073 // This is a chatroom
652
b243d3b3ff1b We do not need buddy_isresource() anymore
Mikael Berthe <mikael@lilotux.net>
parents: 650
diff changeset
1074 if (buddy_getinsideroom(BUDDATA(current_buddy))) {
540
887c1bd37617 Prevent deletion from rooms we haven't left
Mikael Berthe <mikael@lilotux.net>
parents: 539
diff changeset
1075 scr_LogPrint(LPRINT_NORMAL, "You haven't left this room!");
887c1bd37617 Prevent deletion from rooms we haven't left
Mikael Berthe <mikael@lilotux.net>
parents: 539
diff changeset
1076 return;
887c1bd37617 Prevent deletion from rooms we haven't left
Mikael Berthe <mikael@lilotux.net>
parents: 539
diff changeset
1077 }
887c1bd37617 Prevent deletion from rooms we haven't left
Mikael Berthe <mikael@lilotux.net>
parents: 539
diff changeset
1078 }
887c1bd37617 Prevent deletion from rooms we haven't left
Mikael Berthe <mikael@lilotux.net>
parents: 539
diff changeset
1079
1165
d5b26a0a9771 Close a buffer when using /del
Mikael Berthe <mikael@lilotux.net>
parents: 1163
diff changeset
1080 // Close the buffer
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
1081 scr_buffer_purge(1, NULL);
1165
d5b26a0a9771 Close a buffer when using /del
Mikael Berthe <mikael@lilotux.net>
parents: 1163
diff changeset
1082
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1083 scr_LogPrint(LPRINT_LOGNORM, "Removing <%s>...", bjid);
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
1084 xmpp_delbuddy(bjid);
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
1085 scr_update_buddy_window();
206
766167c0c57f [/trunk] Changeset 218 by mikael
mikael
parents: 205
diff changeset
1086 }
766167c0c57f [/trunk] Changeset 218 by mikael
mikael
parents: 205
diff changeset
1087
336
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
1088 static void do_group(char *arg)
128
81ccb1091dd8 [/trunk] Changeset 141 by mikael
mikael
parents: 127
diff changeset
1089 {
1351
43e777a5ff06 The group name can be specified in the /group command
Mikael Berthe <mikael@lilotux.net>
parents: 1350
diff changeset
1090 gpointer group = NULL;
958
30b799632653 Cosmetics (change a variable name)
Mikael Berthe <mikael@lilotux.net>
parents: 957
diff changeset
1091 guint leave_buddywindow;
1351
43e777a5ff06 The group name can be specified in the /group command
Mikael Berthe <mikael@lilotux.net>
parents: 1350
diff changeset
1092 char **paramlst;
43e777a5ff06 The group name can be specified in the /group command
Mikael Berthe <mikael@lilotux.net>
parents: 1350
diff changeset
1093 char *subcmd;
1410
0cb4361c85a7 Pressing enter when a group is selected will toggle the fold status (franky)
Mikael Berthe <mikael@lilotux.net>
parents: 1395
diff changeset
1094 enum { group_toggle = -1, group_unfold = 0, group_fold = 1 } group_state = 0;
128
81ccb1091dd8 [/trunk] Changeset 141 by mikael
mikael
parents: 127
diff changeset
1095
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
1096 if (!*arg) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
1097 scr_LogPrint(LPRINT_NORMAL, "Missing parameter.");
128
81ccb1091dd8 [/trunk] Changeset 141 by mikael
mikael
parents: 127
diff changeset
1098 return;
81ccb1091dd8 [/trunk] Changeset 141 by mikael
mikael
parents: 127
diff changeset
1099 }
81ccb1091dd8 [/trunk] Changeset 141 by mikael
mikael
parents: 127
diff changeset
1100
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1101 if (!current_buddy)
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1102 return;
128
81ccb1091dd8 [/trunk] Changeset 141 by mikael
mikael
parents: 127
diff changeset
1103
1508
86620c83123b Handle quotes in group commands
Mikael Berthe <mikael@lilotux.net>
parents: 1507
diff changeset
1104 paramlst = split_arg(arg, 2, 0); // subcmd, [arg]
1351
43e777a5ff06 The group name can be specified in the /group command
Mikael Berthe <mikael@lilotux.net>
parents: 1350
diff changeset
1105 subcmd = *paramlst;
43e777a5ff06 The group name can be specified in the /group command
Mikael Berthe <mikael@lilotux.net>
parents: 1350
diff changeset
1106 arg = *(paramlst+1);
43e777a5ff06 The group name can be specified in the /group command
Mikael Berthe <mikael@lilotux.net>
parents: 1350
diff changeset
1107
43e777a5ff06 The group name can be specified in the /group command
Mikael Berthe <mikael@lilotux.net>
parents: 1350
diff changeset
1108 if (!subcmd || !*subcmd)
43e777a5ff06 The group name can be specified in the /group command
Mikael Berthe <mikael@lilotux.net>
parents: 1350
diff changeset
1109 goto do_group_return; // Should not happen anyway
43e777a5ff06 The group name can be specified in the /group command
Mikael Berthe <mikael@lilotux.net>
parents: 1350
diff changeset
1110
43e777a5ff06 The group name can be specified in the /group command
Mikael Berthe <mikael@lilotux.net>
parents: 1350
diff changeset
1111 if (arg && *arg) {
43e777a5ff06 The group name can be specified in the /group command
Mikael Berthe <mikael@lilotux.net>
parents: 1350
diff changeset
1112 GSList *roster_elt;
1506
8a63d4514503 Fix encoding issue in /group command
Mikael Berthe <mikael@lilotux.net>
parents: 1503
diff changeset
1113 char *group_utf8 = to_utf8(arg);
8a63d4514503 Fix encoding issue in /group command
Mikael Berthe <mikael@lilotux.net>
parents: 1503
diff changeset
1114 roster_elt = roster_find(group_utf8, namesearch, ROSTER_TYPE_GROUP);
8a63d4514503 Fix encoding issue in /group command
Mikael Berthe <mikael@lilotux.net>
parents: 1503
diff changeset
1115 g_free(group_utf8);
1351
43e777a5ff06 The group name can be specified in the /group command
Mikael Berthe <mikael@lilotux.net>
parents: 1350
diff changeset
1116 if (roster_elt)
43e777a5ff06 The group name can be specified in the /group command
Mikael Berthe <mikael@lilotux.net>
parents: 1350
diff changeset
1117 group = buddy_getgroup(roster_elt->data);
43e777a5ff06 The group name can be specified in the /group command
Mikael Berthe <mikael@lilotux.net>
parents: 1350
diff changeset
1118 } else {
43e777a5ff06 The group name can be specified in the /group command
Mikael Berthe <mikael@lilotux.net>
parents: 1350
diff changeset
1119 group = buddy_getgroup(BUDDATA(current_buddy));
43e777a5ff06 The group name can be specified in the /group command
Mikael Berthe <mikael@lilotux.net>
parents: 1350
diff changeset
1120 }
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1121 if (!group)
1351
43e777a5ff06 The group name can be specified in the /group command
Mikael Berthe <mikael@lilotux.net>
parents: 1350
diff changeset
1122 goto do_group_return;
853
bdd526ec62bc Fix segfault when using /group with the [status] entry
Mikael Berthe <mikael@lilotux.net>
parents: 848
diff changeset
1123
212
465d98d2f8e3 [/trunk] Changeset 224 by mikael
mikael
parents: 210
diff changeset
1124 // We'll have to redraw the chat window if we're not currently on the group
465d98d2f8e3 [/trunk] Changeset 224 by mikael
mikael
parents: 210
diff changeset
1125 // entry itself, because it means we'll have to leave the current buddy
465d98d2f8e3 [/trunk] Changeset 224 by mikael
mikael
parents: 210
diff changeset
1126 // chat window.
1360
8613d3f4ae91 Improve command /group
Mikael Berthe <mikael@lilotux.net>
parents: 1359
diff changeset
1127 leave_buddywindow = (group != BUDDATA(current_buddy) &&
8613d3f4ae91 Improve command /group
Mikael Berthe <mikael@lilotux.net>
parents: 1359
diff changeset
1128 group == buddy_getgroup(BUDDATA(current_buddy)));
8613d3f4ae91 Improve command /group
Mikael Berthe <mikael@lilotux.net>
parents: 1359
diff changeset
1129
166
aa5b635520ef [/trunk] Changeset 178 by mikael
mikael
parents: 164
diff changeset
1130
128
81ccb1091dd8 [/trunk] Changeset 141 by mikael
mikael
parents: 127
diff changeset
1131 if (!(buddy_gettype(group) & ROSTER_TYPE_GROUP)) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
1132 scr_LogPrint(LPRINT_NORMAL, "You need to select a group.");
1351
43e777a5ff06 The group name can be specified in the /group command
Mikael Berthe <mikael@lilotux.net>
parents: 1350
diff changeset
1133 goto do_group_return;
128
81ccb1091dd8 [/trunk] Changeset 141 by mikael
mikael
parents: 127
diff changeset
1134 }
166
aa5b635520ef [/trunk] Changeset 178 by mikael
mikael
parents: 164
diff changeset
1135
1360
8613d3f4ae91 Improve command /group
Mikael Berthe <mikael@lilotux.net>
parents: 1359
diff changeset
1136 if (!strcasecmp(subcmd, "expand") || !strcasecmp(subcmd, "unfold"))
8613d3f4ae91 Improve command /group
Mikael Berthe <mikael@lilotux.net>
parents: 1359
diff changeset
1137 group_state = group_unfold;
8613d3f4ae91 Improve command /group
Mikael Berthe <mikael@lilotux.net>
parents: 1359
diff changeset
1138 else if (!strcasecmp(subcmd, "shrink") || !strcasecmp(subcmd, "fold"))
8613d3f4ae91 Improve command /group
Mikael Berthe <mikael@lilotux.net>
parents: 1359
diff changeset
1139 group_state = group_fold;
8613d3f4ae91 Improve command /group
Mikael Berthe <mikael@lilotux.net>
parents: 1359
diff changeset
1140 else if (!strcasecmp(subcmd, "toggle"))
8613d3f4ae91 Improve command /group
Mikael Berthe <mikael@lilotux.net>
parents: 1359
diff changeset
1141 group_state = group_toggle;
8613d3f4ae91 Improve command /group
Mikael Berthe <mikael@lilotux.net>
parents: 1359
diff changeset
1142 else {
374
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 371
diff changeset
1143 scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!");
1351
43e777a5ff06 The group name can be specified in the /group command
Mikael Berthe <mikael@lilotux.net>
parents: 1350
diff changeset
1144 goto do_group_return;
128
81ccb1091dd8 [/trunk] Changeset 141 by mikael
mikael
parents: 127
diff changeset
1145 }
81ccb1091dd8 [/trunk] Changeset 141 by mikael
mikael
parents: 127
diff changeset
1146
1360
8613d3f4ae91 Improve command /group
Mikael Berthe <mikael@lilotux.net>
parents: 1359
diff changeset
1147 if (group_state != group_unfold && leave_buddywindow)
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
1148 scr_roster_prev_group();
1360
8613d3f4ae91 Improve command /group
Mikael Berthe <mikael@lilotux.net>
parents: 1359
diff changeset
1149
1410
0cb4361c85a7 Pressing enter when a group is selected will toggle the fold status (franky)
Mikael Berthe <mikael@lilotux.net>
parents: 1395
diff changeset
1150 buddy_hide_group(group, group_state);
1360
8613d3f4ae91 Improve command /group
Mikael Berthe <mikael@lilotux.net>
parents: 1359
diff changeset
1151
128
81ccb1091dd8 [/trunk] Changeset 141 by mikael
mikael
parents: 127
diff changeset
1152 buddylist_build();
81ccb1091dd8 [/trunk] Changeset 141 by mikael
mikael
parents: 127
diff changeset
1153 update_roster = TRUE;
1351
43e777a5ff06 The group name can be specified in the /group command
Mikael Berthe <mikael@lilotux.net>
parents: 1350
diff changeset
1154
43e777a5ff06 The group name can be specified in the /group command
Mikael Berthe <mikael@lilotux.net>
parents: 1350
diff changeset
1155 do_group_return:
43e777a5ff06 The group name can be specified in the /group command
Mikael Berthe <mikael@lilotux.net>
parents: 1350
diff changeset
1156 free_arg_lst(paramlst);
128
81ccb1091dd8 [/trunk] Changeset 141 by mikael
mikael
parents: 127
diff changeset
1157 }
81ccb1091dd8 [/trunk] Changeset 141 by mikael
mikael
parents: 127
diff changeset
1158
1305
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1159 static int send_message_to(const char *fjid, const char *msg, const char *subj,
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
1160 LmMessageSubType type_overwrite, bool quiet)
636
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1161 {
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1162 char *bare_jid, *rp;
807
f6cda389db48 Allow messages with a subject (/msay)
Mikael Berthe <mikael@lilotux.net>
parents: 797
diff changeset
1163 char *hmsg;
1197
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
1164 gint crypted;
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
1165 gint retval = 0;
1305
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1166 int isroom;
1602
f4a2c6f767d1 Message Receipts support (XEP-0184)
franky
parents: 1599
diff changeset
1167 gpointer xep184 = NULL;
1305
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1168
1684
95df4ea512c8 Provide xmpp_is_online()
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1682
diff changeset
1169 if (!xmpp_is_online()) {
1305
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1170 scr_LogPrint(LPRINT_NORMAL, "You are not connected.");
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1171 return 1;
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1172 }
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1173 if (!fjid || !*fjid) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
1174 scr_LogPrint(LPRINT_NORMAL, "You must specify a Jabber ID.");
636
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1175 return 1;
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1176 }
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1177 if (!msg || !*msg) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
1178 scr_LogPrint(LPRINT_NORMAL, "You must specify a message.");
636
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1179 return 1;
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1180 }
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1181 if (check_jid_syntax((char*)fjid)) {
1064
516b5f7d1023 Fix some UTF-8 related problems
Mikael Berthe <mikael@lilotux.net>
parents: 1059
diff changeset
1182 scr_LogPrint(LPRINT_NORMAL|LPRINT_NOTUTF8,
516b5f7d1023 Fix some UTF-8 related problems
Mikael Berthe <mikael@lilotux.net>
parents: 1059
diff changeset
1183 "<%s> is not a valid Jabber ID.", fjid);
636
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1184 return 1;
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1185 }
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1186
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1187 // We must use the bare jid in hk_message_out()
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1188 rp = strchr(fjid, JID_RESOURCE_SEPARATOR);
1430
12847b0ea8c9 Add an option "-q" (quiet) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1429
diff changeset
1189 if (rp)
12847b0ea8c9 Add an option "-q" (quiet) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1429
diff changeset
1190 bare_jid = g_strndup(fjid, rp - fjid);
12847b0ea8c9 Add an option "-q" (quiet) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1429
diff changeset
1191 else
12847b0ea8c9 Add an option "-q" (quiet) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1429
diff changeset
1192 bare_jid = (char*)fjid;
12847b0ea8c9 Add an option "-q" (quiet) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1429
diff changeset
1193
12847b0ea8c9 Add an option "-q" (quiet) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1429
diff changeset
1194 if (!quiet) {
12847b0ea8c9 Add an option "-q" (quiet) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1429
diff changeset
1195 // Jump to window, create one if needed
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
1196 scr_roster_jump_jid(bare_jid);
1430
12847b0ea8c9 Add an option "-q" (quiet) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1429
diff changeset
1197 }
636
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1198
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1199 // Check if we're sending a message to a conference room
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1200 // If not, we must make sure rp is NULL, for hk_message_out()
1305
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1201 isroom = !!roster_find(bare_jid, jidsearch, ROSTER_TYPE_ROOM);
636
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1202 if (rp) {
1305
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1203 if (isroom) rp++;
636
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1204 else rp = NULL;
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1205 }
1305
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1206 isroom = isroom && (!rp || !*rp);
636
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1207
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1208 // local part (UI, logging, etc.)
807
f6cda389db48 Allow messages with a subject (/msay)
Mikael Berthe <mikael@lilotux.net>
parents: 797
diff changeset
1209 if (subj)
f6cda389db48 Allow messages with a subject (/msay)
Mikael Berthe <mikael@lilotux.net>
parents: 797
diff changeset
1210 hmsg = g_strdup_printf("[%s]\n%s", subj, msg);
f6cda389db48 Allow messages with a subject (/msay)
Mikael Berthe <mikael@lilotux.net>
parents: 797
diff changeset
1211 else
f6cda389db48 Allow messages with a subject (/msay)
Mikael Berthe <mikael@lilotux.net>
parents: 797
diff changeset
1212 hmsg = (char*)msg;
f6cda389db48 Allow messages with a subject (/msay)
Mikael Berthe <mikael@lilotux.net>
parents: 797
diff changeset
1213
1055
6eb1efea75d0 PGP: Visual encryption flag
Mikael Berthe <mikael@lilotux.net>
parents: 1050
diff changeset
1214 // Network part
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
1215 xmpp_send_msg(fjid, msg, (isroom ? ROSTER_TYPE_ROOM : ROSTER_TYPE_USER),
1602
f4a2c6f767d1 Message Receipts support (XEP-0184)
franky
parents: 1599
diff changeset
1216 subj, FALSE, &crypted, type_overwrite, &xep184);
636
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1217
1197
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
1218 if (crypted == -1) {
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
1219 scr_LogPrint(LPRINT_LOGNORM, "Encryption error. Message was not sent.");
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
1220 retval = 1;
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
1221 goto send_message_to_return;
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
1222 }
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
1223
1055
6eb1efea75d0 PGP: Visual encryption flag
Mikael Berthe <mikael@lilotux.net>
parents: 1050
diff changeset
1224 // Hook
1333
e30a9d907105 Minor coding style adjustments
Mikael Berthe <mikael@lilotux.net>
parents: 1329
diff changeset
1225 if (!isroom)
1602
f4a2c6f767d1 Message Receipts support (XEP-0184)
franky
parents: 1599
diff changeset
1226 hk_message_out(bare_jid, rp, 0, hmsg, crypted, xep184);
1197
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
1227
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
1228 send_message_to_return:
1055
6eb1efea75d0 PGP: Visual encryption flag
Mikael Berthe <mikael@lilotux.net>
parents: 1050
diff changeset
1229 if (hmsg != msg) g_free(hmsg);
636
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1230 if (rp) g_free(bare_jid);
1197
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
1231 return retval;
636
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1232 }
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1233
1305
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1234 // send_message(msg, subj, type_overwrite)
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1235 // Write the message in the buddy's window and send the message on
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1236 // the network.
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1237 static void send_message(const char *msg, const char *subj,
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
1238 LmMessageSubType type_overwrite)
1305
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1239 {
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1240 const char *bjid;
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1241
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1242 if (!current_buddy) {
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1243 scr_LogPrint(LPRINT_NORMAL, "No buddy is currently selected.");
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1244 return;
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1245 }
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1246
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1247 bjid = CURRENT_JID;
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1248 if (!bjid) {
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1249 scr_LogPrint(LPRINT_NORMAL, "No buddy is currently selected.");
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1250 return;
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1251 }
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1252
1430
12847b0ea8c9 Add an option "-q" (quiet) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1429
diff changeset
1253 send_message_to(bjid, msg, subj, type_overwrite, FALSE);
1305
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1254 }
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1255
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
1256 static LmMessageSubType scan_mtype(char **arg)
1305
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1257 {
1729
e6e89b1d7831 Minor style and header updates
Mikael Berthe <mikael@lilotux.net>
parents: 1726
diff changeset
1258 // Try splitting it
1305
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1259 char **parlist = split_arg(*arg, 2, 1);
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
1260 LmMessageSubType result = LM_MESSAGE_SUB_TYPE_NOT_SET;
1729
e6e89b1d7831 Minor style and header updates
Mikael Berthe <mikael@lilotux.net>
parents: 1726
diff changeset
1261 // Is it a good parameter?
1333
e30a9d907105 Minor coding style adjustments
Mikael Berthe <mikael@lilotux.net>
parents: 1329
diff changeset
1262 if (parlist && *parlist) {
e30a9d907105 Minor coding style adjustments
Mikael Berthe <mikael@lilotux.net>
parents: 1329
diff changeset
1263 if (!strcmp("-n", *parlist)) {
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
1264 result = LM_MESSAGE_SUB_TYPE_NORMAL;
1333
e30a9d907105 Minor coding style adjustments
Mikael Berthe <mikael@lilotux.net>
parents: 1329
diff changeset
1265 } else if (!strcmp("-h", *parlist)) {
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
1266 result = LM_MESSAGE_SUB_TYPE_HEADLINE;
1305
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1267 }
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
1268 if (result != LM_MESSAGE_SUB_TYPE_NOT_SET || (!strcmp("--", *parlist)))
1305
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1269 *arg += strlen(*arg) - (parlist[1] ? strlen(parlist[1]) : 0);
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1270 }
1729
e6e89b1d7831 Minor style and header updates
Mikael Berthe <mikael@lilotux.net>
parents: 1726
diff changeset
1271 // Anything found? -> skip it
1305
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1272 free_arg_lst(parlist);
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1273 return result;
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1274 }
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1275
1740
391863b7952c Rename do_say_internal() and export it as say_cmd()
Mikael Berthe <mikael@lilotux.net>
parents: 1737
diff changeset
1276 void say_cmd(char *arg, int parse_flags)
132
6531bcf030ae [/trunk] Changeset 145 by mikael
mikael
parents: 130
diff changeset
1277 {
164
faf534be8ff0 [/trunk] Changeset 176 by mikael
mikael
parents: 132
diff changeset
1278 gpointer bud;
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
1279 LmMessageSubType msgtype = LM_MESSAGE_SUB_TYPE_NOT_SET;
132
6531bcf030ae [/trunk] Changeset 145 by mikael
mikael
parents: 130
diff changeset
1280
6531bcf030ae [/trunk] Changeset 145 by mikael
mikael
parents: 130
diff changeset
1281 scr_set_chatmode(TRUE);
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
1282 scr_show_buddy_window();
164
faf534be8ff0 [/trunk] Changeset 176 by mikael
mikael
parents: 132
diff changeset
1283
faf534be8ff0 [/trunk] Changeset 176 by mikael
mikael
parents: 132
diff changeset
1284 if (!current_buddy) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
1285 scr_LogPrint(LPRINT_NORMAL,
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
1286 "Whom are you talking to? Please select a buddy.");
164
faf534be8ff0 [/trunk] Changeset 176 by mikael
mikael
parents: 132
diff changeset
1287 return;
132
6531bcf030ae [/trunk] Changeset 145 by mikael
mikael
parents: 130
diff changeset
1288 }
164
faf534be8ff0 [/trunk] Changeset 176 by mikael
mikael
parents: 132
diff changeset
1289
faf534be8ff0 [/trunk] Changeset 176 by mikael
mikael
parents: 132
diff changeset
1290 bud = BUDDATA(current_buddy);
631
423c24e5875a Allow sending a message to an agent
Mikael Berthe <mikael@lilotux.net>
parents: 626
diff changeset
1291 if (!(buddy_gettype(bud) &
423c24e5875a Allow sending a message to an agent
Mikael Berthe <mikael@lilotux.net>
parents: 626
diff changeset
1292 (ROSTER_TYPE_USER|ROSTER_TYPE_AGENT|ROSTER_TYPE_ROOM))) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
1293 scr_LogPrint(LPRINT_NORMAL, "This is not a user.");
164
faf534be8ff0 [/trunk] Changeset 176 by mikael
mikael
parents: 132
diff changeset
1294 return;
faf534be8ff0 [/trunk] Changeset 176 by mikael
mikael
parents: 132
diff changeset
1295 }
faf534be8ff0 [/trunk] Changeset 176 by mikael
mikael
parents: 132
diff changeset
1296
faf534be8ff0 [/trunk] Changeset 176 by mikael
mikael
parents: 132
diff changeset
1297 buddy_setflags(bud, ROSTER_FLAG_LOCK, TRUE);
1333
e30a9d907105 Minor coding style adjustments
Mikael Berthe <mikael@lilotux.net>
parents: 1329
diff changeset
1298 if (parse_flags)
1305
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1299 msgtype = scan_mtype(&arg);
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
1300 arg = to_utf8(arg);
1305
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1301 send_message(arg, NULL, msgtype);
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
1302 g_free(arg);
132
6531bcf030ae [/trunk] Changeset 145 by mikael
mikael
parents: 130
diff changeset
1303 }
6531bcf030ae [/trunk] Changeset 145 by mikael
mikael
parents: 130
diff changeset
1304
1305
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1305 static void do_say(char *arg) {
1740
391863b7952c Rename do_say_internal() and export it as say_cmd()
Mikael Berthe <mikael@lilotux.net>
parents: 1737
diff changeset
1306 say_cmd(arg, 1);
1305
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1307 }
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1308
336
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
1309 static void do_msay(char *arg)
238
8e30b2bb380e [/trunk] Changeset 251 by mikael
mikael
parents: 236
diff changeset
1310 {
636
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1311 /* Parameters: begin verbatim abort send send_to */
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1312 char **paramlst;
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1313 char *subcmd;
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1314
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1315 paramlst = split_arg(arg, 2, 1); // subcmd, arg
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1316 subcmd = *paramlst;
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1317 arg = *(paramlst+1);
238
8e30b2bb380e [/trunk] Changeset 251 by mikael
mikael
parents: 236
diff changeset
1318
636
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1319 if (!subcmd || !*subcmd) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
1320 scr_LogPrint(LPRINT_NORMAL, "Missing parameter.");
636
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1321 scr_LogPrint(LPRINT_NORMAL, "Please read the manual before using "
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1322 "the /msay command.");
967
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
1323 scr_LogPrint(LPRINT_NORMAL, "(Use \"%s begin\" to enter "
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
1324 "multi-line mode...)", mkcmdstr("msay"));
1073
253e8988eb5c Fix a few memory leaks after calls to split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 1072
diff changeset
1325 goto do_msay_return;
636
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1326 }
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1327
796
79c8823da808 Add "/msay toggle" command
Mikael Berthe <mikael@lilotux.net>
parents: 791
diff changeset
1328 if (!strcasecmp(subcmd, "toggle")) {
79c8823da808 Add "/msay toggle" command
Mikael Berthe <mikael@lilotux.net>
parents: 791
diff changeset
1329 if (scr_get_multimode())
79c8823da808 Add "/msay toggle" command
Mikael Berthe <mikael@lilotux.net>
parents: 791
diff changeset
1330 subcmd = "send";
79c8823da808 Add "/msay toggle" command
Mikael Berthe <mikael@lilotux.net>
parents: 791
diff changeset
1331 else
79c8823da808 Add "/msay toggle" command
Mikael Berthe <mikael@lilotux.net>
parents: 791
diff changeset
1332 subcmd = "begin";
838
ea1204c8a30b Add "/msay toggle_verbatim"
Mikael Berthe <mikael@lilotux.net>
parents: 837
diff changeset
1333 } else if (!strcasecmp(subcmd, "toggle_verbatim")) {
ea1204c8a30b Add "/msay toggle_verbatim"
Mikael Berthe <mikael@lilotux.net>
parents: 837
diff changeset
1334 if (scr_get_multimode())
ea1204c8a30b Add "/msay toggle_verbatim"
Mikael Berthe <mikael@lilotux.net>
parents: 837
diff changeset
1335 subcmd = "send";
ea1204c8a30b Add "/msay toggle_verbatim"
Mikael Berthe <mikael@lilotux.net>
parents: 837
diff changeset
1336 else
ea1204c8a30b Add "/msay toggle_verbatim"
Mikael Berthe <mikael@lilotux.net>
parents: 837
diff changeset
1337 subcmd = "verbatim";
796
79c8823da808 Add "/msay toggle" command
Mikael Berthe <mikael@lilotux.net>
parents: 791
diff changeset
1338 }
79c8823da808 Add "/msay toggle" command
Mikael Berthe <mikael@lilotux.net>
parents: 791
diff changeset
1339
636
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1340 if (!strcasecmp(subcmd, "abort")) {
315
65aa05520556 First Ctrl-C now also leaves multi-line message mode
Mikael Berthe <mikael@lilotux.net>
parents: 310
diff changeset
1341 if (scr_get_multimode())
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
1342 scr_LogPrint(LPRINT_NORMAL, "Leaving multi-line message mode.");
807
f6cda389db48 Allow messages with a subject (/msay)
Mikael Berthe <mikael@lilotux.net>
parents: 797
diff changeset
1343 scr_set_multimode(FALSE, NULL);
1073
253e8988eb5c Fix a few memory leaks after calls to split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 1072
diff changeset
1344 goto do_msay_return;
636
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1345 } else if ((!strcasecmp(subcmd, "begin")) ||
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1346 (!strcasecmp(subcmd, "verbatim"))) {
840
2903fd66c3ad Be more verbose about verbatim mode
Mikael Berthe <mikael@lilotux.net>
parents: 838
diff changeset
1347 bool verbat;
807
f6cda389db48 Allow messages with a subject (/msay)
Mikael Berthe <mikael@lilotux.net>
parents: 797
diff changeset
1348 gchar *subj_utf8 = to_utf8(arg);
840
2903fd66c3ad Be more verbose about verbatim mode
Mikael Berthe <mikael@lilotux.net>
parents: 838
diff changeset
1349 if (!strcasecmp(subcmd, "verbatim")) {
807
f6cda389db48 Allow messages with a subject (/msay)
Mikael Berthe <mikael@lilotux.net>
parents: 797
diff changeset
1350 scr_set_multimode(2, subj_utf8);
840
2903fd66c3ad Be more verbose about verbatim mode
Mikael Berthe <mikael@lilotux.net>
parents: 838
diff changeset
1351 verbat = TRUE;
2903fd66c3ad Be more verbose about verbatim mode
Mikael Berthe <mikael@lilotux.net>
parents: 838
diff changeset
1352 } else {
807
f6cda389db48 Allow messages with a subject (/msay)
Mikael Berthe <mikael@lilotux.net>
parents: 797
diff changeset
1353 scr_set_multimode(1, subj_utf8);
840
2903fd66c3ad Be more verbose about verbatim mode
Mikael Berthe <mikael@lilotux.net>
parents: 838
diff changeset
1354 verbat = FALSE;
2903fd66c3ad Be more verbose about verbatim mode
Mikael Berthe <mikael@lilotux.net>
parents: 838
diff changeset
1355 }
260
33e1a05864a6 Add "verbatim multi-line" mode, with commands disabled
mikael@frmp8452
parents: 244
diff changeset
1356
840
2903fd66c3ad Be more verbose about verbatim mode
Mikael Berthe <mikael@lilotux.net>
parents: 838
diff changeset
1357 scr_LogPrint(LPRINT_NORMAL, "Entered %smulti-line message mode.",
2903fd66c3ad Be more verbose about verbatim mode
Mikael Berthe <mikael@lilotux.net>
parents: 838
diff changeset
1358 verbat ? "VERBATIM " : "");
967
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
1359 scr_LogPrint(LPRINT_NORMAL, "Select a buddy and use \"%s send\" "
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
1360 "when your message is ready.", mkcmdstr("msay"));
840
2903fd66c3ad Be more verbose about verbatim mode
Mikael Berthe <mikael@lilotux.net>
parents: 838
diff changeset
1361 if (verbat)
967
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
1362 scr_LogPrint(LPRINT_NORMAL, "Use \"%s abort\" to abort this mode.",
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
1363 mkcmdstr("msay"));
807
f6cda389db48 Allow messages with a subject (/msay)
Mikael Berthe <mikael@lilotux.net>
parents: 797
diff changeset
1364 g_free(subj_utf8);
1073
253e8988eb5c Fix a few memory leaks after calls to split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 1072
diff changeset
1365 goto do_msay_return;
636
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1366 } else if (strcasecmp(subcmd, "send") && strcasecmp(subcmd, "send_to")) {
374
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 371
diff changeset
1367 scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!");
1073
253e8988eb5c Fix a few memory leaks after calls to split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 1072
diff changeset
1368 goto do_msay_return;
238
8e30b2bb380e [/trunk] Changeset 251 by mikael
mikael
parents: 236
diff changeset
1369 }
8e30b2bb380e [/trunk] Changeset 251 by mikael
mikael
parents: 236
diff changeset
1370
636
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1371 /* send/send_to command */
238
8e30b2bb380e [/trunk] Changeset 251 by mikael
mikael
parents: 236
diff changeset
1372
8e30b2bb380e [/trunk] Changeset 251 by mikael
mikael
parents: 236
diff changeset
1373 if (!scr_get_multimode()) {
374
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 371
diff changeset
1374 scr_LogPrint(LPRINT_NORMAL, "No message to send. "
967
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
1375 "Use \"%s begin\" first.", mkcmdstr("msay"));
1073
253e8988eb5c Fix a few memory leaks after calls to split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 1072
diff changeset
1376 goto do_msay_return;
238
8e30b2bb380e [/trunk] Changeset 251 by mikael
mikael
parents: 236
diff changeset
1377 }
8e30b2bb380e [/trunk] Changeset 251 by mikael
mikael
parents: 236
diff changeset
1378
8e30b2bb380e [/trunk] Changeset 251 by mikael
mikael
parents: 236
diff changeset
1379 scr_set_chatmode(TRUE);
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
1380 scr_show_buddy_window();
238
8e30b2bb380e [/trunk] Changeset 251 by mikael
mikael
parents: 236
diff changeset
1381
636
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1382 if (!strcasecmp(subcmd, "send_to")) {
797
5eb701c1bc1f Multi-line mode: Do not send empty messages
Mikael Berthe <mikael@lilotux.net>
parents: 796
diff changeset
1383 int err = FALSE;
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
1384 gchar *msg_utf8;
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
1385 LmMessageSubType msg_type = scan_mtype(&arg);
636
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1386 // Let's send to the specified JID. We leave now if there
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1387 // has been an error (so we don't leave multi-line mode).
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
1388 arg = to_utf8(arg);
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
1389 msg_utf8 = to_utf8(scr_get_multiline());
797
5eb701c1bc1f Multi-line mode: Do not send empty messages
Mikael Berthe <mikael@lilotux.net>
parents: 796
diff changeset
1390 if (msg_utf8) {
1430
12847b0ea8c9 Add an option "-q" (quiet) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1429
diff changeset
1391 err = send_message_to(arg, msg_utf8, scr_get_multimode_subj(), msg_type,
12847b0ea8c9 Add an option "-q" (quiet) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1429
diff changeset
1392 FALSE);
797
5eb701c1bc1f Multi-line mode: Do not send empty messages
Mikael Berthe <mikael@lilotux.net>
parents: 796
diff changeset
1393 g_free(msg_utf8);
5eb701c1bc1f Multi-line mode: Do not send empty messages
Mikael Berthe <mikael@lilotux.net>
parents: 796
diff changeset
1394 }
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
1395 g_free(arg);
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
1396 if (err)
1073
253e8988eb5c Fix a few memory leaks after calls to split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 1072
diff changeset
1397 goto do_msay_return;
636
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1398 } else { // Send to currently selected buddy
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1399 gpointer bud;
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
1400 gchar *msg_utf8;
238
8e30b2bb380e [/trunk] Changeset 251 by mikael
mikael
parents: 236
diff changeset
1401
636
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1402 if (!current_buddy) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
1403 scr_LogPrint(LPRINT_NORMAL, "Whom are you talking to?");
1073
253e8988eb5c Fix a few memory leaks after calls to split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 1072
diff changeset
1404 goto do_msay_return;
636
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1405 }
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1406
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1407 bud = BUDDATA(current_buddy);
1181
807815928754 Allow sending a multi-line message to an agent
Mikael Berthe <mikael@lilotux.net>
parents: 1177
diff changeset
1408 if (!(buddy_gettype(bud) &
807815928754 Allow sending a multi-line message to an agent
Mikael Berthe <mikael@lilotux.net>
parents: 1177
diff changeset
1409 (ROSTER_TYPE_USER|ROSTER_TYPE_AGENT|ROSTER_TYPE_ROOM))) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
1410 scr_LogPrint(LPRINT_NORMAL, "This is not a user.");
1073
253e8988eb5c Fix a few memory leaks after calls to split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 1072
diff changeset
1411 goto do_msay_return;
636
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1412 }
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1413
f84cce8382e8 Add "/msay send_to"
Mikael Berthe <mikael@lilotux.net>
parents: 631
diff changeset
1414 buddy_setflags(bud, ROSTER_FLAG_LOCK, TRUE);
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
1415 msg_utf8 = to_utf8(scr_get_multiline());
797
5eb701c1bc1f Multi-line mode: Do not send empty messages
Mikael Berthe <mikael@lilotux.net>
parents: 796
diff changeset
1416 if (msg_utf8) {
1305
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1417 send_message(msg_utf8, scr_get_multimode_subj(), scan_mtype(&arg));
797
5eb701c1bc1f Multi-line mode: Do not send empty messages
Mikael Berthe <mikael@lilotux.net>
parents: 796
diff changeset
1418 g_free(msg_utf8);
5eb701c1bc1f Multi-line mode: Do not send empty messages
Mikael Berthe <mikael@lilotux.net>
parents: 796
diff changeset
1419 }
238
8e30b2bb380e [/trunk] Changeset 251 by mikael
mikael
parents: 236
diff changeset
1420 }
807
f6cda389db48 Allow messages with a subject (/msay)
Mikael Berthe <mikael@lilotux.net>
parents: 797
diff changeset
1421 scr_set_multimode(FALSE, NULL);
797
5eb701c1bc1f Multi-line mode: Do not send empty messages
Mikael Berthe <mikael@lilotux.net>
parents: 796
diff changeset
1422 scr_LogPrint(LPRINT_NORMAL, "You have left multi-line message mode.");
1073
253e8988eb5c Fix a few memory leaks after calls to split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 1072
diff changeset
1423 do_msay_return:
253e8988eb5c Fix a few memory leaks after calls to split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 1072
diff changeset
1424 free_arg_lst(paramlst);
238
8e30b2bb380e [/trunk] Changeset 251 by mikael
mikael
parents: 236
diff changeset
1425 }
8e30b2bb380e [/trunk] Changeset 251 by mikael
mikael
parents: 236
diff changeset
1426
1432
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1427 // load_message_from_file(filename)
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1428 // Read the whole content of a file.
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1429 // The data are converted to UTF8, they should be freed by the caller after
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1430 // use.
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1431 char *load_message_from_file(const char *filename)
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1432 {
1434
bed2f0caa952 Expand filename in /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1433
diff changeset
1433 FILE *fd;
1432
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1434 struct stat buf;
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1435 char *msgbuf, *msgbuf_utf8;
1442
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1436 char *p;
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1437 char *next_utf8_char;
1443
0623d694a77f Forbid NUL characters when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1442
diff changeset
1438 size_t len;
1432
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1439
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1440 fd = fopen(filename, "r");
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1441
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1442 if (!fd || fstat(fileno(fd), &buf)) {
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1443 scr_LogPrint(LPRINT_LOGNORM, "Cannot open message file (%s)", filename);
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1444 return NULL;
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1445 }
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1446 if (!buf.st_size || buf.st_size >= HBB_BLOCKSIZE) {
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1447 if (!buf.st_size)
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1448 scr_LogPrint(LPRINT_LOGNORM, "Message file is empty (%s)", filename);
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1449 else
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1450 scr_LogPrint(LPRINT_LOGNORM, "Message file is too big (%s)", filename);
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1451 fclose(fd);
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1452 return NULL;
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1453 }
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1454
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1455 msgbuf = g_new0(char, HBB_BLOCKSIZE);
1443
0623d694a77f Forbid NUL characters when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1442
diff changeset
1456 len = fread(msgbuf, 1, HBB_BLOCKSIZE-1, fd);
1432
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1457 fclose(fd);
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1458
1442
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1459 next_utf8_char = msgbuf;
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1460
1443
0623d694a77f Forbid NUL characters when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1442
diff changeset
1461 // Check there is no binary data. It must be a *message* file!
1442
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1462 for (p = msgbuf ; *p ; p++) {
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1463 if (utf8_mode) {
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1464 if (p == next_utf8_char) {
1462
2b43d89a10bb Allow tab characters with /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1443
diff changeset
1465 if (!iswprint(get_char(p)) && *p != '\n' && *p != '\t')
1442
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1466 break;
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1467 next_utf8_char = next_char(p);
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1468 }
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1469 } else {
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1470 unsigned char sc = *p;
1462
2b43d89a10bb Allow tab characters with /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1443
diff changeset
1471 if (!iswprint(sc) && sc != '\n' && sc != '\t')
1442
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1472 break;
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1473 }
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1474 }
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1475
1443
0623d694a77f Forbid NUL characters when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1442
diff changeset
1476 if (*p || (size_t)(p-msgbuf) != len) { // We're not at the End Of Line...
1442
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1477 scr_LogPrint(LPRINT_LOGNORM, "Message file contains "
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1478 "invalid characters (%s)", filename);
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1479 g_free(msgbuf);
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1480 return NULL;
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1481 }
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1482
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1483 // p is now at the EOL
1443
0623d694a77f Forbid NUL characters when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1442
diff changeset
1484 // Let's strip trailing newlines
1442
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1485 if (p > msgbuf)
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1486 p--;
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1487 while (p > msgbuf && *p == '\n')
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1488 *p-- = 0;
1432
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1489
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1490 // It could be empty, once the trailing newlines are gone
1442
b49a1edba983 Check file content when using /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1435
diff changeset
1491 if (p == msgbuf && *p == '\n') {
1432
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1492 scr_LogPrint(LPRINT_LOGNORM, "Message file is empty (%s)", filename);
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1493 g_free(msgbuf);
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1494 return NULL;
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1495 }
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1496
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1497 msgbuf_utf8 = to_utf8(msgbuf);
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1498
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1499 if (!msgbuf_utf8 && msgbuf)
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1500 scr_LogPrint(LPRINT_LOGNORM, "Message file charset conversion error (%s)",
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1501 filename);
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1502 g_free(msgbuf);
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1503 return msgbuf_utf8;
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1504 }
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1505
480
882e1acae422 Add /say_to command
Mikael Berthe <mikael@lilotux.net>
parents: 475
diff changeset
1506 static void do_say_to(char *arg)
882e1acae422 Add /say_to command
Mikael Berthe <mikael@lilotux.net>
parents: 475
diff changeset
1507 {
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
1508 char **paramlst;
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1509 char *fjid, *msg;
1943
11bda6d8daab Add default server for private messages
Mikael Berthe <mikael@lilotux.net>
parents: 1939
diff changeset
1510 char *uncompletedfjid = NULL;
1432
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1511 char *file = NULL;
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
1512 LmMessageSubType msg_type = LM_MESSAGE_SUB_TYPE_NOT_SET;
1430
12847b0ea8c9 Add an option "-q" (quiet) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1429
diff changeset
1513 bool quiet = FALSE;
480
882e1acae422 Add /say_to command
Mikael Berthe <mikael@lilotux.net>
parents: 475
diff changeset
1514
1684
95df4ea512c8 Provide xmpp_is_online()
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1682
diff changeset
1515 if (!xmpp_is_online()) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
1516 scr_LogPrint(LPRINT_NORMAL, "You are not connected.");
480
882e1acae422 Add /say_to command
Mikael Berthe <mikael@lilotux.net>
parents: 475
diff changeset
1517 return;
882e1acae422 Add /say_to command
Mikael Berthe <mikael@lilotux.net>
parents: 475
diff changeset
1518 }
882e1acae422 Add /say_to command
Mikael Berthe <mikael@lilotux.net>
parents: 475
diff changeset
1519
1305
9bc68473f8a3 -n and -f flags to message-sending commands
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1301
diff changeset
1520 msg_type = scan_mtype(&arg);
1430
12847b0ea8c9 Add an option "-q" (quiet) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1429
diff changeset
1521 paramlst = split_arg(arg, 2, 1); // jid, message (or option, jid, message)
12847b0ea8c9 Add an option "-q" (quiet) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1429
diff changeset
1522
1432
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1523 if (!*paramlst) { // No parameter?
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1524 scr_LogPrint(LPRINT_NORMAL, "Please specify a Jabber ID.");
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1525 free_arg_lst(paramlst);
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1526 return;
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1527 }
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1528
1430
12847b0ea8c9 Add an option "-q" (quiet) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1429
diff changeset
1529 // Check for an option parameter
1562
248da27faff3 Fix segfault when using /say_to with a bad syntax (reported by ISBear)
Mikael Berthe <mikael@lilotux.net>
parents: 1528
diff changeset
1530 while (*paramlst) {
1432
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1531 if (!strcmp(*paramlst, "-q")) {
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1532 char **oldparamlst = paramlst;
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1533 paramlst = split_arg(*(oldparamlst+1), 2, 1); // jid, message
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1534 free_arg_lst(oldparamlst);
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1535 quiet = TRUE;
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1536 } else if (!strcmp(*paramlst, "-f")) {
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1537 char **oldparamlst = paramlst;
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1538 paramlst = split_arg(*(oldparamlst+1), 2, 1); // filename, jid
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1539 free_arg_lst(oldparamlst);
1562
248da27faff3 Fix segfault when using /say_to with a bad syntax (reported by ISBear)
Mikael Berthe <mikael@lilotux.net>
parents: 1528
diff changeset
1540 if (!*paramlst) {
248da27faff3 Fix segfault when using /say_to with a bad syntax (reported by ISBear)
Mikael Berthe <mikael@lilotux.net>
parents: 1528
diff changeset
1541 scr_LogPrint(LPRINT_NORMAL, "Wrong usage.");
1875
ad1f7e7c2745 Fix bug in /say_to introduced in changeset 5492b87ba9d0
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1861
diff changeset
1542 free_arg_lst(paramlst);
1562
248da27faff3 Fix segfault when using /say_to with a bad syntax (reported by ISBear)
Mikael Berthe <mikael@lilotux.net>
parents: 1528
diff changeset
1543 return;
248da27faff3 Fix segfault when using /say_to with a bad syntax (reported by ISBear)
Mikael Berthe <mikael@lilotux.net>
parents: 1528
diff changeset
1544 }
1432
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1545 file = g_strdup(*paramlst);
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1546 // One more parameter shift...
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1547 oldparamlst = paramlst;
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1548 paramlst = split_arg(*(oldparamlst+1), 2, 1); // jid, nothing
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1549 free_arg_lst(oldparamlst);
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1550 } else
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1551 break;
1430
12847b0ea8c9 Add an option "-q" (quiet) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1429
diff changeset
1552 }
12847b0ea8c9 Add an option "-q" (quiet) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1429
diff changeset
1553
1562
248da27faff3 Fix segfault when using /say_to with a bad syntax (reported by ISBear)
Mikael Berthe <mikael@lilotux.net>
parents: 1528
diff changeset
1554 if (!*paramlst) {
248da27faff3 Fix segfault when using /say_to with a bad syntax (reported by ISBear)
Mikael Berthe <mikael@lilotux.net>
parents: 1528
diff changeset
1555 scr_LogPrint(LPRINT_NORMAL, "Wrong usage.");
1875
ad1f7e7c2745 Fix bug in /say_to introduced in changeset 5492b87ba9d0
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1861
diff changeset
1556 free_arg_lst(paramlst);
1562
248da27faff3 Fix segfault when using /say_to with a bad syntax (reported by ISBear)
Mikael Berthe <mikael@lilotux.net>
parents: 1528
diff changeset
1557 return;
248da27faff3 Fix segfault when using /say_to with a bad syntax (reported by ISBear)
Mikael Berthe <mikael@lilotux.net>
parents: 1528
diff changeset
1558 }
248da27faff3 Fix segfault when using /say_to with a bad syntax (reported by ISBear)
Mikael Berthe <mikael@lilotux.net>
parents: 1528
diff changeset
1559
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1560 fjid = *paramlst;
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
1561 msg = *(paramlst+1);
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
1562
1875
ad1f7e7c2745 Fix bug in /say_to introduced in changeset 5492b87ba9d0
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1861
diff changeset
1563 if (fjid[0] == '.') {
ad1f7e7c2745 Fix bug in /say_to introduced in changeset 5492b87ba9d0
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1861
diff changeset
1564 const gchar *cjid = (current_buddy ? CURRENT_JID : NULL);
ad1f7e7c2745 Fix bug in /say_to introduced in changeset 5492b87ba9d0
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1861
diff changeset
1565 if (fjid[1] == '\0') {
ad1f7e7c2745 Fix bug in /say_to introduced in changeset 5492b87ba9d0
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1861
diff changeset
1566 fjid = g_strdup(cjid);
ad1f7e7c2745 Fix bug in /say_to introduced in changeset 5492b87ba9d0
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1861
diff changeset
1567 } else if (fjid[1] == JID_RESOURCE_SEPARATOR) {
ad1f7e7c2745 Fix bug in /say_to introduced in changeset 5492b87ba9d0
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1861
diff changeset
1568 char *res_utf8 = to_utf8(fjid+2);
ad1f7e7c2745 Fix bug in /say_to introduced in changeset 5492b87ba9d0
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1861
diff changeset
1569 fjid = g_strdup_printf("%s%c%s", cjid, JID_RESOURCE_SEPARATOR, res_utf8);
1861
81822de0edf6 Fix a potential encoding issue on non-UTF8 systems
Mikael Berthe <mikael@lilotux.net>
parents: 1860
diff changeset
1570 g_free(res_utf8);
1875
ad1f7e7c2745 Fix bug in /say_to introduced in changeset 5492b87ba9d0
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1861
diff changeset
1571 } else
ad1f7e7c2745 Fix bug in /say_to introduced in changeset 5492b87ba9d0
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1861
diff changeset
1572 fjid = to_utf8(fjid);
1861
81822de0edf6 Fix a potential encoding issue on non-UTF8 systems
Mikael Berthe <mikael@lilotux.net>
parents: 1860
diff changeset
1573 } else
81822de0edf6 Fix a potential encoding issue on non-UTF8 systems
Mikael Berthe <mikael@lilotux.net>
parents: 1860
diff changeset
1574 fjid = to_utf8(fjid);
81822de0edf6 Fix a potential encoding issue on non-UTF8 systems
Mikael Berthe <mikael@lilotux.net>
parents: 1860
diff changeset
1575
1943
11bda6d8daab Add default server for private messages
Mikael Berthe <mikael@lilotux.net>
parents: 1939
diff changeset
1576 if (!strchr(fjid, JID_DOMAIN_SEPARATOR)) {
11bda6d8daab Add default server for private messages
Mikael Berthe <mikael@lilotux.net>
parents: 1939
diff changeset
1577 const gchar *append_server = settings_opt_get("default_server");
11bda6d8daab Add default server for private messages
Mikael Berthe <mikael@lilotux.net>
parents: 1939
diff changeset
1578 if (append_server) {
11bda6d8daab Add default server for private messages
Mikael Berthe <mikael@lilotux.net>
parents: 1939
diff changeset
1579 gchar *res = strchr(fjid, JID_RESOURCE_SEPARATOR);
11bda6d8daab Add default server for private messages
Mikael Berthe <mikael@lilotux.net>
parents: 1939
diff changeset
1580 uncompletedfjid = fjid;
11bda6d8daab Add default server for private messages
Mikael Berthe <mikael@lilotux.net>
parents: 1939
diff changeset
1581 if (res) {
11bda6d8daab Add default server for private messages
Mikael Berthe <mikael@lilotux.net>
parents: 1939
diff changeset
1582 *res++ = '\0';
11bda6d8daab Add default server for private messages
Mikael Berthe <mikael@lilotux.net>
parents: 1939
diff changeset
1583 fjid = g_strdup_printf("%s%c%s%c%s", fjid, JID_DOMAIN_SEPARATOR, append_server,
11bda6d8daab Add default server for private messages
Mikael Berthe <mikael@lilotux.net>
parents: 1939
diff changeset
1584 JID_RESOURCE_SEPARATOR, res);
11bda6d8daab Add default server for private messages
Mikael Berthe <mikael@lilotux.net>
parents: 1939
diff changeset
1585 } else
11bda6d8daab Add default server for private messages
Mikael Berthe <mikael@lilotux.net>
parents: 1939
diff changeset
1586 fjid = g_strdup_printf("%s%c%s", fjid, JID_DOMAIN_SEPARATOR, append_server);
11bda6d8daab Add default server for private messages
Mikael Berthe <mikael@lilotux.net>
parents: 1939
diff changeset
1587 }
11bda6d8daab Add default server for private messages
Mikael Berthe <mikael@lilotux.net>
parents: 1939
diff changeset
1588 }
11bda6d8daab Add default server for private messages
Mikael Berthe <mikael@lilotux.net>
parents: 1939
diff changeset
1589
1861
81822de0edf6 Fix a potential encoding issue on non-UTF8 systems
Mikael Berthe <mikael@lilotux.net>
parents: 1860
diff changeset
1590 if (check_jid_syntax(fjid)) {
1432
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1591 scr_LogPrint(LPRINT_NORMAL, "Please specify a valid Jabber ID.");
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
1592 free_arg_lst(paramlst);
1943
11bda6d8daab Add default server for private messages
Mikael Berthe <mikael@lilotux.net>
parents: 1939
diff changeset
1593 g_free(uncompletedfjid);
1861
81822de0edf6 Fix a potential encoding issue on non-UTF8 systems
Mikael Berthe <mikael@lilotux.net>
parents: 1860
diff changeset
1594 g_free(fjid);
480
882e1acae422 Add /say_to command
Mikael Berthe <mikael@lilotux.net>
parents: 475
diff changeset
1595 return;
882e1acae422 Add /say_to command
Mikael Berthe <mikael@lilotux.net>
parents: 475
diff changeset
1596 }
882e1acae422 Add /say_to command
Mikael Berthe <mikael@lilotux.net>
parents: 475
diff changeset
1597
1432
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1598 if (!file) {
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1599 msg = to_utf8(msg);
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1600 } else {
1434
bed2f0caa952 Expand filename in /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1433
diff changeset
1601 char *filename_xp;
1432
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1602 if (msg)
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1603 scr_LogPrint(LPRINT_NORMAL, "say_to: extra parameter ignored.");
1434
bed2f0caa952 Expand filename in /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1433
diff changeset
1604 filename_xp = expand_filename(file);
bed2f0caa952 Expand filename in /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1433
diff changeset
1605 msg = load_message_from_file(filename_xp);
bed2f0caa952 Expand filename in /say_to -f
Mikael Berthe <mikael@lilotux.net>
parents: 1433
diff changeset
1606 g_free(filename_xp);
1432
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1607 g_free(file);
46e5eb9917bc Add an option "-f" (file) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1430
diff changeset
1608 }
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
1609
1430
12847b0ea8c9 Add an option "-q" (quiet) to /say_to
Mikael Berthe <mikael@lilotux.net>
parents: 1429
diff changeset
1610 send_message_to(fjid, msg, NULL, msg_type, quiet);
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
1611
1943
11bda6d8daab Add default server for private messages
Mikael Berthe <mikael@lilotux.net>
parents: 1939
diff changeset
1612 g_free(uncompletedfjid);
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1613 g_free(fjid);
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
1614 g_free(msg);
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
1615 free_arg_lst(paramlst);
480
882e1acae422 Add /say_to command
Mikael Berthe <mikael@lilotux.net>
parents: 475
diff changeset
1616 }
882e1acae422 Add /say_to command
Mikael Berthe <mikael@lilotux.net>
parents: 475
diff changeset
1617
558
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1618 // buffer_updown(updown, nblines)
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1619 // updown: -1=up, +1=down
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1620 inline static void buffer_updown(int updown, char *nlines)
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1621 {
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1622 int nblines;
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1623
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1624 if (!nlines || !*nlines)
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1625 nblines = 0;
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1626 else
1573
ece4f26bf9ff Add count parameter to roster up/down command
Mikael Berthe <mikael@lilotux.net>
parents: 1562
diff changeset
1627 nblines = strtol(nlines, NULL, 10);
558
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1628
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1629 if (nblines >= 0)
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
1630 scr_buffer_scroll_up_down(updown, nblines);
558
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1631 }
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1632
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1633 static void buffer_search(int direction, char *arg)
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1634 {
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1635 if (!arg || !*arg) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
1636 scr_LogPrint(LPRINT_NORMAL, "Missing parameter.");
558
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1637 return;
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1638 }
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1639
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
1640 scr_buffer_search(direction, arg);
558
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1641 }
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1642
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1643 static void buffer_date(char *date)
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1644 {
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1645 time_t t;
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1646
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1647 if (!date || !*date) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
1648 scr_LogPrint(LPRINT_NORMAL, "Missing parameter.");
558
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1649 return;
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1650 }
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1651
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1652 strip_arg_special_chars(date);
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1653
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1654 t = from_iso8601(date, 0);
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1655 if (t)
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
1656 scr_buffer_date(t);
558
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1657 else
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
1658 scr_LogPrint(LPRINT_NORMAL, "The date you specified is "
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
1659 "not correctly formatted or invalid.");
558
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1660 }
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1661
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1662 static void buffer_percent(char *arg1, char *arg2)
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1663 {
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1664 // Basically, user has typed "%arg1 arg2"
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1665 // "%50" -> arg1 = 50, arg2 null pointer
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1666 // "% 50" -> arg1 = \0, arg2 = 50
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1667
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1668 if (!*arg1 && (!arg2 || !*arg2)) { // No value
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
1669 scr_LogPrint(LPRINT_NORMAL, "Missing parameter.");
558
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1670 return;
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1671 }
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1672
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1673 if (*arg1 && arg2 && *arg2) { // Two values
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
1674 scr_LogPrint(LPRINT_NORMAL, "Wrong parameters.");
558
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1675 return;
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1676 }
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1677
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
1678 scr_buffer_percent(atoi((*arg1 ? arg1 : arg2)));
558
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1679 }
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1680
336
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
1681 static void do_buffer(char *arg)
187
4ce9ff808baa [/trunk] Changeset 199 by mikael
mikael
parents: 166
diff changeset
1682 {
558
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1683 char **paramlst;
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1684 char *subcmd;
370
dd9e2eb52916 Add /buffer search_{backward,forward}
Mikael Berthe <mikael@lilotux.net>
parents: 369
diff changeset
1685
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1686 if (!current_buddy)
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1687 return;
558
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1688
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1689 paramlst = split_arg(arg, 2, 1); // subcmd, arg
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1690 subcmd = *paramlst;
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1691 arg = *(paramlst+1);
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1692
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1693 if (!subcmd || !*subcmd) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
1694 scr_LogPrint(LPRINT_NORMAL, "Missing parameter.");
558
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1695 free_arg_lst(paramlst);
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1696 return;
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1697 }
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1698
1138
8ba4b1e8b42d Add command /buffer close_all
Mikael Berthe <mikael@lilotux.net>
parents: 1135
diff changeset
1699 if (buddy_gettype(BUDDATA(current_buddy)) & ROSTER_TYPE_GROUP &&
8ba4b1e8b42d Add command /buffer close_all
Mikael Berthe <mikael@lilotux.net>
parents: 1135
diff changeset
1700 strcasecmp(subcmd, "close_all")) {
8ba4b1e8b42d Add command /buffer close_all
Mikael Berthe <mikael@lilotux.net>
parents: 1135
diff changeset
1701 scr_LogPrint(LPRINT_NORMAL, "Groups have no buffer.");
8ba4b1e8b42d Add command /buffer close_all
Mikael Berthe <mikael@lilotux.net>
parents: 1135
diff changeset
1702 free_arg_lst(paramlst);
8ba4b1e8b42d Add command /buffer close_all
Mikael Berthe <mikael@lilotux.net>
parents: 1135
diff changeset
1703 return;
8ba4b1e8b42d Add command /buffer close_all
Mikael Berthe <mikael@lilotux.net>
parents: 1135
diff changeset
1704 }
8ba4b1e8b42d Add command /buffer close_all
Mikael Berthe <mikael@lilotux.net>
parents: 1135
diff changeset
1705
558
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1706 if (!strcasecmp(subcmd, "top")) {
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
1707 scr_buffer_top_bottom(-1);
558
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1708 } else if (!strcasecmp(subcmd, "bottom")) {
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
1709 scr_buffer_top_bottom(1);
558
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1710 } else if (!strcasecmp(subcmd, "clear")) {
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
1711 scr_buffer_clear();
1135
5d7c05932b13 Add command /buffer close
Mikael Berthe <mikael@lilotux.net>
parents: 1130
diff changeset
1712 } else if (!strcasecmp(subcmd, "close")) {
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
1713 scr_buffer_purge(1, arg);
1138
8ba4b1e8b42d Add command /buffer close_all
Mikael Berthe <mikael@lilotux.net>
parents: 1135
diff changeset
1714 } else if (!strcasecmp(subcmd, "close_all")) {
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
1715 scr_buffer_purge_all(1);
866
b30df2ab457f Add "/buffer purge"
Mikael Berthe <mikael@lilotux.net>
parents: 865
diff changeset
1716 } else if (!strcasecmp(subcmd, "purge")) {
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
1717 scr_buffer_purge(0, arg);
873
ee39f6d94d43 Add /buffer {scroll_lock|scroll_unlock|toggle_scroll}
Mikael Berthe <mikael@lilotux.net>
parents: 868
diff changeset
1718 } else if (!strcasecmp(subcmd, "scroll_lock")) {
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
1719 scr_buffer_scroll_lock(1);
873
ee39f6d94d43 Add /buffer {scroll_lock|scroll_unlock|toggle_scroll}
Mikael Berthe <mikael@lilotux.net>
parents: 868
diff changeset
1720 } else if (!strcasecmp(subcmd, "scroll_unlock")) {
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
1721 scr_buffer_scroll_lock(0);
873
ee39f6d94d43 Add /buffer {scroll_lock|scroll_unlock|toggle_scroll}
Mikael Berthe <mikael@lilotux.net>
parents: 868
diff changeset
1722 } else if (!strcasecmp(subcmd, "scroll_toggle")) {
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
1723 scr_buffer_scroll_lock(-1);
558
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1724 } else if (!strcasecmp(subcmd, "up")) {
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1725 buffer_updown(-1, arg);
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1726 } else if (!strcasecmp(subcmd, "down")) {
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1727 buffer_updown(1, arg);
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1728 } else if (!strcasecmp(subcmd, "search_backward")) {
979
ea939ff047d8 Improve /buffer search_*
Mikael Berthe <mikael@lilotux.net>
parents: 978
diff changeset
1729 strip_arg_special_chars(arg);
558
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1730 buffer_search(-1, arg);
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1731 } else if (!strcasecmp(subcmd, "search_forward")) {
979
ea939ff047d8 Improve /buffer search_*
Mikael Berthe <mikael@lilotux.net>
parents: 978
diff changeset
1732 strip_arg_special_chars(arg);
558
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1733 buffer_search(1, arg);
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1734 } else if (!strcasecmp(subcmd, "date")) {
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1735 buffer_date(arg);
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1736 } else if (*subcmd == '%') {
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1737 buffer_percent(subcmd+1, arg);
1485
0121b6f3047c New command: /buffer save
Mikael Berthe <mikael@lilotux.net>
parents: 1484
diff changeset
1738 } else if (!strcasecmp(subcmd, "save")) {
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
1739 scr_buffer_dump(arg);
1226
2521efbf3b72 New (debug) subcommand, buffer list
Mikael Berthe <mikael@lilotux.net>
parents: 1221
diff changeset
1740 } else if (!strcasecmp(subcmd, "list")) {
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
1741 scr_buffer_list();
1956
f309f343070c Add command /buffer readmark
Mikael Berthe <mikael@lilotux.net>
parents: 1946
diff changeset
1742 } else if (!strcasecmp(subcmd, "readmark")) {
f309f343070c Add command /buffer readmark
Mikael Berthe <mikael@lilotux.net>
parents: 1946
diff changeset
1743 scr_buffer_jump_readmark();
558
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1744 } else {
374
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 371
diff changeset
1745 scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!");
558
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1746 }
370
dd9e2eb52916 Add /buffer search_{backward,forward}
Mikael Berthe <mikael@lilotux.net>
parents: 369
diff changeset
1747
558
db019a5f874f Split do_buffer() and use split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 557
diff changeset
1748 free_arg_lst(paramlst);
187
4ce9ff808baa [/trunk] Changeset 199 by mikael
mikael
parents: 166
diff changeset
1749 }
4ce9ff808baa [/trunk] Changeset 199 by mikael
mikael
parents: 166
diff changeset
1750
967
303408ef5e5d Configurable command character
Alexis Hildebrandt
parents: 960
diff changeset
1751 static void do_clear(char *arg) // Alias for "buffer clear"
187
4ce9ff808baa [/trunk] Changeset 199 by mikael
mikael
parents: 166
diff changeset
1752 {
4ce9ff808baa [/trunk] Changeset 199 by mikael
mikael
parents: 166
diff changeset
1753 do_buffer("clear");
4ce9ff808baa [/trunk] Changeset 199 by mikael
mikael
parents: 166
diff changeset
1754 }
4ce9ff808baa [/trunk] Changeset 199 by mikael
mikael
parents: 166
diff changeset
1755
336
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
1756 static void do_info(char *arg)
191
24e6bcb589b0 [/trunk] Changeset 203 by mikael
mikael
parents: 187
diff changeset
1757 {
24e6bcb589b0 [/trunk] Changeset 203 by mikael
mikael
parents: 187
diff changeset
1758 gpointer bud;
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1759 const char *bjid, *name;
1355
9716cf8a0726 Add on_server flag
Mikael Berthe <mikael@lilotux.net>
parents: 1352
diff changeset
1760 guint type, on_srv;
191
24e6bcb589b0 [/trunk] Changeset 203 by mikael
mikael
parents: 187
diff changeset
1761 char *buffer;
604
2e8342168ebc "/info" shows buddy subscription
Mikael Berthe <mikael@lilotux.net>
parents: 600
diff changeset
1762 enum subscr esub;
191
24e6bcb589b0 [/trunk] Changeset 203 by mikael
mikael
parents: 187
diff changeset
1763
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1764 if (!current_buddy)
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1765 return;
191
24e6bcb589b0 [/trunk] Changeset 203 by mikael
mikael
parents: 187
diff changeset
1766 bud = BUDDATA(current_buddy);
24e6bcb589b0 [/trunk] Changeset 203 by mikael
mikael
parents: 187
diff changeset
1767
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1768 bjid = buddy_getjid(bud);
191
24e6bcb589b0 [/trunk] Changeset 203 by mikael
mikael
parents: 187
diff changeset
1769 name = buddy_getname(bud);
24e6bcb589b0 [/trunk] Changeset 203 by mikael
mikael
parents: 187
diff changeset
1770 type = buddy_gettype(bud);
604
2e8342168ebc "/info" shows buddy subscription
Mikael Berthe <mikael@lilotux.net>
parents: 600
diff changeset
1771 esub = buddy_getsubscription(bud);
1355
9716cf8a0726 Add on_server flag
Mikael Berthe <mikael@lilotux.net>
parents: 1352
diff changeset
1772 on_srv = buddy_getonserverflag(bud);
191
24e6bcb589b0 [/trunk] Changeset 203 by mikael
mikael
parents: 187
diff changeset
1773
626
b75f4105ce32 Use a larger buffer for commands like /info
Mikael Berthe <mikael@lilotux.net>
parents: 625
diff changeset
1774 buffer = g_new(char, 4096);
191
24e6bcb589b0 [/trunk] Changeset 203 by mikael
mikael
parents: 187
diff changeset
1775
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1776 if (bjid) {
1072
2a3cfb98bd5e Fix memory leaks after calls to buddy_getresources()
Mikael Berthe <mikael@lilotux.net>
parents: 1070
diff changeset
1777 GSList *resources, *p_res;
604
2e8342168ebc "/info" shows buddy subscription
Mikael Berthe <mikael@lilotux.net>
parents: 600
diff changeset
1778 char *bstr = "unknown";
191
24e6bcb589b0 [/trunk] Changeset 203 by mikael
mikael
parents: 187
diff changeset
1779
647
c6c41dd2464a Enter chat mode automatically when using some commands
Mikael Berthe <mikael@lilotux.net>
parents: 644
diff changeset
1780 // Enter chat mode
c6c41dd2464a Enter chat mode automatically when using some commands
Mikael Berthe <mikael@lilotux.net>
parents: 644
diff changeset
1781 scr_set_chatmode(TRUE);
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
1782 scr_show_buddy_window();
647
c6c41dd2464a Enter chat mode automatically when using some commands
Mikael Berthe <mikael@lilotux.net>
parents: 644
diff changeset
1783
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1784 snprintf(buffer, 4095, "jid: <%s>", bjid);
1290
e42f48103609 Drawing the MUC nicks by a different color
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1279
diff changeset
1785 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
191
24e6bcb589b0 [/trunk] Changeset 203 by mikael
mikael
parents: 187
diff changeset
1786 if (name) {
626
b75f4105ce32 Use a larger buffer for commands like /info
Mikael Berthe <mikael@lilotux.net>
parents: 625
diff changeset
1787 snprintf(buffer, 4095, "Name: %s", name);
1290
e42f48103609 Drawing the MUC nicks by a different color
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1279
diff changeset
1788 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
191
24e6bcb589b0 [/trunk] Changeset 203 by mikael
mikael
parents: 187
diff changeset
1789 }
24e6bcb589b0 [/trunk] Changeset 203 by mikael
mikael
parents: 187
diff changeset
1790
604
2e8342168ebc "/info" shows buddy subscription
Mikael Berthe <mikael@lilotux.net>
parents: 600
diff changeset
1791 if (type == ROSTER_TYPE_USER) bstr = "user";
2e8342168ebc "/info" shows buddy subscription
Mikael Berthe <mikael@lilotux.net>
parents: 600
diff changeset
1792 else if (type == ROSTER_TYPE_ROOM) bstr = "chatroom";
2e8342168ebc "/info" shows buddy subscription
Mikael Berthe <mikael@lilotux.net>
parents: 600
diff changeset
1793 else if (type == ROSTER_TYPE_AGENT) bstr = "agent";
2e8342168ebc "/info" shows buddy subscription
Mikael Berthe <mikael@lilotux.net>
parents: 600
diff changeset
1794 snprintf(buffer, 127, "Type: %s", bstr);
1290
e42f48103609 Drawing the MUC nicks by a different color
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1279
diff changeset
1795 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
604
2e8342168ebc "/info" shows buddy subscription
Mikael Berthe <mikael@lilotux.net>
parents: 600
diff changeset
1796
1355
9716cf8a0726 Add on_server flag
Mikael Berthe <mikael@lilotux.net>
parents: 1352
diff changeset
1797 if (!on_srv) {
9716cf8a0726 Add on_server flag
Mikael Berthe <mikael@lilotux.net>
parents: 1352
diff changeset
1798 scr_WriteIncomingMessage(bjid, "(Local item, not on the server)",
9716cf8a0726 Add on_server flag
Mikael Berthe <mikael@lilotux.net>
parents: 1352
diff changeset
1799 0, HBB_PREFIX_INFO, 0);
9716cf8a0726 Add on_server flag
Mikael Berthe <mikael@lilotux.net>
parents: 1352
diff changeset
1800 }
9716cf8a0726 Add on_server flag
Mikael Berthe <mikael@lilotux.net>
parents: 1352
diff changeset
1801
604
2e8342168ebc "/info" shows buddy subscription
Mikael Berthe <mikael@lilotux.net>
parents: 600
diff changeset
1802 if (esub == sub_both) bstr = "both";
2e8342168ebc "/info" shows buddy subscription
Mikael Berthe <mikael@lilotux.net>
parents: 600
diff changeset
1803 else if (esub & sub_from) bstr = "from";
2e8342168ebc "/info" shows buddy subscription
Mikael Berthe <mikael@lilotux.net>
parents: 600
diff changeset
1804 else if (esub & sub_to) bstr = "to";
2e8342168ebc "/info" shows buddy subscription
Mikael Berthe <mikael@lilotux.net>
parents: 600
diff changeset
1805 else bstr = "none";
2e8342168ebc "/info" shows buddy subscription
Mikael Berthe <mikael@lilotux.net>
parents: 600
diff changeset
1806 snprintf(buffer, 64, "Subscription: %s", bstr);
2e8342168ebc "/info" shows buddy subscription
Mikael Berthe <mikael@lilotux.net>
parents: 600
diff changeset
1807 if (esub & sub_pending)
2e8342168ebc "/info" shows buddy subscription
Mikael Berthe <mikael@lilotux.net>
parents: 600
diff changeset
1808 strcat(buffer, " (pending)");
1290
e42f48103609 Drawing the MUC nicks by a different color
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1279
diff changeset
1809 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
439
63562fd409a1 /info can show multiple resources
Mikael Berthe <mikael@lilotux.net>
parents: 438
diff changeset
1810
63562fd409a1 /info can show multiple resources
Mikael Berthe <mikael@lilotux.net>
parents: 438
diff changeset
1811 resources = buddy_getresources(bud);
843
915a7f17474a Remember the status message when a buddy goes offline
Mikael Berthe <mikael@lilotux.net>
parents: 841
diff changeset
1812 if (!resources && type == ROSTER_TYPE_USER) {
915a7f17474a Remember the status message when a buddy goes offline
Mikael Berthe <mikael@lilotux.net>
parents: 841
diff changeset
1813 // No resource; display last status message, if any.
915a7f17474a Remember the status message when a buddy goes offline
Mikael Berthe <mikael@lilotux.net>
parents: 841
diff changeset
1814 const char *rst_msg = buddy_getstatusmsg(bud, "");
915a7f17474a Remember the status message when a buddy goes offline
Mikael Berthe <mikael@lilotux.net>
parents: 841
diff changeset
1815 if (rst_msg) {
915a7f17474a Remember the status message when a buddy goes offline
Mikael Berthe <mikael@lilotux.net>
parents: 841
diff changeset
1816 snprintf(buffer, 4095, "Last status message: %s", rst_msg);
1290
e42f48103609 Drawing the MUC nicks by a different color
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1279
diff changeset
1817 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
843
915a7f17474a Remember the status message when a buddy goes offline
Mikael Berthe <mikael@lilotux.net>
parents: 841
diff changeset
1818 }
915a7f17474a Remember the status message when a buddy goes offline
Mikael Berthe <mikael@lilotux.net>
parents: 841
diff changeset
1819 }
1072
2a3cfb98bd5e Fix memory leaks after calls to buddy_getresources()
Mikael Berthe <mikael@lilotux.net>
parents: 1070
diff changeset
1820 for (p_res = resources ; p_res ; p_res = g_slist_next(p_res)) {
439
63562fd409a1 /info can show multiple resources
Mikael Berthe <mikael@lilotux.net>
parents: 438
diff changeset
1821 gchar rprio;
63562fd409a1 /info can show multiple resources
Mikael Berthe <mikael@lilotux.net>
parents: 438
diff changeset
1822 enum imstatus rstatus;
63562fd409a1 /info can show multiple resources
Mikael Berthe <mikael@lilotux.net>
parents: 438
diff changeset
1823 const char *rst_msg;
625
028c01940490 Show presence timestamps in "/info" and "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 622
diff changeset
1824 time_t rst_time;
1043
ebbde723614b Store contacts PGP keys
Mikael Berthe <mikael@lilotux.net>
parents: 1038
diff changeset
1825 struct pgp_data *rpgp;
439
63562fd409a1 /info can show multiple resources
Mikael Berthe <mikael@lilotux.net>
parents: 438
diff changeset
1826
1072
2a3cfb98bd5e Fix memory leaks after calls to buddy_getresources()
Mikael Berthe <mikael@lilotux.net>
parents: 1070
diff changeset
1827 rprio = buddy_getresourceprio(bud, p_res->data);
2a3cfb98bd5e Fix memory leaks after calls to buddy_getresources()
Mikael Berthe <mikael@lilotux.net>
parents: 1070
diff changeset
1828 rstatus = buddy_getstatus(bud, p_res->data);
2a3cfb98bd5e Fix memory leaks after calls to buddy_getresources()
Mikael Berthe <mikael@lilotux.net>
parents: 1070
diff changeset
1829 rst_msg = buddy_getstatusmsg(bud, p_res->data);
2a3cfb98bd5e Fix memory leaks after calls to buddy_getresources()
Mikael Berthe <mikael@lilotux.net>
parents: 1070
diff changeset
1830 rst_time = buddy_getstatustime(bud, p_res->data);
2a3cfb98bd5e Fix memory leaks after calls to buddy_getresources()
Mikael Berthe <mikael@lilotux.net>
parents: 1070
diff changeset
1831 rpgp = buddy_resource_pgp(bud, p_res->data);
439
63562fd409a1 /info can show multiple resources
Mikael Berthe <mikael@lilotux.net>
parents: 438
diff changeset
1832
626
b75f4105ce32 Use a larger buffer for commands like /info
Mikael Berthe <mikael@lilotux.net>
parents: 625
diff changeset
1833 snprintf(buffer, 4095, "Resource: [%c] (%d) %s", imstatus2char[rstatus],
1072
2a3cfb98bd5e Fix memory leaks after calls to buddy_getresources()
Mikael Berthe <mikael@lilotux.net>
parents: 1070
diff changeset
1834 rprio, (char*)p_res->data);
1290
e42f48103609 Drawing the MUC nicks by a different color
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1279
diff changeset
1835 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
439
63562fd409a1 /info can show multiple resources
Mikael Berthe <mikael@lilotux.net>
parents: 438
diff changeset
1836 if (rst_msg) {
626
b75f4105ce32 Use a larger buffer for commands like /info
Mikael Berthe <mikael@lilotux.net>
parents: 625
diff changeset
1837 snprintf(buffer, 4095, "Status message: %s", rst_msg);
1268
dbc907b2d92f Add configurable colors for info and incoming messages (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1260
diff changeset
1838 scr_WriteIncomingMessage(bjid, buffer,
1290
e42f48103609 Drawing the MUC nicks by a different color
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1279
diff changeset
1839 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
439
63562fd409a1 /info can show multiple resources
Mikael Berthe <mikael@lilotux.net>
parents: 438
diff changeset
1840 }
625
028c01940490 Show presence timestamps in "/info" and "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 622
diff changeset
1841 if (rst_time) {
626
b75f4105ce32 Use a larger buffer for commands like /info
Mikael Berthe <mikael@lilotux.net>
parents: 625
diff changeset
1842 char tbuf[128];
625
028c01940490 Show presence timestamps in "/info" and "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 622
diff changeset
1843
028c01940490 Show presence timestamps in "/info" and "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 622
diff changeset
1844 strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", localtime(&rst_time));
028c01940490 Show presence timestamps in "/info" and "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 622
diff changeset
1845 snprintf(buffer, 127, "Status timestamp: %s", tbuf);
1268
dbc907b2d92f Add configurable colors for info and incoming messages (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1260
diff changeset
1846 scr_WriteIncomingMessage(bjid, buffer,
1290
e42f48103609 Drawing the MUC nicks by a different color
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1279
diff changeset
1847 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
625
028c01940490 Show presence timestamps in "/info" and "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 622
diff changeset
1848 }
1043
ebbde723614b Store contacts PGP keys
Mikael Berthe <mikael@lilotux.net>
parents: 1038
diff changeset
1849 #ifdef HAVE_GPGME
ebbde723614b Store contacts PGP keys
Mikael Berthe <mikael@lilotux.net>
parents: 1038
diff changeset
1850 if (rpgp && rpgp->sign_keyid) {
ebbde723614b Store contacts PGP keys
Mikael Berthe <mikael@lilotux.net>
parents: 1038
diff changeset
1851 snprintf(buffer, 4095, "PGP key id: %s", rpgp->sign_keyid);
1268
dbc907b2d92f Add configurable colors for info and incoming messages (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1260
diff changeset
1852 scr_WriteIncomingMessage(bjid, buffer,
1290
e42f48103609 Drawing the MUC nicks by a different color
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1279
diff changeset
1853 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
1043
ebbde723614b Store contacts PGP keys
Mikael Berthe <mikael@lilotux.net>
parents: 1038
diff changeset
1854 if (rpgp->last_sigsum) {
ebbde723614b Store contacts PGP keys
Mikael Berthe <mikael@lilotux.net>
parents: 1038
diff changeset
1855 gpgme_sigsum_t ss = rpgp->last_sigsum;
ebbde723614b Store contacts PGP keys
Mikael Berthe <mikael@lilotux.net>
parents: 1038
diff changeset
1856 snprintf(buffer, 4095, "Last PGP signature: %s",
ebbde723614b Store contacts PGP keys
Mikael Berthe <mikael@lilotux.net>
parents: 1038
diff changeset
1857 (ss & GPGME_SIGSUM_GREEN ? "good":
ebbde723614b Store contacts PGP keys
Mikael Berthe <mikael@lilotux.net>
parents: 1038
diff changeset
1858 (ss & GPGME_SIGSUM_RED ? "bad" : "unknown")));
1268
dbc907b2d92f Add configurable colors for info and incoming messages (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1260
diff changeset
1859 scr_WriteIncomingMessage(bjid, buffer,
1290
e42f48103609 Drawing the MUC nicks by a different color
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1279
diff changeset
1860 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
1043
ebbde723614b Store contacts PGP keys
Mikael Berthe <mikael@lilotux.net>
parents: 1038
diff changeset
1861 }
ebbde723614b Store contacts PGP keys
Mikael Berthe <mikael@lilotux.net>
parents: 1038
diff changeset
1862 }
ebbde723614b Store contacts PGP keys
Mikael Berthe <mikael@lilotux.net>
parents: 1038
diff changeset
1863 #endif
1072
2a3cfb98bd5e Fix memory leaks after calls to buddy_getresources()
Mikael Berthe <mikael@lilotux.net>
parents: 1070
diff changeset
1864 g_free(p_res->data);
439
63562fd409a1 /info can show multiple resources
Mikael Berthe <mikael@lilotux.net>
parents: 438
diff changeset
1865 }
1072
2a3cfb98bd5e Fix memory leaks after calls to buddy_getresources()
Mikael Berthe <mikael@lilotux.net>
parents: 1070
diff changeset
1866 g_slist_free(resources);
1355
9716cf8a0726 Add on_server flag
Mikael Berthe <mikael@lilotux.net>
parents: 1352
diff changeset
1867 } else { /* Item has no jid */
374
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 371
diff changeset
1868 if (name) scr_LogPrint(LPRINT_NORMAL, "Name: %s", name);
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 371
diff changeset
1869 scr_LogPrint(LPRINT_NORMAL, "Type: %s",
848
a9161d2dc414 Introduce special buffer stuff
Mikael Berthe <mikael@lilotux.net>
parents: 847
diff changeset
1870 type == ROSTER_TYPE_GROUP ? "group" :
a9161d2dc414 Introduce special buffer stuff
Mikael Berthe <mikael@lilotux.net>
parents: 847
diff changeset
1871 (type == ROSTER_TYPE_SPECIAL ? "special" : "unknown"));
191
24e6bcb589b0 [/trunk] Changeset 203 by mikael
mikael
parents: 187
diff changeset
1872 }
24e6bcb589b0 [/trunk] Changeset 203 by mikael
mikael
parents: 187
diff changeset
1873 g_free(buffer);
24e6bcb589b0 [/trunk] Changeset 203 by mikael
mikael
parents: 187
diff changeset
1874
1020
60c94b697f61 Show in /info when the contact has an annotation
Mikael Berthe <mikael@lilotux.net>
parents: 1019
diff changeset
1875 // Tell the user if this item has an annotation.
60c94b697f61 Show in /info when the contact has an annotation
Mikael Berthe <mikael@lilotux.net>
parents: 1019
diff changeset
1876 if (type == ROSTER_TYPE_USER ||
60c94b697f61 Show in /info when the contact has an annotation
Mikael Berthe <mikael@lilotux.net>
parents: 1019
diff changeset
1877 type == ROSTER_TYPE_ROOM ||
60c94b697f61 Show in /info when the contact has an annotation
Mikael Berthe <mikael@lilotux.net>
parents: 1019
diff changeset
1878 type == ROSTER_TYPE_AGENT) {
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
1879 struct annotation *note = xmpp_get_storage_rosternotes(bjid, TRUE);
1020
60c94b697f61 Show in /info when the contact has an annotation
Mikael Berthe <mikael@lilotux.net>
parents: 1019
diff changeset
1880 if (note) {
60c94b697f61 Show in /info when the contact has an annotation
Mikael Berthe <mikael@lilotux.net>
parents: 1019
diff changeset
1881 // We do not display the note, we just tell the user.
60c94b697f61 Show in /info when the contact has an annotation
Mikael Berthe <mikael@lilotux.net>
parents: 1019
diff changeset
1882 g_free(note->text);
1022
4c8d7b558e83 Annotations listing (/roster note in the status buffer)
Mikael Berthe <mikael@lilotux.net>
parents: 1021
diff changeset
1883 g_free(note->jid);
1020
60c94b697f61 Show in /info when the contact has an annotation
Mikael Berthe <mikael@lilotux.net>
parents: 1019
diff changeset
1884 g_free(note);
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1885 scr_WriteIncomingMessage(bjid, "(This item has an annotation)", 0,
1290
e42f48103609 Drawing the MUC nicks by a different color
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1279
diff changeset
1886 HBB_PREFIX_INFO, 0);
1020
60c94b697f61 Show in /info when the contact has an annotation
Mikael Berthe <mikael@lilotux.net>
parents: 1019
diff changeset
1887 }
60c94b697f61 Show in /info when the contact has an annotation
Mikael Berthe <mikael@lilotux.net>
parents: 1019
diff changeset
1888 }
191
24e6bcb589b0 [/trunk] Changeset 203 by mikael
mikael
parents: 187
diff changeset
1889 }
24e6bcb589b0 [/trunk] Changeset 203 by mikael
mikael
parents: 187
diff changeset
1890
504
321ae11e7ddb Prettier display for "/room names"
Mikael Berthe <mikael@lilotux.net>
parents: 490
diff changeset
1891 // room_names() is a variation of do_info(), for chatrooms only
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
1892 static void room_names(gpointer bud, char *arg)
504
321ae11e7ddb Prettier display for "/room names"
Mikael Berthe <mikael@lilotux.net>
parents: 490
diff changeset
1893 {
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1894 const char *bjid;
504
321ae11e7ddb Prettier display for "/room names"
Mikael Berthe <mikael@lilotux.net>
parents: 490
diff changeset
1895 char *buffer;
1072
2a3cfb98bd5e Fix memory leaks after calls to buddy_getresources()
Mikael Berthe <mikael@lilotux.net>
parents: 1070
diff changeset
1896 GSList *resources, *p_res;
1587
0a1f59dc503d /room names --compact
sh!zeeg <shizeeg@yandex.ru>
parents: 1573
diff changeset
1897 enum { style_normal = 0, style_detail, style_short,
0a1f59dc503d /room names --compact
sh!zeeg <shizeeg@yandex.ru>
parents: 1573
diff changeset
1898 style_quiet, style_compact } style = 0;
504
321ae11e7ddb Prettier display for "/room names"
Mikael Berthe <mikael@lilotux.net>
parents: 490
diff changeset
1899
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
1900 if (*arg) {
1162
39b20ea22ce9 /room names: add options --short, --quiet
Mikael Berthe <mikael@lilotux.net>
parents: 1158
diff changeset
1901 if (!strcasecmp(arg, "--short"))
39b20ea22ce9 /room names: add options --short, --quiet
Mikael Berthe <mikael@lilotux.net>
parents: 1158
diff changeset
1902 style = style_short;
39b20ea22ce9 /room names: add options --short, --quiet
Mikael Berthe <mikael@lilotux.net>
parents: 1158
diff changeset
1903 else if (!strcasecmp(arg, "--quiet"))
39b20ea22ce9 /room names: add options --short, --quiet
Mikael Berthe <mikael@lilotux.net>
parents: 1158
diff changeset
1904 style = style_quiet;
1341
305f7a609545 Add "/room names --detail"
Mikael Berthe <mikael@lilotux.net>
parents: 1333
diff changeset
1905 else if (!strcasecmp(arg, "--detail"))
305f7a609545 Add "/room names --detail"
Mikael Berthe <mikael@lilotux.net>
parents: 1333
diff changeset
1906 style = style_detail;
1587
0a1f59dc503d /room names --compact
sh!zeeg <shizeeg@yandex.ru>
parents: 1573
diff changeset
1907 else if (!strcasecmp(arg, "--compact"))
0a1f59dc503d /room names --compact
sh!zeeg <shizeeg@yandex.ru>
parents: 1573
diff changeset
1908 style = style_compact;
1162
39b20ea22ce9 /room names: add options --short, --quiet
Mikael Berthe <mikael@lilotux.net>
parents: 1158
diff changeset
1909 else {
39b20ea22ce9 /room names: add options --short, --quiet
Mikael Berthe <mikael@lilotux.net>
parents: 1158
diff changeset
1910 scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!");
39b20ea22ce9 /room names: add options --short, --quiet
Mikael Berthe <mikael@lilotux.net>
parents: 1158
diff changeset
1911 return;
39b20ea22ce9 /room names: add options --short, --quiet
Mikael Berthe <mikael@lilotux.net>
parents: 1158
diff changeset
1912 }
504
321ae11e7ddb Prettier display for "/room names"
Mikael Berthe <mikael@lilotux.net>
parents: 490
diff changeset
1913 }
321ae11e7ddb Prettier display for "/room names"
Mikael Berthe <mikael@lilotux.net>
parents: 490
diff changeset
1914
647
c6c41dd2464a Enter chat mode automatically when using some commands
Mikael Berthe <mikael@lilotux.net>
parents: 644
diff changeset
1915 // Enter chat mode
c6c41dd2464a Enter chat mode automatically when using some commands
Mikael Berthe <mikael@lilotux.net>
parents: 644
diff changeset
1916 scr_set_chatmode(TRUE);
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
1917 scr_show_buddy_window();
647
c6c41dd2464a Enter chat mode automatically when using some commands
Mikael Berthe <mikael@lilotux.net>
parents: 644
diff changeset
1918
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1919 bjid = buddy_getjid(bud);
504
321ae11e7ddb Prettier display for "/room names"
Mikael Berthe <mikael@lilotux.net>
parents: 490
diff changeset
1920
626
b75f4105ce32 Use a larger buffer for commands like /info
Mikael Berthe <mikael@lilotux.net>
parents: 625
diff changeset
1921 buffer = g_new(char, 4096);
b75f4105ce32 Use a larger buffer for commands like /info
Mikael Berthe <mikael@lilotux.net>
parents: 625
diff changeset
1922 strncpy(buffer, "Room members:", 127);
1290
e42f48103609 Drawing the MUC nicks by a different color
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1279
diff changeset
1923 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
504
321ae11e7ddb Prettier display for "/room names"
Mikael Berthe <mikael@lilotux.net>
parents: 490
diff changeset
1924
321ae11e7ddb Prettier display for "/room names"
Mikael Berthe <mikael@lilotux.net>
parents: 490
diff changeset
1925 resources = buddy_getresources(bud);
1072
2a3cfb98bd5e Fix memory leaks after calls to buddy_getresources()
Mikael Berthe <mikael@lilotux.net>
parents: 1070
diff changeset
1926 for (p_res = resources ; p_res ; p_res = g_slist_next(p_res)) {
504
321ae11e7ddb Prettier display for "/room names"
Mikael Berthe <mikael@lilotux.net>
parents: 490
diff changeset
1927 enum imstatus rstatus;
321ae11e7ddb Prettier display for "/room names"
Mikael Berthe <mikael@lilotux.net>
parents: 490
diff changeset
1928 const char *rst_msg;
321ae11e7ddb Prettier display for "/room names"
Mikael Berthe <mikael@lilotux.net>
parents: 490
diff changeset
1929
1072
2a3cfb98bd5e Fix memory leaks after calls to buddy_getresources()
Mikael Berthe <mikael@lilotux.net>
parents: 1070
diff changeset
1930 rstatus = buddy_getstatus(bud, p_res->data);
2a3cfb98bd5e Fix memory leaks after calls to buddy_getresources()
Mikael Berthe <mikael@lilotux.net>
parents: 1070
diff changeset
1931 rst_msg = buddy_getstatusmsg(bud, p_res->data);
504
321ae11e7ddb Prettier display for "/room names"
Mikael Berthe <mikael@lilotux.net>
parents: 490
diff changeset
1932
1162
39b20ea22ce9 /room names: add options --short, --quiet
Mikael Berthe <mikael@lilotux.net>
parents: 1158
diff changeset
1933 if (style == style_short) {
39b20ea22ce9 /room names: add options --short, --quiet
Mikael Berthe <mikael@lilotux.net>
parents: 1158
diff changeset
1934 snprintf(buffer, 4095, "[%c] %s%s%s", imstatus2char[rstatus],
39b20ea22ce9 /room names: add options --short, --quiet
Mikael Berthe <mikael@lilotux.net>
parents: 1158
diff changeset
1935 (char*)p_res->data,
39b20ea22ce9 /room names: add options --short, --quiet
Mikael Berthe <mikael@lilotux.net>
parents: 1158
diff changeset
1936 rst_msg ? " -- " : "", rst_msg ? rst_msg : "");
1290
e42f48103609 Drawing the MUC nicks by a different color
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1279
diff changeset
1937 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
1587
0a1f59dc503d /room names --compact
sh!zeeg <shizeeg@yandex.ru>
parents: 1573
diff changeset
1938 } else if (style == style_compact) {
0a1f59dc503d /room names --compact
sh!zeeg <shizeeg@yandex.ru>
parents: 1573
diff changeset
1939 enum imrole role = buddy_getrole(bud, p_res->data);
0a1f59dc503d /room names --compact
sh!zeeg <shizeeg@yandex.ru>
parents: 1573
diff changeset
1940 enum imaffiliation affil = buddy_getaffil(bud, p_res->data);
1588
5411897a1e7b Avoid strcat()
Mikael Berthe <mikael@lilotux.net>
parents: 1587
diff changeset
1941 bool showaffil = (affil != affil_none);
5411897a1e7b Avoid strcat()
Mikael Berthe <mikael@lilotux.net>
parents: 1587
diff changeset
1942
5411897a1e7b Avoid strcat()
Mikael Berthe <mikael@lilotux.net>
parents: 1587
diff changeset
1943 snprintf(buffer, 4095, "[%c] %s (%s%s%s)",
5411897a1e7b Avoid strcat()
Mikael Berthe <mikael@lilotux.net>
parents: 1587
diff changeset
1944 imstatus2char[rstatus], (char*)p_res->data,
5411897a1e7b Avoid strcat()
Mikael Berthe <mikael@lilotux.net>
parents: 1587
diff changeset
1945 showaffil ? straffil[affil] : "\0",
5411897a1e7b Avoid strcat()
Mikael Berthe <mikael@lilotux.net>
parents: 1587
diff changeset
1946 showaffil ? "/" : "\0",
5411897a1e7b Avoid strcat()
Mikael Berthe <mikael@lilotux.net>
parents: 1587
diff changeset
1947 strrole[role]);
1587
0a1f59dc503d /room names --compact
sh!zeeg <shizeeg@yandex.ru>
parents: 1573
diff changeset
1948 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
0a1f59dc503d /room names --compact
sh!zeeg <shizeeg@yandex.ru>
parents: 1573
diff changeset
1949 } else {
1341
305f7a609545 Add "/room names --detail"
Mikael Berthe <mikael@lilotux.net>
parents: 1333
diff changeset
1950 // (Style "normal", "detail" or "quiet")
1162
39b20ea22ce9 /room names: add options --short, --quiet
Mikael Berthe <mikael@lilotux.net>
parents: 1158
diff changeset
1951 snprintf(buffer, 4095, "[%c] %s", imstatus2char[rstatus],
39b20ea22ce9 /room names: add options --short, --quiet
Mikael Berthe <mikael@lilotux.net>
parents: 1158
diff changeset
1952 (char*)p_res->data);
1290
e42f48103609 Drawing the MUC nicks by a different color
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1279
diff changeset
1953 scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0);
1341
305f7a609545 Add "/room names --detail"
Mikael Berthe <mikael@lilotux.net>
parents: 1333
diff changeset
1954 if (rst_msg && style != style_quiet) {
1162
39b20ea22ce9 /room names: add options --short, --quiet
Mikael Berthe <mikael@lilotux.net>
parents: 1158
diff changeset
1955 snprintf(buffer, 4095, "Status message: %s", rst_msg);
1268
dbc907b2d92f Add configurable colors for info and incoming messages (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1260
diff changeset
1956 scr_WriteIncomingMessage(bjid, buffer,
1290
e42f48103609 Drawing the MUC nicks by a different color
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1279
diff changeset
1957 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
1162
39b20ea22ce9 /room names: add options --short, --quiet
Mikael Berthe <mikael@lilotux.net>
parents: 1158
diff changeset
1958 }
1341
305f7a609545 Add "/room names --detail"
Mikael Berthe <mikael@lilotux.net>
parents: 1333
diff changeset
1959 if (style == style_detail) {
305f7a609545 Add "/room names --detail"
Mikael Berthe <mikael@lilotux.net>
parents: 1333
diff changeset
1960 enum imrole role = buddy_getrole(bud, p_res->data);
305f7a609545 Add "/room names --detail"
Mikael Berthe <mikael@lilotux.net>
parents: 1333
diff changeset
1961 enum imaffiliation affil = buddy_getaffil(bud, p_res->data);
305f7a609545 Add "/room names --detail"
Mikael Berthe <mikael@lilotux.net>
parents: 1333
diff changeset
1962
305f7a609545 Add "/room names --detail"
Mikael Berthe <mikael@lilotux.net>
parents: 1333
diff changeset
1963 snprintf(buffer, 4095, "Role: %s", strrole[role]);
305f7a609545 Add "/room names --detail"
Mikael Berthe <mikael@lilotux.net>
parents: 1333
diff changeset
1964 scr_WriteIncomingMessage(bjid, buffer,
305f7a609545 Add "/room names --detail"
Mikael Berthe <mikael@lilotux.net>
parents: 1333
diff changeset
1965 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
305f7a609545 Add "/room names --detail"
Mikael Berthe <mikael@lilotux.net>
parents: 1333
diff changeset
1966 if (affil != affil_none) {
305f7a609545 Add "/room names --detail"
Mikael Berthe <mikael@lilotux.net>
parents: 1333
diff changeset
1967 snprintf(buffer, 4095, "Affiliat.: %s", straffil[affil]);
305f7a609545 Add "/room names --detail"
Mikael Berthe <mikael@lilotux.net>
parents: 1333
diff changeset
1968 scr_WriteIncomingMessage(bjid, buffer,
305f7a609545 Add "/room names --detail"
Mikael Berthe <mikael@lilotux.net>
parents: 1333
diff changeset
1969 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
305f7a609545 Add "/room names --detail"
Mikael Berthe <mikael@lilotux.net>
parents: 1333
diff changeset
1970 }
305f7a609545 Add "/room names --detail"
Mikael Berthe <mikael@lilotux.net>
parents: 1333
diff changeset
1971 }
504
321ae11e7ddb Prettier display for "/room names"
Mikael Berthe <mikael@lilotux.net>
parents: 490
diff changeset
1972 }
1072
2a3cfb98bd5e Fix memory leaks after calls to buddy_getresources()
Mikael Berthe <mikael@lilotux.net>
parents: 1070
diff changeset
1973 g_free(p_res->data);
504
321ae11e7ddb Prettier display for "/room names"
Mikael Berthe <mikael@lilotux.net>
parents: 490
diff changeset
1974 }
1072
2a3cfb98bd5e Fix memory leaks after calls to buddy_getresources()
Mikael Berthe <mikael@lilotux.net>
parents: 1070
diff changeset
1975 g_slist_free(resources);
504
321ae11e7ddb Prettier display for "/room names"
Mikael Berthe <mikael@lilotux.net>
parents: 490
diff changeset
1976 g_free(buffer);
321ae11e7ddb Prettier display for "/room names"
Mikael Berthe <mikael@lilotux.net>
parents: 490
diff changeset
1977 }
321ae11e7ddb Prettier display for "/room names"
Mikael Berthe <mikael@lilotux.net>
parents: 490
diff changeset
1978
885
afdd81c2c44d Allow /rename for groups
Mikael Berthe <mikael@lilotux.net>
parents: 873
diff changeset
1979 static void move_group_member(gpointer bud, void *groupnamedata)
afdd81c2c44d Allow /rename for groups
Mikael Berthe <mikael@lilotux.net>
parents: 873
diff changeset
1980 {
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1981 const char *bjid, *name, *groupname;
1980
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
1982 guint type, on_srv;
885
afdd81c2c44d Allow /rename for groups
Mikael Berthe <mikael@lilotux.net>
parents: 873
diff changeset
1983
afdd81c2c44d Allow /rename for groups
Mikael Berthe <mikael@lilotux.net>
parents: 873
diff changeset
1984 groupname = (char *)groupnamedata;
afdd81c2c44d Allow /rename for groups
Mikael Berthe <mikael@lilotux.net>
parents: 873
diff changeset
1985
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
1986 bjid = buddy_getjid(bud);
885
afdd81c2c44d Allow /rename for groups
Mikael Berthe <mikael@lilotux.net>
parents: 873
diff changeset
1987 name = buddy_getname(bud);
1980
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
1988 type = buddy_gettype(bud);
1976
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
1989 on_srv = buddy_getonserverflag(bud);
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
1990
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
1991 if (on_srv)
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
1992 xmpp_updatebuddy(bjid, name, *groupname ? groupname : NULL);
1980
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
1993 else {
1978
986e514bec97 Fix changeset e6beab22099b (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1976
diff changeset
1994 buddy_setgroup(bud, (char *)groupname);
1980
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
1995 if ((type & ROSTER_TYPE_ROOM) && xmpp_is_bookmarked(bjid) &&
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
1996 settings_opt_get_int("muc_bookmark_autoupdate"))
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
1997 room_bookmark(bud, NULL);
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
1998 }
885
afdd81c2c44d Allow /rename for groups
Mikael Berthe <mikael@lilotux.net>
parents: 873
diff changeset
1999 }
afdd81c2c44d Allow /rename for groups
Mikael Berthe <mikael@lilotux.net>
parents: 873
diff changeset
2000
336
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
2001 static void do_rename(char *arg)
208
8b08f34922c5 [/trunk] Changeset 220 by mikael
mikael
parents: 206
diff changeset
2002 {
8b08f34922c5 [/trunk] Changeset 220 by mikael
mikael
parents: 206
diff changeset
2003 gpointer bud;
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2004 const char *bjid, *group;
1356
7794d76ca90e Warn if the user renames a local item
Mikael Berthe <mikael@lilotux.net>
parents: 1355
diff changeset
2005 guint type, on_srv;
208
8b08f34922c5 [/trunk] Changeset 220 by mikael
mikael
parents: 206
diff changeset
2006 char *newname, *p;
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2007 char *name_utf8;
208
8b08f34922c5 [/trunk] Changeset 220 by mikael
mikael
parents: 206
diff changeset
2008
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2009 if (!current_buddy)
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2010 return;
208
8b08f34922c5 [/trunk] Changeset 220 by mikael
mikael
parents: 206
diff changeset
2011 bud = BUDDATA(current_buddy);
8b08f34922c5 [/trunk] Changeset 220 by mikael
mikael
parents: 206
diff changeset
2012
1356
7794d76ca90e Warn if the user renames a local item
Mikael Berthe <mikael@lilotux.net>
parents: 1355
diff changeset
2013 bjid = buddy_getjid(bud);
7794d76ca90e Warn if the user renames a local item
Mikael Berthe <mikael@lilotux.net>
parents: 1355
diff changeset
2014 group = buddy_getgroupname(bud);
7794d76ca90e Warn if the user renames a local item
Mikael Berthe <mikael@lilotux.net>
parents: 1355
diff changeset
2015 type = buddy_gettype(bud);
7794d76ca90e Warn if the user renames a local item
Mikael Berthe <mikael@lilotux.net>
parents: 1355
diff changeset
2016 on_srv = buddy_getonserverflag(bud);
208
8b08f34922c5 [/trunk] Changeset 220 by mikael
mikael
parents: 206
diff changeset
2017
885
afdd81c2c44d Allow /rename for groups
Mikael Berthe <mikael@lilotux.net>
parents: 873
diff changeset
2018 if (type & ROSTER_TYPE_SPECIAL) {
afdd81c2c44d Allow /rename for groups
Mikael Berthe <mikael@lilotux.net>
parents: 873
diff changeset
2019 scr_LogPrint(LPRINT_NORMAL, "You can't rename this item.");
208
8b08f34922c5 [/trunk] Changeset 220 by mikael
mikael
parents: 206
diff changeset
2020 return;
8b08f34922c5 [/trunk] Changeset 220 by mikael
mikael
parents: 206
diff changeset
2021 }
885
afdd81c2c44d Allow /rename for groups
Mikael Berthe <mikael@lilotux.net>
parents: 873
diff changeset
2022
afdd81c2c44d Allow /rename for groups
Mikael Berthe <mikael@lilotux.net>
parents: 873
diff changeset
2023 if (!*arg && !(type & ROSTER_TYPE_GROUP)) {
afdd81c2c44d Allow /rename for groups
Mikael Berthe <mikael@lilotux.net>
parents: 873
diff changeset
2024 scr_LogPrint(LPRINT_NORMAL, "Please specify a new name.");
848
a9161d2dc414 Introduce special buffer stuff
Mikael Berthe <mikael@lilotux.net>
parents: 847
diff changeset
2025 return;
a9161d2dc414 Introduce special buffer stuff
Mikael Berthe <mikael@lilotux.net>
parents: 847
diff changeset
2026 }
208
8b08f34922c5 [/trunk] Changeset 220 by mikael
mikael
parents: 206
diff changeset
2027
1976
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2028 //if (!(type & ROSTER_TYPE_GROUP) && !on_srv) {
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2029 // scr_LogPrint(LPRINT_NORMAL,
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2030 // "Note: this item will be added to your server roster.");
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2031 // // If this is a MUC room w/o bookmark, let's give a small hint...
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2032 // if ((type & ROSTER_TYPE_ROOM) && !xmpp_is_bookmarked(bjid)) {
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2033 // scr_LogPrint(LPRINT_NORMAL,
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2034 // "You should add a room bookmark or it will not be "
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2035 // "recognized as a MUC room next time you run mcabber.");
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2036 // }
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2037 //}
1356
7794d76ca90e Warn if the user renames a local item
Mikael Berthe <mikael@lilotux.net>
parents: 1355
diff changeset
2038
208
8b08f34922c5 [/trunk] Changeset 220 by mikael
mikael
parents: 206
diff changeset
2039 newname = g_strdup(arg);
8b08f34922c5 [/trunk] Changeset 220 by mikael
mikael
parents: 206
diff changeset
2040 // Remove trailing space
8b08f34922c5 [/trunk] Changeset 220 by mikael
mikael
parents: 206
diff changeset
2041 for (p = newname; *p; p++) ;
8b08f34922c5 [/trunk] Changeset 220 by mikael
mikael
parents: 206
diff changeset
2042 while (p > newname && *p == ' ') *p = 0;
8b08f34922c5 [/trunk] Changeset 220 by mikael
mikael
parents: 206
diff changeset
2043
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2044 strip_arg_special_chars(newname);
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2045
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2046 name_utf8 = to_utf8(newname);
885
afdd81c2c44d Allow /rename for groups
Mikael Berthe <mikael@lilotux.net>
parents: 873
diff changeset
2047
afdd81c2c44d Allow /rename for groups
Mikael Berthe <mikael@lilotux.net>
parents: 873
diff changeset
2048 if (type & ROSTER_TYPE_GROUP) {
afdd81c2c44d Allow /rename for groups
Mikael Berthe <mikael@lilotux.net>
parents: 873
diff changeset
2049 // Rename a whole group
afdd81c2c44d Allow /rename for groups
Mikael Berthe <mikael@lilotux.net>
parents: 873
diff changeset
2050 foreach_group_member(bud, &move_group_member, name_utf8);
afdd81c2c44d Allow /rename for groups
Mikael Berthe <mikael@lilotux.net>
parents: 873
diff changeset
2051 // Let's jump to the previous buddy, because this group name should
afdd81c2c44d Allow /rename for groups
Mikael Berthe <mikael@lilotux.net>
parents: 873
diff changeset
2052 // disappear when we receive the server answer.
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
2053 scr_roster_up_down(-1, 1);
885
afdd81c2c44d Allow /rename for groups
Mikael Berthe <mikael@lilotux.net>
parents: 873
diff changeset
2054 } else {
afdd81c2c44d Allow /rename for groups
Mikael Berthe <mikael@lilotux.net>
parents: 873
diff changeset
2055 // Rename a single buddy
1527
ac87eef9050f "/rename -" can be used to delete the nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1525
diff changeset
2056 guint del_name = 0;
ac87eef9050f "/rename -" can be used to delete the nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1525
diff changeset
2057 if (!*newname || !strcmp(arg, "-"))
ac87eef9050f "/rename -" can be used to delete the nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1525
diff changeset
2058 del_name = TRUE;
1976
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2059 if (on_srv) {
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2060 /* We do not rename the buddy right now because the server could reject
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2061 * the request. Let's wait for the server answer.
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2062 */
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2063 xmpp_updatebuddy(bjid, (del_name ? NULL : name_utf8), group);
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2064 } else {
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2065 // This is a local item, we rename it without adding to roster.
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2066 buddy_setname(bud, (del_name ? (char*)bjid : name_utf8));
1980
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
2067 if ((type & ROSTER_TYPE_ROOM) && xmpp_is_bookmarked(bjid) &&
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
2068 settings_opt_get_int("muc_bookmark_autoupdate"))
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
2069 room_bookmark(bud, NULL);
1976
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2070 }
885
afdd81c2c44d Allow /rename for groups
Mikael Berthe <mikael@lilotux.net>
parents: 873
diff changeset
2071 }
208
8b08f34922c5 [/trunk] Changeset 220 by mikael
mikael
parents: 206
diff changeset
2072
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2073 g_free(name_utf8);
208
8b08f34922c5 [/trunk] Changeset 220 by mikael
mikael
parents: 206
diff changeset
2074 g_free(newname);
8b08f34922c5 [/trunk] Changeset 220 by mikael
mikael
parents: 206
diff changeset
2075 update_roster = TRUE;
8b08f34922c5 [/trunk] Changeset 220 by mikael
mikael
parents: 206
diff changeset
2076 }
8b08f34922c5 [/trunk] Changeset 220 by mikael
mikael
parents: 206
diff changeset
2077
336
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
2078 static void do_move(char *arg)
210
f64818ba3503 [/trunk] Changeset 222 by mikael
mikael
parents: 208
diff changeset
2079 {
f64818ba3503 [/trunk] Changeset 222 by mikael
mikael
parents: 208
diff changeset
2080 gpointer bud;
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2081 const char *bjid, *name, *oldgroupname;
1976
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2082 guint type, on_srv;
210
f64818ba3503 [/trunk] Changeset 222 by mikael
mikael
parents: 208
diff changeset
2083 char *newgroupname, *p;
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2084 char *group_utf8;
210
f64818ba3503 [/trunk] Changeset 222 by mikael
mikael
parents: 208
diff changeset
2085
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2086 if (!current_buddy)
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2087 return;
210
f64818ba3503 [/trunk] Changeset 222 by mikael
mikael
parents: 208
diff changeset
2088 bud = BUDDATA(current_buddy);
f64818ba3503 [/trunk] Changeset 222 by mikael
mikael
parents: 208
diff changeset
2089
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2090 bjid = buddy_getjid(bud);
210
f64818ba3503 [/trunk] Changeset 222 by mikael
mikael
parents: 208
diff changeset
2091 name = buddy_getname(bud);
f64818ba3503 [/trunk] Changeset 222 by mikael
mikael
parents: 208
diff changeset
2092 type = buddy_gettype(bud);
1976
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2093 on_srv = buddy_getonserverflag(bud);
210
f64818ba3503 [/trunk] Changeset 222 by mikael
mikael
parents: 208
diff changeset
2094
620
97dd14e22b2a Rewrite buddy_setgroup()
Mikael Berthe <mikael@lilotux.net>
parents: 617
diff changeset
2095 oldgroupname = buddy_getgroupname(bud);
97dd14e22b2a Rewrite buddy_setgroup()
Mikael Berthe <mikael@lilotux.net>
parents: 617
diff changeset
2096
210
f64818ba3503 [/trunk] Changeset 222 by mikael
mikael
parents: 208
diff changeset
2097 if (type & ROSTER_TYPE_GROUP) {
374
bd5638c21834 Improve logging system (traces)
Mikael Berthe <mikael@lilotux.net>
parents: 371
diff changeset
2098 scr_LogPrint(LPRINT_NORMAL, "You can't move groups!");
210
f64818ba3503 [/trunk] Changeset 222 by mikael
mikael
parents: 208
diff changeset
2099 return;
f64818ba3503 [/trunk] Changeset 222 by mikael
mikael
parents: 208
diff changeset
2100 }
848
a9161d2dc414 Introduce special buffer stuff
Mikael Berthe <mikael@lilotux.net>
parents: 847
diff changeset
2101 if (type & ROSTER_TYPE_SPECIAL) {
a9161d2dc414 Introduce special buffer stuff
Mikael Berthe <mikael@lilotux.net>
parents: 847
diff changeset
2102 scr_LogPrint(LPRINT_NORMAL, "You can't move this item.");
a9161d2dc414 Introduce special buffer stuff
Mikael Berthe <mikael@lilotux.net>
parents: 847
diff changeset
2103 return;
a9161d2dc414 Introduce special buffer stuff
Mikael Berthe <mikael@lilotux.net>
parents: 847
diff changeset
2104 }
210
f64818ba3503 [/trunk] Changeset 222 by mikael
mikael
parents: 208
diff changeset
2105
f64818ba3503 [/trunk] Changeset 222 by mikael
mikael
parents: 208
diff changeset
2106 newgroupname = g_strdup(arg);
f64818ba3503 [/trunk] Changeset 222 by mikael
mikael
parents: 208
diff changeset
2107 // Remove trailing space
f64818ba3503 [/trunk] Changeset 222 by mikael
mikael
parents: 208
diff changeset
2108 for (p = newgroupname; *p; p++) ;
608
89f5672eb523 /move: really strip trailing space, and assign to no group if no group is specified
Mikael Berthe <mikael@lilotux.net>
parents: 604
diff changeset
2109 while (p > newgroupname && *p == ' ') *p-- = 0;
210
f64818ba3503 [/trunk] Changeset 222 by mikael
mikael
parents: 208
diff changeset
2110
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2111 strip_arg_special_chars(newgroupname);
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2112
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2113 group_utf8 = to_utf8(newgroupname);
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2114 if (strcmp(oldgroupname, group_utf8)) {
1976
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2115 if (on_srv) {
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2116 xmpp_updatebuddy(bjid, name, *group_utf8 ? group_utf8 : NULL);
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2117 scr_roster_up_down(-1, 1);
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2118
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2119 /* We do not move the buddy right now because the server could reject
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2120 * the request. Let's wait for the server answer.
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2121 */
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2122 } else {
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2123 // This is a local item, we move it without adding to roster.
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2124 guint msgflag;
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2125
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2126 // If the buddy has a pending message flag,
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2127 // we remove it temporarily in order to reset the global group
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2128 // flag. We set it back once the room is in the new group,
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2129 // which will update the new group's flag.
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2130 msgflag = buddy_getflags(bud) & ROSTER_FLAG_MSG;
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2131 if (msgflag)
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2132 roster_msg_setflag(bjid, FALSE, FALSE);
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2133 buddy_setgroup(bud, group_utf8);
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2134 if (msgflag)
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2135 roster_msg_setflag(bjid, FALSE, TRUE);
1980
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
2136 if ((type & ROSTER_TYPE_ROOM) && xmpp_is_bookmarked(bjid) &&
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
2137 settings_opt_get_int("muc_bookmark_autoupdate"))
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
2138 room_bookmark(bud, NULL);
1976
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
2139 }
620
97dd14e22b2a Rewrite buddy_setgroup()
Mikael Berthe <mikael@lilotux.net>
parents: 617
diff changeset
2140 }
210
f64818ba3503 [/trunk] Changeset 222 by mikael
mikael
parents: 208
diff changeset
2141
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2142 g_free(group_utf8);
210
f64818ba3503 [/trunk] Changeset 222 by mikael
mikael
parents: 208
diff changeset
2143 g_free(newgroupname);
f64818ba3503 [/trunk] Changeset 222 by mikael
mikael
parents: 208
diff changeset
2144 update_roster = TRUE;
f64818ba3503 [/trunk] Changeset 222 by mikael
mikael
parents: 208
diff changeset
2145 }
f64818ba3503 [/trunk] Changeset 222 by mikael
mikael
parents: 208
diff changeset
2146
1760
106bbf7e97da Sort and pretty-format options list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1749
diff changeset
2147 static void list_option_cb(char *k, char *v, void *f)
1661
64a7428afcb3 Print list of options with '/set'
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1653
diff changeset
2148 {
1772
c450d1e66c2e Don't let "/set" show the password with all other variables
Mikael Berthe <mikael@lilotux.net>
parents: 1761
diff changeset
2149 if (strcmp(k, "password")) {
c450d1e66c2e Don't let "/set" show the password with all other variables
Mikael Berthe <mikael@lilotux.net>
parents: 1761
diff changeset
2150 GSList **list = f;
c450d1e66c2e Don't let "/set" show the password with all other variables
Mikael Berthe <mikael@lilotux.net>
parents: 1761
diff changeset
2151 *list = g_slist_insert_sorted(*list, k, (GCompareFunc)strcmp);
c450d1e66c2e Don't let "/set" show the password with all other variables
Mikael Berthe <mikael@lilotux.net>
parents: 1761
diff changeset
2152 }
1661
64a7428afcb3 Print list of options with '/set'
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1653
diff changeset
2153 }
64a7428afcb3 Print list of options with '/set'
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1653
diff changeset
2154
336
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
2155 static void do_set(char *arg)
283
00b2377539ac Add /set command (to get/set/unset options values)
Mikael Berthe <mikael@lilotux.net>
parents: 277
diff changeset
2156 {
00b2377539ac Add /set command (to get/set/unset options values)
Mikael Berthe <mikael@lilotux.net>
parents: 277
diff changeset
2157 guint assign;
1074
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2158 gchar *option, *value;
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2159 gchar *option_utf8;
393
f8f3c7493457 Whitespace cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 384
diff changeset
2160
1661
64a7428afcb3 Print list of options with '/set'
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1653
diff changeset
2161 if (!*arg) {
64a7428afcb3 Print list of options with '/set'
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1653
diff changeset
2162 // list all set options
1760
106bbf7e97da Sort and pretty-format options list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1749
diff changeset
2163 GSList *list = NULL;
106bbf7e97da Sort and pretty-format options list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1749
diff changeset
2164 // Get sorted list of keys
106bbf7e97da Sort and pretty-format options list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1749
diff changeset
2165 settings_foreach(SETTINGS_TYPE_OPTION, list_option_cb, &list);
106bbf7e97da Sort and pretty-format options list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1749
diff changeset
2166 if (list) {
106bbf7e97da Sort and pretty-format options list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1749
diff changeset
2167 gsize max = 0;
1761
61f0482d3993 Limit = alignment to 1/3 of screen in option list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1760
diff changeset
2168 gsize maxmax = scr_gettextwidth() / 3;
1760
106bbf7e97da Sort and pretty-format options list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1749
diff changeset
2169 GSList *lel;
106bbf7e97da Sort and pretty-format options list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1749
diff changeset
2170 gchar *format;
106bbf7e97da Sort and pretty-format options list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1749
diff changeset
2171 // Find out maximum key length
106bbf7e97da Sort and pretty-format options list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1749
diff changeset
2172 for (lel = list; lel; lel = lel->next) {
106bbf7e97da Sort and pretty-format options list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1749
diff changeset
2173 const gchar *key = lel->data;
106bbf7e97da Sort and pretty-format options list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1749
diff changeset
2174 gsize len = strlen(key);
1761
61f0482d3993 Limit = alignment to 1/3 of screen in option list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1760
diff changeset
2175 if (len > max) {
1760
106bbf7e97da Sort and pretty-format options list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1749
diff changeset
2176 max = len;
1761
61f0482d3993 Limit = alignment to 1/3 of screen in option list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1760
diff changeset
2177 if (max > maxmax) {
61f0482d3993 Limit = alignment to 1/3 of screen in option list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1760
diff changeset
2178 max = maxmax;
61f0482d3993 Limit = alignment to 1/3 of screen in option list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1760
diff changeset
2179 break;
61f0482d3993 Limit = alignment to 1/3 of screen in option list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1760
diff changeset
2180 }
61f0482d3993 Limit = alignment to 1/3 of screen in option list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1760
diff changeset
2181 }
1760
106bbf7e97da Sort and pretty-format options list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1749
diff changeset
2182 }
106bbf7e97da Sort and pretty-format options list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1749
diff changeset
2183 // Print out list of options
1774
dc4bd31c2254 Fix two warnings
Mikael Berthe <mikael@lilotux.net>
parents: 1772
diff changeset
2184 format = g_strdup_printf("%%-%us = [%%s]", (unsigned)max);
1760
106bbf7e97da Sort and pretty-format options list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1749
diff changeset
2185 for (lel = list; lel; lel = lel->next) {
106bbf7e97da Sort and pretty-format options list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1749
diff changeset
2186 const gchar *key = lel->data;
106bbf7e97da Sort and pretty-format options list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1749
diff changeset
2187 scr_LogPrint(LPRINT_NORMAL, format, key, settings_opt_get(key));
106bbf7e97da Sort and pretty-format options list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1749
diff changeset
2188 }
106bbf7e97da Sort and pretty-format options list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1749
diff changeset
2189 g_free(format);
106bbf7e97da Sort and pretty-format options list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1749
diff changeset
2190 scr_setmsgflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE);
1815
6abca6000762 Make use of ROSTER_UI_PRIO_STATUS_WIN_MESSAGE
Mikael Berthe <mikael@lilotux.net>
parents: 1811
diff changeset
2191 scr_setattentionflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE,
6abca6000762 Make use of ROSTER_UI_PRIO_STATUS_WIN_MESSAGE
Mikael Berthe <mikael@lilotux.net>
parents: 1811
diff changeset
2192 ROSTER_UI_PRIO_STATUS_WIN_MESSAGE, prio_max);
1760
106bbf7e97da Sort and pretty-format options list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1749
diff changeset
2193 } else
106bbf7e97da Sort and pretty-format options list
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1749
diff changeset
2194 scr_LogPrint(LPRINT_NORMAL, "No options found.");
1661
64a7428afcb3 Print list of options with '/set'
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1653
diff changeset
2195 return;
64a7428afcb3 Print list of options with '/set'
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1653
diff changeset
2196 }
64a7428afcb3 Print list of options with '/set'
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1653
diff changeset
2197
283
00b2377539ac Add /set command (to get/set/unset options values)
Mikael Berthe <mikael@lilotux.net>
parents: 277
diff changeset
2198 assign = parse_assigment(arg, &option, &value);
00b2377539ac Add /set command (to get/set/unset options values)
Mikael Berthe <mikael@lilotux.net>
parents: 277
diff changeset
2199 if (!option) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2200 scr_LogPrint(LPRINT_NORMAL, "Set what option?");
283
00b2377539ac Add /set command (to get/set/unset options values)
Mikael Berthe <mikael@lilotux.net>
parents: 277
diff changeset
2201 return;
00b2377539ac Add /set command (to get/set/unset options values)
Mikael Berthe <mikael@lilotux.net>
parents: 277
diff changeset
2202 }
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2203 option_utf8 = to_utf8(option);
1074
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2204 g_free(option);
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2205 if (!assign) { // This is a query
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2206 const char *val = settings_opt_get(option_utf8);
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2207 if (val)
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2208 scr_LogPrint(LPRINT_NORMAL, "%s = [%s]", option_utf8, val);
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2209 else
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2210 scr_LogPrint(LPRINT_NORMAL, "Option %s is not set", option_utf8);
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2211 g_free(option_utf8);
283
00b2377539ac Add /set command (to get/set/unset options values)
Mikael Berthe <mikael@lilotux.net>
parents: 277
diff changeset
2212 return;
00b2377539ac Add /set command (to get/set/unset options values)
Mikael Berthe <mikael@lilotux.net>
parents: 277
diff changeset
2213 }
00b2377539ac Add /set command (to get/set/unset options values)
Mikael Berthe <mikael@lilotux.net>
parents: 277
diff changeset
2214 // Update the option
1074
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2215 // Maybe some options should be protected when user is connected (server,
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2216 // username, etc.). And we should catch some options here, too
283
00b2377539ac Add /set command (to get/set/unset options values)
Mikael Berthe <mikael@lilotux.net>
parents: 277
diff changeset
2217 // (hide_offline_buddies for ex.)
00b2377539ac Add /set command (to get/set/unset options values)
Mikael Berthe <mikael@lilotux.net>
parents: 277
diff changeset
2218 if (!value) {
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2219 settings_del(SETTINGS_TYPE_OPTION, option_utf8);
283
00b2377539ac Add /set command (to get/set/unset options values)
Mikael Berthe <mikael@lilotux.net>
parents: 277
diff changeset
2220 } else {
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2221 gchar *value_utf8 = to_utf8(value);
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2222 settings_set(SETTINGS_TYPE_OPTION, option_utf8, value_utf8);
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2223 g_free(value_utf8);
1074
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2224 g_free(value);
283
00b2377539ac Add /set command (to get/set/unset options values)
Mikael Berthe <mikael@lilotux.net>
parents: 277
diff changeset
2225 }
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2226 g_free(option_utf8);
283
00b2377539ac Add /set command (to get/set/unset options values)
Mikael Berthe <mikael@lilotux.net>
parents: 277
diff changeset
2227 }
00b2377539ac Add /set command (to get/set/unset options values)
Mikael Berthe <mikael@lilotux.net>
parents: 277
diff changeset
2228
1070
9eaacc0ad3a2 Use a hash for settings
Mikael Berthe <mikael@lilotux.net>
parents: 1066
diff changeset
2229 static void dump_alias(char *k, char *v, void *param)
867
7f056c566569 Commands /alias & /bind list the key bindings and aliases
Mikael Berthe <mikael@lilotux.net>
parents: 866
diff changeset
2230 {
7f056c566569 Commands /alias & /bind list the key bindings and aliases
Mikael Berthe <mikael@lilotux.net>
parents: 866
diff changeset
2231 scr_LogPrint(LPRINT_NORMAL|LPRINT_NOTUTF8, "Alias %s = %s", k, v);
1745
5ef7629a96ff Set the message flag when using /set, /bind or /alias
Mikael Berthe <mikael@lilotux.net>
parents: 1740
diff changeset
2232 scr_setmsgflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE);
1815
6abca6000762 Make use of ROSTER_UI_PRIO_STATUS_WIN_MESSAGE
Mikael Berthe <mikael@lilotux.net>
parents: 1811
diff changeset
2233 scr_setattentionflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE,
6abca6000762 Make use of ROSTER_UI_PRIO_STATUS_WIN_MESSAGE
Mikael Berthe <mikael@lilotux.net>
parents: 1811
diff changeset
2234 ROSTER_UI_PRIO_STATUS_WIN_MESSAGE, prio_max);
867
7f056c566569 Commands /alias & /bind list the key bindings and aliases
Mikael Berthe <mikael@lilotux.net>
parents: 866
diff changeset
2235 }
7f056c566569 Commands /alias & /bind list the key bindings and aliases
Mikael Berthe <mikael@lilotux.net>
parents: 866
diff changeset
2236
336
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
2237 static void do_alias(char *arg)
285
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
2238 {
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
2239 guint assign;
1074
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2240 gchar *alias, *value;
393
f8f3c7493457 Whitespace cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 384
diff changeset
2241
285
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
2242 assign = parse_assigment(arg, &alias, &value);
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
2243 if (!alias) {
867
7f056c566569 Commands /alias & /bind list the key bindings and aliases
Mikael Berthe <mikael@lilotux.net>
parents: 866
diff changeset
2244 settings_foreach(SETTINGS_TYPE_ALIAS, &dump_alias, NULL);
1745
5ef7629a96ff Set the message flag when using /set, /bind or /alias
Mikael Berthe <mikael@lilotux.net>
parents: 1740
diff changeset
2245 update_roster = TRUE;
285
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
2246 return;
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
2247 }
1074
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2248 if (!assign) { // This is a query
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2249 const char *val = settings_get(SETTINGS_TYPE_ALIAS, alias);
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2250 // NOTE: LPRINT_NOTUTF8 here, see below why it isn't encoded...
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2251 if (val)
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2252 scr_LogPrint(LPRINT_NORMAL|LPRINT_NOTUTF8, "%s = %s", alias, val);
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2253 else
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2254 scr_LogPrint(LPRINT_NORMAL|LPRINT_NOTUTF8,
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2255 "Alias '%s' does not exist", alias);
1074
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2256 goto do_alias_return;
285
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
2257 }
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
2258 // Check the alias does not conflict with a registered command
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
2259 if (cmd_get(alias)) {
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2260 scr_LogPrint(LPRINT_NORMAL|LPRINT_NOTUTF8,
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2261 "'%s' is a reserved word!", alias);
1074
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2262 goto do_alias_return;
285
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
2263 }
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
2264 // Update the alias
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
2265 if (!value) {
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
2266 if (settings_get(SETTINGS_TYPE_ALIAS, alias)) {
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
2267 settings_del(SETTINGS_TYPE_ALIAS, alias);
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
2268 // Remove alias from the completion list
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
2269 compl_del_category_word(COMPL_CMD, alias);
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
2270 }
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
2271 } else {
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2272 /* Add alias to the completion list, if not already in.
1074
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2273 NOTE: We're not UTF8-encoding "alias" and "value" here because UTF-8 is
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2274 not yet supported in the UI... (and we use the values in the completion
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2275 system)
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2276 */
285
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
2277 if (!settings_get(SETTINGS_TYPE_ALIAS, alias))
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
2278 compl_add_category_word(COMPL_CMD, alias);
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
2279 settings_set(SETTINGS_TYPE_ALIAS, alias, value);
1074
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2280 g_free(value);
285
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
2281 }
1074
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2282 do_alias_return:
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2283 g_free(alias);
285
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
2284 }
edc263a5d350 Add /alias command
Mikael Berthe <mikael@lilotux.net>
parents: 283
diff changeset
2285
1070
9eaacc0ad3a2 Use a hash for settings
Mikael Berthe <mikael@lilotux.net>
parents: 1066
diff changeset
2286 static void dump_bind(char *k, char *v, void *param)
867
7f056c566569 Commands /alias & /bind list the key bindings and aliases
Mikael Berthe <mikael@lilotux.net>
parents: 866
diff changeset
2287 {
7f056c566569 Commands /alias & /bind list the key bindings and aliases
Mikael Berthe <mikael@lilotux.net>
parents: 866
diff changeset
2288 scr_LogPrint(LPRINT_NORMAL, "Key %4s is bound to: %s", k, v);
7f056c566569 Commands /alias & /bind list the key bindings and aliases
Mikael Berthe <mikael@lilotux.net>
parents: 866
diff changeset
2289 }
7f056c566569 Commands /alias & /bind list the key bindings and aliases
Mikael Berthe <mikael@lilotux.net>
parents: 866
diff changeset
2290
336
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
2291 static void do_bind(char *arg)
288
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
2292 {
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
2293 guint assign;
1074
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2294 gchar *k_code, *value;
393
f8f3c7493457 Whitespace cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 384
diff changeset
2295
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2296 assign = parse_assigment(arg, &k_code, &value);
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2297 if (!k_code) {
867
7f056c566569 Commands /alias & /bind list the key bindings and aliases
Mikael Berthe <mikael@lilotux.net>
parents: 866
diff changeset
2298 settings_foreach(SETTINGS_TYPE_BINDING, &dump_bind, NULL);
1745
5ef7629a96ff Set the message flag when using /set, /bind or /alias
Mikael Berthe <mikael@lilotux.net>
parents: 1740
diff changeset
2299 scr_setmsgflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE);
1815
6abca6000762 Make use of ROSTER_UI_PRIO_STATUS_WIN_MESSAGE
Mikael Berthe <mikael@lilotux.net>
parents: 1811
diff changeset
2300 scr_setattentionflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE,
6abca6000762 Make use of ROSTER_UI_PRIO_STATUS_WIN_MESSAGE
Mikael Berthe <mikael@lilotux.net>
parents: 1811
diff changeset
2301 ROSTER_UI_PRIO_STATUS_WIN_MESSAGE, prio_max);
288
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
2302 return;
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
2303 }
1074
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2304 if (!assign) { // This is a query
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2305 const char *val = settings_get(SETTINGS_TYPE_BINDING, k_code);
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2306 if (val)
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2307 scr_LogPrint(LPRINT_NORMAL, "Key %s is bound to: %s", k_code, val);
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2308 else
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2309 scr_LogPrint(LPRINT_NORMAL, "Key %s is not bound.", k_code);
1074
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2310 g_free(k_code);
288
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
2311 return;
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
2312 }
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
2313 // Update the key binding
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2314 if (!value) {
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2315 settings_del(SETTINGS_TYPE_BINDING, k_code);
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2316 } else {
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2317 gchar *value_utf8 = to_utf8(value);
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2318 settings_set(SETTINGS_TYPE_BINDING, k_code, value_utf8);
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2319 g_free(value_utf8);
1074
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2320 g_free(value);
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2321 }
1074
b2fc694a8228 Fix a few memory leaks after calls to parse_assigment()
Mikael Berthe <mikael@lilotux.net>
parents: 1073
diff changeset
2322 g_free(k_code);
288
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
2323 }
1eea0fa0955e Add /bind command
Mikael Berthe <mikael@lilotux.net>
parents: 285
diff changeset
2324
436
802da817a684 Add /rawxml command
Mikael Berthe <mikael@lilotux.net>
parents: 416
diff changeset
2325 static void do_rawxml(char *arg)
802da817a684 Add /rawxml command
Mikael Berthe <mikael@lilotux.net>
parents: 416
diff changeset
2326 {
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2327 char **paramlst;
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2328 char *subcmd;
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2329
1684
95df4ea512c8 Provide xmpp_is_online()
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1682
diff changeset
2330 if (!xmpp_is_online()) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2331 scr_LogPrint(LPRINT_NORMAL, "You are not connected.");
472
75442262c082 Disable some commands when not connected
Mikael Berthe <mikael@lilotux.net>
parents: 471
diff changeset
2332 return;
75442262c082 Disable some commands when not connected
Mikael Berthe <mikael@lilotux.net>
parents: 471
diff changeset
2333 }
75442262c082 Disable some commands when not connected
Mikael Berthe <mikael@lilotux.net>
parents: 471
diff changeset
2334
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2335 paramlst = split_arg(arg, 2, 1); // subcmd, arg
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2336 subcmd = *paramlst;
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2337 arg = *(paramlst+1);
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2338
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2339 if (!subcmd || !*subcmd) {
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2340 scr_LogPrint(LPRINT_NORMAL, "Please read the manual page"
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2341 " before using /rawxml :-)");
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2342 free_arg_lst(paramlst);
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2343 return;
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2344 }
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2345
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2346 if (!strcasecmp(subcmd, "send")) {
461
1d8f5b3a5f2b Convert /rawxml argument to UTF8
Mikael Berthe <mikael@lilotux.net>
parents: 454
diff changeset
2347 gchar *buffer;
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2348
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2349 if (!subcmd || !*subcmd) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2350 scr_LogPrint(LPRINT_NORMAL, "Missing parameter.");
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2351 free_arg_lst(paramlst);
461
1d8f5b3a5f2b Convert /rawxml argument to UTF8
Mikael Berthe <mikael@lilotux.net>
parents: 454
diff changeset
2352 return;
1d8f5b3a5f2b Convert /rawxml argument to UTF8
Mikael Berthe <mikael@lilotux.net>
parents: 454
diff changeset
2353 }
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2354
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2355 // We don't strip_arg_special_chars() here, because it would be a pain for
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2356 // the user to escape quotes in a XML stream...
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2357
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2358 buffer = to_utf8(arg);
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2359 if (buffer) {
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2360 scr_LogPrint(LPRINT_NORMAL, "Sending XML string");
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
2361 lm_connection_send_raw(lconnection, buffer, NULL);
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2362 g_free(buffer);
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2363 } else {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2364 scr_LogPrint(LPRINT_NORMAL, "Conversion error in XML string.");
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2365 }
436
802da817a684 Add /rawxml command
Mikael Berthe <mikael@lilotux.net>
parents: 416
diff changeset
2366 } else {
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2367 scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!");
436
802da817a684 Add /rawxml command
Mikael Berthe <mikael@lilotux.net>
parents: 416
diff changeset
2368 }
557
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2369
c72a66dfd2d4 Use split_arg() in most commands
Mikael Berthe <mikael@lilotux.net>
parents: 555
diff changeset
2370 free_arg_lst(paramlst);
436
802da817a684 Add /rawxml command
Mikael Berthe <mikael@lilotux.net>
parents: 416
diff changeset
2371 }
802da817a684 Add /rawxml command
Mikael Berthe <mikael@lilotux.net>
parents: 416
diff changeset
2372
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2373 // check_room_subcommand(arg, param_needed, buddy_must_be_a_room)
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2374 // - Check if this is a room, if buddy_must_be_a_room is not null
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2375 // - Check there is at least 1 parameter, if param_needed is true
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2376 // - Return null if one of the checks fails, or a pointer to the first
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2377 // non-space character.
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2378 static char *check_room_subcommand(char *arg, bool param_needed,
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2379 gpointer buddy_must_be_a_room)
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2380 {
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2381 if (buddy_must_be_a_room &&
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2382 !(buddy_gettype(buddy_must_be_a_room) & ROSTER_TYPE_ROOM)) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2383 scr_LogPrint(LPRINT_NORMAL, "This isn't a conference room.");
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2384 return NULL;
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2385 }
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2386
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2387 if (param_needed) {
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2388 if (!arg) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2389 scr_LogPrint(LPRINT_NORMAL, "Missing parameter.");
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2390 return NULL;
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2391 }
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2392 }
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2393
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2394 if (arg)
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2395 return arg;
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2396 else
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2397 return "";
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2398 }
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2399
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2400 static void room_join(gpointer bud, char *arg)
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2401 {
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2402 char **paramlst;
1033
056364952b0d [BP-7f216b904315] Fix a potential double UTF-8 encoding
Mikael Berthe <mikael@lilotux.net>
parents: 960
diff changeset
2403 char *roomname, *nick, *pass;
056364952b0d [BP-7f216b904315] Fix a potential double UTF-8 encoding
Mikael Berthe <mikael@lilotux.net>
parents: 960
diff changeset
2404 char *roomname_tmp = NULL;
900
b41684465283 MUC: join password-protected room
Mikael Berthe <mikael@lilotux.net>
parents: 885
diff changeset
2405 char *pass_utf8;
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2406
900
b41684465283 MUC: join password-protected room
Mikael Berthe <mikael@lilotux.net>
parents: 885
diff changeset
2407 paramlst = split_arg(arg, 3, 0); // roomid, nickname, password
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2408 roomname = *paramlst;
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2409 nick = *(paramlst+1);
900
b41684465283 MUC: join password-protected room
Mikael Berthe <mikael@lilotux.net>
parents: 885
diff changeset
2410 pass = *(paramlst+2);
b41684465283 MUC: join password-protected room
Mikael Berthe <mikael@lilotux.net>
parents: 885
diff changeset
2411
1033
056364952b0d [BP-7f216b904315] Fix a potential double UTF-8 encoding
Mikael Berthe <mikael@lilotux.net>
parents: 960
diff changeset
2412 if (!roomname)
056364952b0d [BP-7f216b904315] Fix a potential double UTF-8 encoding
Mikael Berthe <mikael@lilotux.net>
parents: 960
diff changeset
2413 nick = NULL;
900
b41684465283 MUC: join password-protected room
Mikael Berthe <mikael@lilotux.net>
parents: 885
diff changeset
2414 if (!nick)
b41684465283 MUC: join password-protected room
Mikael Berthe <mikael@lilotux.net>
parents: 885
diff changeset
2415 pass = NULL;
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2416
841
f8c0447beec2 Allow "/room join . [nick]" if the current item is a MUC room
Mikael Berthe <mikael@lilotux.net>
parents: 840
diff changeset
2417 if (!roomname || !strcmp(roomname, ".")) {
f8c0447beec2 Allow "/room join . [nick]" if the current item is a MUC room
Mikael Berthe <mikael@lilotux.net>
parents: 840
diff changeset
2418 // If the current_buddy is recognized as a room, the room name
f8c0447beec2 Allow "/room join . [nick]" if the current item is a MUC room
Mikael Berthe <mikael@lilotux.net>
parents: 840
diff changeset
2419 // can be omitted (or "." can be used).
f8c0447beec2 Allow "/room join . [nick]" if the current item is a MUC room
Mikael Berthe <mikael@lilotux.net>
parents: 840
diff changeset
2420 if (!bud || !(buddy_gettype(bud) & ROSTER_TYPE_ROOM)) {
f8c0447beec2 Allow "/room join . [nick]" if the current item is a MUC room
Mikael Berthe <mikael@lilotux.net>
parents: 840
diff changeset
2421 scr_LogPrint(LPRINT_NORMAL, "Please specify a room name.");
f8c0447beec2 Allow "/room join . [nick]" if the current item is a MUC room
Mikael Berthe <mikael@lilotux.net>
parents: 840
diff changeset
2422 free_arg_lst(paramlst);
f8c0447beec2 Allow "/room join . [nick]" if the current item is a MUC room
Mikael Berthe <mikael@lilotux.net>
parents: 840
diff changeset
2423 return;
f8c0447beec2 Allow "/room join . [nick]" if the current item is a MUC room
Mikael Berthe <mikael@lilotux.net>
parents: 840
diff changeset
2424 }
f8c0447beec2 Allow "/room join . [nick]" if the current item is a MUC room
Mikael Berthe <mikael@lilotux.net>
parents: 840
diff changeset
2425 roomname = (char*)buddy_getjid(bud);
f8c0447beec2 Allow "/room join . [nick]" if the current item is a MUC room
Mikael Berthe <mikael@lilotux.net>
parents: 840
diff changeset
2426 } else if (strchr(roomname, '/')) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2427 scr_LogPrint(LPRINT_NORMAL, "Invalid room name.");
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2428 free_arg_lst(paramlst);
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2429 return;
1033
056364952b0d [BP-7f216b904315] Fix a potential double UTF-8 encoding
Mikael Berthe <mikael@lilotux.net>
parents: 960
diff changeset
2430 } else {
056364952b0d [BP-7f216b904315] Fix a potential double UTF-8 encoding
Mikael Berthe <mikael@lilotux.net>
parents: 960
diff changeset
2431 // The room id has been specified. Let's convert it and use it.
1648
63d8473df2c3 Fix encoding issues in room command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1635
diff changeset
2432 mc_strtolower(roomname);
63d8473df2c3 Fix encoding issues in room command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1635
diff changeset
2433 roomname = roomname_tmp = to_utf8(roomname);
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2434 }
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2435
659
e61aa455c61b MUC: Add "nickname" option variable
Mikael Berthe <mikael@lilotux.net>
parents: 653
diff changeset
2436 // If no nickname is provided with the /join command,
1004
b57a01ffeed6 Use existing conference bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1003
diff changeset
2437 // we try to get a default nickname.
b57a01ffeed6 Use existing conference bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1003
diff changeset
2438 if (!nick || !*nick)
1395
d431cd75eb53 Use bookmarked nickname when manually joining a room
Mikael Berthe <mikael@lilotux.net>
parents: 1392
diff changeset
2439 nick = default_muc_nickname(roomname);
1004
b57a01ffeed6 Use existing conference bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1003
diff changeset
2440 else
b57a01ffeed6 Use existing conference bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1003
diff changeset
2441 nick = to_utf8(nick);
659
e61aa455c61b MUC: Add "nickname" option variable
Mikael Berthe <mikael@lilotux.net>
parents: 653
diff changeset
2442 // If we still have no nickname, give up
565
89c347b3e4c1 MUC: Make "/room nick" display the current nickname
Mikael Berthe <mikael@lilotux.net>
parents: 558
diff changeset
2443 if (!nick || !*nick) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2444 scr_LogPrint(LPRINT_NORMAL, "Please specify a nickname.");
1004
b57a01ffeed6 Use existing conference bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1003
diff changeset
2445 g_free(nick);
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2446 free_arg_lst(paramlst);
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2447 return;
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2448 }
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2449
900
b41684465283 MUC: join password-protected room
Mikael Berthe <mikael@lilotux.net>
parents: 885
diff changeset
2450 pass_utf8 = to_utf8(pass);
b41684465283 MUC: join password-protected room
Mikael Berthe <mikael@lilotux.net>
parents: 885
diff changeset
2451
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
2452 xmpp_room_join(roomname, nick, pass_utf8);
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2453
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2454 scr_LogPrint(LPRINT_LOGNORM, "Sent a join request to <%s>...", roomname);
653
d5db5be78eb0 MUC: Be more verbose when joining a room
Mikael Berthe <mikael@lilotux.net>
parents: 652
diff changeset
2455
1033
056364952b0d [BP-7f216b904315] Fix a potential double UTF-8 encoding
Mikael Berthe <mikael@lilotux.net>
parents: 960
diff changeset
2456 g_free(roomname_tmp);
1004
b57a01ffeed6 Use existing conference bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1003
diff changeset
2457 g_free(nick);
900
b41684465283 MUC: join password-protected room
Mikael Berthe <mikael@lilotux.net>
parents: 885
diff changeset
2458 g_free(pass_utf8);
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2459 buddylist_build();
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2460 update_roster = TRUE;
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2461 free_arg_lst(paramlst);
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2462 }
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2463
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2464 static void room_invite(gpointer bud, char *arg)
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2465 {
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2466 char **paramlst;
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2467 const gchar *roomname;
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2468 char* fjid;
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2469 gchar *reason_utf8;
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2470
570
29806b0fe830 Some parsing improvements
Mikael Berthe <mikael@lilotux.net>
parents: 568
diff changeset
2471 paramlst = split_arg(arg, 2, 1); // jid, [reason]
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2472 fjid = *paramlst;
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2473 arg = *(paramlst+1);
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2474 // An empty reason is no reason...
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2475 if (arg && !*arg)
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2476 arg = NULL;
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2477
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2478 if (!fjid || !*fjid) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2479 scr_LogPrint(LPRINT_NORMAL, "Missing or incorrect Jabber ID.");
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2480 free_arg_lst(paramlst);
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2481 return;
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2482 }
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2483
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2484 roomname = buddy_getjid(bud);
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2485 reason_utf8 = to_utf8(arg);
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
2486 xmpp_room_invite(roomname, fjid, reason_utf8);
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2487 scr_LogPrint(LPRINT_LOGNORM, "Invitation sent to <%s>.", fjid);
774
46304b773a44 Remove useless checks before g_free() calls
Mikael Berthe <mikael@lilotux.net>
parents: 772
diff changeset
2488 g_free(reason_utf8);
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2489 free_arg_lst(paramlst);
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2490 }
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2491
585
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2492 static void room_affil(gpointer bud, char *arg)
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2493 {
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2494 char **paramlst;
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2495 gchar *fjid, *rolename;
585
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2496 struct role_affil ra;
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2497 const char *roomid = buddy_getjid(bud);
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2498
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2499 paramlst = split_arg(arg, 3, 1); // jid, new_affil, [reason]
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2500 fjid = *paramlst;
585
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2501 rolename = *(paramlst+1);
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2502 arg = *(paramlst+2);
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2503
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2504 if (!fjid || !*fjid || !rolename || !*rolename) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2505 scr_LogPrint(LPRINT_NORMAL, "Please specify both a Jabber ID and a role.");
585
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2506 free_arg_lst(paramlst);
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2507 return;
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2508 }
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2509
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2510 ra.type = type_affil;
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2511 ra.val.affil = affil_none;
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2512 for (; ra.val.affil < imaffiliation_size; ra.val.affil++)
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2513 if (!strcasecmp(rolename, straffil[ra.val.affil]))
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2514 break;
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2515
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2516 if (ra.val.affil < imaffiliation_size) {
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2517 gchar *jid_utf8, *reason_utf8;
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2518 jid_utf8 = to_utf8(fjid);
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2519 reason_utf8 = to_utf8(arg);
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
2520 xmpp_room_setattrib(roomid, jid_utf8, NULL, ra, reason_utf8);
774
46304b773a44 Remove useless checks before g_free() calls
Mikael Berthe <mikael@lilotux.net>
parents: 772
diff changeset
2521 g_free(jid_utf8);
46304b773a44 Remove useless checks before g_free() calls
Mikael Berthe <mikael@lilotux.net>
parents: 772
diff changeset
2522 g_free(reason_utf8);
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2523 } else
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2524 scr_LogPrint(LPRINT_NORMAL, "Wrong affiliation parameter.");
585
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2525
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2526 free_arg_lst(paramlst);
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2527 }
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2528
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2529 static void room_role(gpointer bud, char *arg)
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2530 {
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2531 char **paramlst;
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2532 gchar *fjid, *rolename;
585
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2533 struct role_affil ra;
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2534 const char *roomid = buddy_getjid(bud);
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2535
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2536 paramlst = split_arg(arg, 3, 1); // jid, new_role, [reason]
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2537 fjid = *paramlst;
585
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2538 rolename = *(paramlst+1);
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2539 arg = *(paramlst+2);
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2540
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2541 if (!fjid || !*fjid || !rolename || !*rolename) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2542 scr_LogPrint(LPRINT_NORMAL, "Please specify both a Jabber ID and a role.");
585
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2543 free_arg_lst(paramlst);
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2544 return;
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2545 }
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2546
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2547 ra.type = type_role;
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2548 ra.val.role = role_none;
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2549 for (; ra.val.role < imrole_size; ra.val.role++)
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2550 if (!strcasecmp(rolename, strrole[ra.val.role]))
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2551 break;
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2552
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2553 if (ra.val.role < imrole_size) {
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2554 gchar *jid_utf8, *reason_utf8;
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2555 jid_utf8 = to_utf8(fjid);
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2556 reason_utf8 = to_utf8(arg);
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
2557 xmpp_room_setattrib(roomid, jid_utf8, NULL, ra, reason_utf8);
774
46304b773a44 Remove useless checks before g_free() calls
Mikael Berthe <mikael@lilotux.net>
parents: 772
diff changeset
2558 g_free(jid_utf8);
46304b773a44 Remove useless checks before g_free() calls
Mikael Berthe <mikael@lilotux.net>
parents: 772
diff changeset
2559 g_free(reason_utf8);
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2560 } else
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2561 scr_LogPrint(LPRINT_NORMAL, "Wrong role parameter.");
585
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2562
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2563 free_arg_lst(paramlst);
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2564 }
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2565
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
2566
571
d63e6cbdc297 Add "/room ban"
Mikael Berthe <mikael@lilotux.net>
parents: 570
diff changeset
2567 // The expected argument is a Jabber id
d63e6cbdc297 Add "/room ban"
Mikael Berthe <mikael@lilotux.net>
parents: 570
diff changeset
2568 static void room_ban(gpointer bud, char *arg)
d63e6cbdc297 Add "/room ban"
Mikael Berthe <mikael@lilotux.net>
parents: 570
diff changeset
2569 {
d63e6cbdc297 Add "/room ban"
Mikael Berthe <mikael@lilotux.net>
parents: 570
diff changeset
2570 char **paramlst;
1391
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2571 gchar *fjid, *bjid;
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2572 const gchar *banjid;
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2573 gchar *jid_utf8, *reason_utf8;
584
414fbf558f1e jb_room_setattrib()
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
2574 struct role_affil ra;
571
d63e6cbdc297 Add "/room ban"
Mikael Berthe <mikael@lilotux.net>
parents: 570
diff changeset
2575 const char *roomid = buddy_getjid(bud);
d63e6cbdc297 Add "/room ban"
Mikael Berthe <mikael@lilotux.net>
parents: 570
diff changeset
2576
d63e6cbdc297 Add "/room ban"
Mikael Berthe <mikael@lilotux.net>
parents: 570
diff changeset
2577 paramlst = split_arg(arg, 2, 1); // jid, [reason]
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2578 fjid = *paramlst;
571
d63e6cbdc297 Add "/room ban"
Mikael Berthe <mikael@lilotux.net>
parents: 570
diff changeset
2579 arg = *(paramlst+1);
d63e6cbdc297 Add "/room ban"
Mikael Berthe <mikael@lilotux.net>
parents: 570
diff changeset
2580
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2581 if (!fjid || !*fjid) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2582 scr_LogPrint(LPRINT_NORMAL, "Please specify a Jabber ID.");
571
d63e6cbdc297 Add "/room ban"
Mikael Berthe <mikael@lilotux.net>
parents: 570
diff changeset
2583 free_arg_lst(paramlst);
d63e6cbdc297 Add "/room ban"
Mikael Berthe <mikael@lilotux.net>
parents: 570
diff changeset
2584 return;
d63e6cbdc297 Add "/room ban"
Mikael Berthe <mikael@lilotux.net>
parents: 570
diff changeset
2585 }
d63e6cbdc297 Add "/room ban"
Mikael Berthe <mikael@lilotux.net>
parents: 570
diff changeset
2586
584
414fbf558f1e jb_room_setattrib()
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
2587 ra.type = type_affil;
414fbf558f1e jb_room_setattrib()
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
2588 ra.val.affil = affil_outcast;
414fbf558f1e jb_room_setattrib()
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
2589
1391
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2590 bjid = jidtodisp(fjid);
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2591 jid_utf8 = to_utf8(bjid);
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2592
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2593 // If the argument doesn't look like a jid, we'll try to find a matching
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2594 // nickname.
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2595 if (!strchr(bjid, JID_DOMAIN_SEPARATOR) || check_jid_syntax(bjid)) {
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2596 const gchar *tmp;
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2597 // We want the initial argument, so the fjid variable, because
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2598 // we don't want to strip a resource-like string from the nickname!
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2599 g_free(jid_utf8);
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2600 jid_utf8 = to_utf8(fjid);
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2601 tmp = buddy_getrjid(bud, jid_utf8);
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2602 if (!tmp) {
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2603 scr_LogPrint(LPRINT_NORMAL, "Wrong JID or nickname");
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2604 goto room_ban_return;
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2605 }
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2606 banjid = jidtodisp(tmp);
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2607 } else
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2608 banjid = jid_utf8;
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2609
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2610 scr_LogPrint(LPRINT_NORMAL, "Requesting a ban for %s", banjid);
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2611
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2612 reason_utf8 = to_utf8(arg);
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
2613 xmpp_room_setattrib(roomid, banjid, NULL, ra, reason_utf8);
1391
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2614 g_free(reason_utf8);
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2615
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2616 room_ban_return:
e20ab87c4c4c The command /room ban can be used with a nickname
Mikael Berthe <mikael@lilotux.net>
parents: 1387
diff changeset
2617 g_free(bjid);
774
46304b773a44 Remove useless checks before g_free() calls
Mikael Berthe <mikael@lilotux.net>
parents: 772
diff changeset
2618 g_free(jid_utf8);
571
d63e6cbdc297 Add "/room ban"
Mikael Berthe <mikael@lilotux.net>
parents: 570
diff changeset
2619 free_arg_lst(paramlst);
d63e6cbdc297 Add "/room ban"
Mikael Berthe <mikael@lilotux.net>
parents: 570
diff changeset
2620 }
d63e6cbdc297 Add "/room ban"
Mikael Berthe <mikael@lilotux.net>
parents: 570
diff changeset
2621
1260
b4ccc5b2a6de Add command /room unban
Mikael Berthe <mikael@lilotux.net>
parents: 1235
diff changeset
2622 // The expected argument is a Jabber id
b4ccc5b2a6de Add command /room unban
Mikael Berthe <mikael@lilotux.net>
parents: 1235
diff changeset
2623 static void room_unban(gpointer bud, char *arg)
b4ccc5b2a6de Add command /room unban
Mikael Berthe <mikael@lilotux.net>
parents: 1235
diff changeset
2624 {
b4ccc5b2a6de Add command /room unban
Mikael Berthe <mikael@lilotux.net>
parents: 1235
diff changeset
2625 gchar *fjid = arg;
b4ccc5b2a6de Add command /room unban
Mikael Berthe <mikael@lilotux.net>
parents: 1235
diff changeset
2626 gchar *jid_utf8;
b4ccc5b2a6de Add command /room unban
Mikael Berthe <mikael@lilotux.net>
parents: 1235
diff changeset
2627 struct role_affil ra;
b4ccc5b2a6de Add command /room unban
Mikael Berthe <mikael@lilotux.net>
parents: 1235
diff changeset
2628 const char *roomid = buddy_getjid(bud);
b4ccc5b2a6de Add command /room unban
Mikael Berthe <mikael@lilotux.net>
parents: 1235
diff changeset
2629
b4ccc5b2a6de Add command /room unban
Mikael Berthe <mikael@lilotux.net>
parents: 1235
diff changeset
2630 if (!fjid || !*fjid) {
b4ccc5b2a6de Add command /room unban
Mikael Berthe <mikael@lilotux.net>
parents: 1235
diff changeset
2631 scr_LogPrint(LPRINT_NORMAL, "Please specify a Jabber ID.");
b4ccc5b2a6de Add command /room unban
Mikael Berthe <mikael@lilotux.net>
parents: 1235
diff changeset
2632 return;
b4ccc5b2a6de Add command /room unban
Mikael Berthe <mikael@lilotux.net>
parents: 1235
diff changeset
2633 }
b4ccc5b2a6de Add command /room unban
Mikael Berthe <mikael@lilotux.net>
parents: 1235
diff changeset
2634
b4ccc5b2a6de Add command /room unban
Mikael Berthe <mikael@lilotux.net>
parents: 1235
diff changeset
2635 ra.type = type_affil;
b4ccc5b2a6de Add command /room unban
Mikael Berthe <mikael@lilotux.net>
parents: 1235
diff changeset
2636 ra.val.affil = affil_none;
b4ccc5b2a6de Add command /room unban
Mikael Berthe <mikael@lilotux.net>
parents: 1235
diff changeset
2637
b4ccc5b2a6de Add command /room unban
Mikael Berthe <mikael@lilotux.net>
parents: 1235
diff changeset
2638 jid_utf8 = to_utf8(fjid);
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
2639 xmpp_room_setattrib(roomid, jid_utf8, NULL, ra, NULL);
1260
b4ccc5b2a6de Add command /room unban
Mikael Berthe <mikael@lilotux.net>
parents: 1235
diff changeset
2640 g_free(jid_utf8);
b4ccc5b2a6de Add command /room unban
Mikael Berthe <mikael@lilotux.net>
parents: 1235
diff changeset
2641 }
b4ccc5b2a6de Add command /room unban
Mikael Berthe <mikael@lilotux.net>
parents: 1235
diff changeset
2642
571
d63e6cbdc297 Add "/room ban"
Mikael Berthe <mikael@lilotux.net>
parents: 570
diff changeset
2643 // The expected argument is a nickname
568
eb1df2371581 Add "/room kick"
Mikael Berthe <mikael@lilotux.net>
parents: 566
diff changeset
2644 static void room_kick(gpointer bud, char *arg)
eb1df2371581 Add "/room kick"
Mikael Berthe <mikael@lilotux.net>
parents: 566
diff changeset
2645 {
eb1df2371581 Add "/room kick"
Mikael Berthe <mikael@lilotux.net>
parents: 566
diff changeset
2646 char **paramlst;
eb1df2371581 Add "/room kick"
Mikael Berthe <mikael@lilotux.net>
parents: 566
diff changeset
2647 gchar *nick;
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2648 gchar *nick_utf8, *reason_utf8;
584
414fbf558f1e jb_room_setattrib()
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
2649 struct role_affil ra;
568
eb1df2371581 Add "/room kick"
Mikael Berthe <mikael@lilotux.net>
parents: 566
diff changeset
2650 const char *roomid = buddy_getjid(bud);
eb1df2371581 Add "/room kick"
Mikael Berthe <mikael@lilotux.net>
parents: 566
diff changeset
2651
571
d63e6cbdc297 Add "/room ban"
Mikael Berthe <mikael@lilotux.net>
parents: 570
diff changeset
2652 paramlst = split_arg(arg, 2, 1); // nickname, [reason]
568
eb1df2371581 Add "/room kick"
Mikael Berthe <mikael@lilotux.net>
parents: 566
diff changeset
2653 nick = *paramlst;
eb1df2371581 Add "/room kick"
Mikael Berthe <mikael@lilotux.net>
parents: 566
diff changeset
2654 arg = *(paramlst+1);
eb1df2371581 Add "/room kick"
Mikael Berthe <mikael@lilotux.net>
parents: 566
diff changeset
2655
eb1df2371581 Add "/room kick"
Mikael Berthe <mikael@lilotux.net>
parents: 566
diff changeset
2656 if (!nick || !*nick) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2657 scr_LogPrint(LPRINT_NORMAL, "Please specify a nickname.");
568
eb1df2371581 Add "/room kick"
Mikael Berthe <mikael@lilotux.net>
parents: 566
diff changeset
2658 free_arg_lst(paramlst);
eb1df2371581 Add "/room kick"
Mikael Berthe <mikael@lilotux.net>
parents: 566
diff changeset
2659 return;
eb1df2371581 Add "/room kick"
Mikael Berthe <mikael@lilotux.net>
parents: 566
diff changeset
2660 }
eb1df2371581 Add "/room kick"
Mikael Berthe <mikael@lilotux.net>
parents: 566
diff changeset
2661
584
414fbf558f1e jb_room_setattrib()
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
2662 ra.type = type_role;
414fbf558f1e jb_room_setattrib()
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
2663 ra.val.affil = role_none;
414fbf558f1e jb_room_setattrib()
Mikael Berthe <mikael@lilotux.net>
parents: 580
diff changeset
2664
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2665 nick_utf8 = to_utf8(nick);
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2666 reason_utf8 = to_utf8(arg);
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
2667 xmpp_room_setattrib(roomid, NULL, nick_utf8, ra, reason_utf8);
774
46304b773a44 Remove useless checks before g_free() calls
Mikael Berthe <mikael@lilotux.net>
parents: 772
diff changeset
2668 g_free(nick_utf8);
46304b773a44 Remove useless checks before g_free() calls
Mikael Berthe <mikael@lilotux.net>
parents: 772
diff changeset
2669 g_free(reason_utf8);
568
eb1df2371581 Add "/room kick"
Mikael Berthe <mikael@lilotux.net>
parents: 566
diff changeset
2670
eb1df2371581 Add "/room kick"
Mikael Berthe <mikael@lilotux.net>
parents: 566
diff changeset
2671 free_arg_lst(paramlst);
eb1df2371581 Add "/room kick"
Mikael Berthe <mikael@lilotux.net>
parents: 566
diff changeset
2672 }
eb1df2371581 Add "/room kick"
Mikael Berthe <mikael@lilotux.net>
parents: 566
diff changeset
2673
1415
317f8d181626 Rename command public functions
Mikael Berthe <mikael@lilotux.net>
parents: 1414
diff changeset
2674 void cmd_room_leave(gpointer bud, char *arg)
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2675 {
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2676 gchar *roomid, *desc;
650
c2d50b97ced4 MUC: /room {leave,nick,topic} can only be used when inside a room
Mikael Berthe <mikael@lilotux.net>
parents: 647
diff changeset
2677 const char *nickname;
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2678
650
c2d50b97ced4 MUC: /room {leave,nick,topic} can only be used when inside a room
Mikael Berthe <mikael@lilotux.net>
parents: 647
diff changeset
2679 nickname = buddy_getnickname(bud);
c2d50b97ced4 MUC: /room {leave,nick,topic} can only be used when inside a room
Mikael Berthe <mikael@lilotux.net>
parents: 647
diff changeset
2680 if (!nickname) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2681 scr_LogPrint(LPRINT_NORMAL, "You are not in this room.");
650
c2d50b97ced4 MUC: /room {leave,nick,topic} can only be used when inside a room
Mikael Berthe <mikael@lilotux.net>
parents: 647
diff changeset
2682 return;
c2d50b97ced4 MUC: /room {leave,nick,topic} can only be used when inside a room
Mikael Berthe <mikael@lilotux.net>
parents: 647
diff changeset
2683 }
c2d50b97ced4 MUC: /room {leave,nick,topic} can only be used when inside a room
Mikael Berthe <mikael@lilotux.net>
parents: 647
diff changeset
2684
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2685 roomid = g_strdup_printf("%s/%s", buddy_getjid(bud), nickname);
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2686 desc = to_utf8(arg);
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
2687 xmpp_setstatus(offline, roomid, desc, TRUE);
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2688 g_free(desc);
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2689 g_free(roomid);
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2690 }
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2691
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2692 static void room_nick(gpointer bud, char *arg)
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2693 {
650
c2d50b97ced4 MUC: /room {leave,nick,topic} can only be used when inside a room
Mikael Berthe <mikael@lilotux.net>
parents: 647
diff changeset
2694 if (!buddy_getinsideroom(bud)) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2695 scr_LogPrint(LPRINT_NORMAL, "You are not in this room.");
650
c2d50b97ced4 MUC: /room {leave,nick,topic} can only be used when inside a room
Mikael Berthe <mikael@lilotux.net>
parents: 647
diff changeset
2696 return;
c2d50b97ced4 MUC: /room {leave,nick,topic} can only be used when inside a room
Mikael Berthe <mikael@lilotux.net>
parents: 647
diff changeset
2697 }
c2d50b97ced4 MUC: /room {leave,nick,topic} can only be used when inside a room
Mikael Berthe <mikael@lilotux.net>
parents: 647
diff changeset
2698
565
89c347b3e4c1 MUC: Make "/room nick" display the current nickname
Mikael Berthe <mikael@lilotux.net>
parents: 558
diff changeset
2699 if (!arg || !*arg) {
89c347b3e4c1 MUC: Make "/room nick" display the current nickname
Mikael Berthe <mikael@lilotux.net>
parents: 558
diff changeset
2700 const char *nick = buddy_getnickname(bud);
89c347b3e4c1 MUC: Make "/room nick" display the current nickname
Mikael Berthe <mikael@lilotux.net>
parents: 558
diff changeset
2701 if (nick)
89c347b3e4c1 MUC: Make "/room nick" display the current nickname
Mikael Berthe <mikael@lilotux.net>
parents: 558
diff changeset
2702 scr_LogPrint(LPRINT_NORMAL, "Your nickname is: %s", nick);
89c347b3e4c1 MUC: Make "/room nick" display the current nickname
Mikael Berthe <mikael@lilotux.net>
parents: 558
diff changeset
2703 else
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2704 scr_LogPrint(LPRINT_NORMAL, "You have no nickname in this room.");
565
89c347b3e4c1 MUC: Make "/room nick" display the current nickname
Mikael Berthe <mikael@lilotux.net>
parents: 558
diff changeset
2705 } else {
1648
63d8473df2c3 Fix encoding issues in room command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1635
diff changeset
2706 gchar *nick = to_utf8(arg);
1392
3d4963c8ce87 Quotes should be escaped in /room nick
Mikael Berthe <mikael@lilotux.net>
parents: 1391
diff changeset
2707 strip_arg_special_chars(nick);
1648
63d8473df2c3 Fix encoding issues in room command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1635
diff changeset
2708 xmpp_room_join(buddy_getjid(bud), nick, NULL);
900
b41684465283 MUC: join password-protected room
Mikael Berthe <mikael@lilotux.net>
parents: 885
diff changeset
2709 g_free(nick);
565
89c347b3e4c1 MUC: Make "/room nick" display the current nickname
Mikael Berthe <mikael@lilotux.net>
parents: 558
diff changeset
2710 }
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2711 }
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2712
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2713 static void room_privmsg(gpointer bud, char *arg)
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2714 {
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2715 char **paramlst;
1648
63d8473df2c3 Fix encoding issues in room command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1635
diff changeset
2716 gchar *fjid_utf8, *nick, *nick_utf8, *msg;
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2717
1100
2bef748356de Do not strip quotes in /room privmsg
Mikael Berthe <mikael@lilotux.net>
parents: 1086
diff changeset
2718 paramlst = split_arg(arg, 2, 1); // nickname, message
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2719 nick = *paramlst;
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2720 arg = *(paramlst+1);
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2721
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2722 if (!nick || !*nick || !arg || !*arg) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2723 scr_LogPrint(LPRINT_NORMAL,
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2724 "Please specify both a Jabber ID and a message.");
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2725 free_arg_lst(paramlst);
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2726 return;
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2727 }
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2728
1648
63d8473df2c3 Fix encoding issues in room command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1635
diff changeset
2729 nick_utf8 = to_utf8(nick);
63d8473df2c3 Fix encoding issues in room command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1635
diff changeset
2730 fjid_utf8 = g_strdup_printf("%s/%s", buddy_getjid(bud), nick_utf8);
63d8473df2c3 Fix encoding issues in room command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1635
diff changeset
2731 g_free (nick_utf8);
1312
f4830fada2af Fix /room privmsg when the MUC nickname contains spaces (Reported by sadeness)
Mikael Berthe <mikael@lilotux.net>
parents: 1311
diff changeset
2732 msg = to_utf8(arg);
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
2733 send_message_to(fjid_utf8, msg, NULL, LM_MESSAGE_SUB_TYPE_NOT_SET, FALSE);
1312
f4830fada2af Fix /room privmsg when the MUC nickname contains spaces (Reported by sadeness)
Mikael Berthe <mikael@lilotux.net>
parents: 1311
diff changeset
2734 g_free(fjid_utf8);
f4830fada2af Fix /room privmsg when the MUC nickname contains spaces (Reported by sadeness)
Mikael Berthe <mikael@lilotux.net>
parents: 1311
diff changeset
2735 g_free(msg);
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
2736 free_arg_lst(paramlst);
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2737 }
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2738
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2739 static void room_remove(gpointer bud, char *arg)
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2740 {
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2741 if (*arg) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2742 scr_LogPrint(LPRINT_NORMAL, "This action does not require a parameter; "
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2743 "the currently-selected room will be removed.");
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2744 return;
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2745 }
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2746
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2747 // Quick check: if there are resources, we haven't left
652
b243d3b3ff1b We do not need buddy_isresource() anymore
Mikael Berthe <mikael@lilotux.net>
parents: 650
diff changeset
2748 if (buddy_getinsideroom(bud)) {
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2749 scr_LogPrint(LPRINT_NORMAL, "You haven't left this room!");
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2750 return;
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2751 }
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2752 // Delete the room
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2753 roster_del_user(buddy_getjid(bud));
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
2754 scr_update_buddy_window();
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2755 buddylist_build();
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2756 update_roster = TRUE;
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2757 }
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2758
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2759 static void room_topic(gpointer bud, char *arg)
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2760 {
650
c2d50b97ced4 MUC: /room {leave,nick,topic} can only be used when inside a room
Mikael Berthe <mikael@lilotux.net>
parents: 647
diff changeset
2761 if (!buddy_getinsideroom(bud)) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2762 scr_LogPrint(LPRINT_NORMAL, "You are not in this room.");
650
c2d50b97ced4 MUC: /room {leave,nick,topic} can only be used when inside a room
Mikael Berthe <mikael@lilotux.net>
parents: 647
diff changeset
2763 return;
c2d50b97ced4 MUC: /room {leave,nick,topic} can only be used when inside a room
Mikael Berthe <mikael@lilotux.net>
parents: 647
diff changeset
2764 }
c2d50b97ced4 MUC: /room {leave,nick,topic} can only be used when inside a room
Mikael Berthe <mikael@lilotux.net>
parents: 647
diff changeset
2765
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2766 // If no parameter is given, display the current topic
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2767 if (!*arg) {
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2768 const char *topic = buddy_gettopic(bud);
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2769 if (topic)
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2770 scr_LogPrint(LPRINT_NORMAL, "Topic: %s", topic);
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2771 else
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2772 scr_LogPrint(LPRINT_NORMAL, "No topic has been set.");
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2773 return;
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2774 }
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2775
1528
4b4b3948420c MUC fix: the topic couldn't be cleared
Mikael Berthe <mikael@lilotux.net>
parents: 1527
diff changeset
2776 // If arg is "-", let's clear the topic
4b4b3948420c MUC fix: the topic couldn't be cleared
Mikael Berthe <mikael@lilotux.net>
parents: 1527
diff changeset
2777 if (!strcmp(arg, "-"))
4b4b3948420c MUC fix: the topic couldn't be cleared
Mikael Berthe <mikael@lilotux.net>
parents: 1527
diff changeset
2778 arg = NULL;
4b4b3948420c MUC fix: the topic couldn't be cleared
Mikael Berthe <mikael@lilotux.net>
parents: 1527
diff changeset
2779
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2780 arg = to_utf8(arg);
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2781 // Set the topic
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
2782 xmpp_send_msg(buddy_getjid(bud), NULL, ROSTER_TYPE_ROOM, arg ? arg : "",
1602
f4a2c6f767d1 Message Receipts support (XEP-0184)
franky
parents: 1599
diff changeset
2783 FALSE, NULL, LM_MESSAGE_SUB_TYPE_NOT_SET, NULL);
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2784 g_free(arg);
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2785 }
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2786
599
fb67bf62f4eb Add "/room destroy"
Mikael Berthe <mikael@lilotux.net>
parents: 598
diff changeset
2787 static void room_destroy(gpointer bud, char *arg)
fb67bf62f4eb Add "/room destroy"
Mikael Berthe <mikael@lilotux.net>
parents: 598
diff changeset
2788 {
fb67bf62f4eb Add "/room destroy"
Mikael Berthe <mikael@lilotux.net>
parents: 598
diff changeset
2789 gchar *msg;
fb67bf62f4eb Add "/room destroy"
Mikael Berthe <mikael@lilotux.net>
parents: 598
diff changeset
2790
fb67bf62f4eb Add "/room destroy"
Mikael Berthe <mikael@lilotux.net>
parents: 598
diff changeset
2791 if (arg && *arg)
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
2792 msg = to_utf8(arg);
599
fb67bf62f4eb Add "/room destroy"
Mikael Berthe <mikael@lilotux.net>
parents: 598
diff changeset
2793 else
fb67bf62f4eb Add "/room destroy"
Mikael Berthe <mikael@lilotux.net>
parents: 598
diff changeset
2794 msg = NULL;
fb67bf62f4eb Add "/room destroy"
Mikael Berthe <mikael@lilotux.net>
parents: 598
diff changeset
2795
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
2796 xmpp_room_destroy(buddy_getjid(bud), NULL, msg);
774
46304b773a44 Remove useless checks before g_free() calls
Mikael Berthe <mikael@lilotux.net>
parents: 772
diff changeset
2797 g_free(msg);
599
fb67bf62f4eb Add "/room destroy"
Mikael Berthe <mikael@lilotux.net>
parents: 598
diff changeset
2798 }
fb67bf62f4eb Add "/room destroy"
Mikael Berthe <mikael@lilotux.net>
parents: 598
diff changeset
2799
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2800 static void room_unlock(gpointer bud, char *arg)
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2801 {
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2802 if (*arg) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2803 scr_LogPrint(LPRINT_NORMAL, "Unknown parameter.");
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2804 return;
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2805 }
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2806
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
2807 xmpp_room_unlock(buddy_getjid(bud));
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2808 }
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
2809
1377
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2810 static void room_setopt(gpointer bud, char *arg)
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2811 {
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2812 char **paramlst;
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2813 char *param, *value;
1979
6febc7d1f760 Add /room setopt flag_joins (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1978
diff changeset
2814 enum { opt_none = 0, opt_printstatus,
6febc7d1f760 Add /room setopt flag_joins (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1978
diff changeset
2815 opt_autowhois, opt_flagjoins } option = 0;
1980
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
2816 guint changed = 0;
1377
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2817
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2818 paramlst = split_arg(arg, 2, 1); // param, value
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2819 param = *paramlst;
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2820 value = *(paramlst+1);
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2821 if (!param) {
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2822 scr_LogPrint(LPRINT_NORMAL, "Please specify a room option.");
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2823 free_arg_lst(paramlst);
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2824 return;
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2825 }
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2826
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2827 if (!strcasecmp(param, "print_status"))
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2828 option = opt_printstatus;
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2829 else if (!strcasecmp(param, "auto_whois"))
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2830 option = opt_autowhois;
1979
6febc7d1f760 Add /room setopt flag_joins (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1978
diff changeset
2831 else if (!strcasecmp(param, "flag_joins"))
6febc7d1f760 Add /room setopt flag_joins (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1978
diff changeset
2832 option = opt_flagjoins;
1377
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2833 else {
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2834 scr_LogPrint(LPRINT_NORMAL, "Wrong option!");
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2835 free_arg_lst(paramlst);
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2836 return;
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2837 }
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2838
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2839 // If no value is given, display the current value
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2840 if (!value) {
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2841 const char *strval;
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2842 if (option == opt_printstatus)
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2843 strval = strprintstatus[buddy_getprintstatus(bud)];
1979
6febc7d1f760 Add /room setopt flag_joins (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1978
diff changeset
2844 else if (option == opt_autowhois)
6febc7d1f760 Add /room setopt flag_joins (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1978
diff changeset
2845 strval = strautowhois[buddy_getautowhois(bud)];
1377
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2846 else
1979
6febc7d1f760 Add /room setopt flag_joins (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1978
diff changeset
2847 strval = strflagjoins[buddy_getflagjoins(bud)];
1377
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2848 scr_LogPrint(LPRINT_NORMAL, "%s is set to: %s", param, strval);
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2849 free_arg_lst(paramlst);
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2850 return;
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2851 }
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2852
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2853 if (option == opt_printstatus) {
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2854 enum room_printstatus eval;
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2855 if (!strcasecmp(value, "none"))
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2856 eval = status_none;
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2857 else if (!strcasecmp(value, "in_and_out"))
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2858 eval = status_in_and_out;
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2859 else if (!strcasecmp(value, "all"))
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2860 eval = status_all;
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2861 else {
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2862 eval = status_default;
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2863 if (strcasecmp(value, "default") != 0)
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2864 scr_LogPrint(LPRINT_NORMAL, "Unrecognized value, assuming default...");
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2865 }
1980
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
2866 if (eval != buddy_getprintstatus(bud)) {
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
2867 buddy_setprintstatus(bud, eval);
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
2868 changed = 1;
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
2869 }
1377
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2870 } else if (option == opt_autowhois) {
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2871 enum room_autowhois eval;
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2872 if (!strcasecmp(value, "on"))
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2873 eval = autowhois_on;
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2874 else if (!strcasecmp(value, "off"))
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2875 eval = autowhois_off;
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2876 else {
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2877 eval = autowhois_default;
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2878 if (strcasecmp(value, "default") != 0)
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2879 scr_LogPrint(LPRINT_NORMAL, "Unrecognized value, assuming default...");
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2880 }
1980
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
2881 if (eval != buddy_getautowhois(bud)) {
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
2882 buddy_setautowhois(bud, eval);
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
2883 changed = 1;
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
2884 }
1979
6febc7d1f760 Add /room setopt flag_joins (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1978
diff changeset
2885 } else if (option == opt_flagjoins) {
6febc7d1f760 Add /room setopt flag_joins (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1978
diff changeset
2886 enum room_flagjoins eval;
6febc7d1f760 Add /room setopt flag_joins (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1978
diff changeset
2887 if (!strcasecmp(value, "none"))
6febc7d1f760 Add /room setopt flag_joins (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1978
diff changeset
2888 eval = flagjoins_none;
6febc7d1f760 Add /room setopt flag_joins (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1978
diff changeset
2889 else if (!strcasecmp(value, "joins"))
6febc7d1f760 Add /room setopt flag_joins (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1978
diff changeset
2890 eval = flagjoins_joins;
6febc7d1f760 Add /room setopt flag_joins (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1978
diff changeset
2891 else if (!strcasecmp(value, "all"))
6febc7d1f760 Add /room setopt flag_joins (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1978
diff changeset
2892 eval = flagjoins_all;
6febc7d1f760 Add /room setopt flag_joins (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1978
diff changeset
2893 else {
6febc7d1f760 Add /room setopt flag_joins (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1978
diff changeset
2894 eval = flagjoins_default;
6febc7d1f760 Add /room setopt flag_joins (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1978
diff changeset
2895 if (strcasecmp(value, "default") != 0)
6febc7d1f760 Add /room setopt flag_joins (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1978
diff changeset
2896 scr_LogPrint(LPRINT_NORMAL, "Unrecognized value, assuming default...");
6febc7d1f760 Add /room setopt flag_joins (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1978
diff changeset
2897 }
1980
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
2898 if (eval != buddy_getflagjoins(bud)) {
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
2899 buddy_setflagjoins(bud, eval);
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
2900 changed = 1;
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
2901 }
1377
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2902 }
1980
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
2903 if (changed &&
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
2904 xmpp_is_bookmarked(buddy_getjid(bud)) &&
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
2905 settings_opt_get_int("muc_bookmark_autoupdate"))
3bcc57751283 Add 'muc_bookmark_autoupdate' (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1979
diff changeset
2906 room_bookmark(bud, NULL);
1377
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2907
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2908 free_arg_lst(paramlst);
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2909 }
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
2910
1415
317f8d181626 Rename command public functions
Mikael Berthe <mikael@lilotux.net>
parents: 1414
diff changeset
2911 // cmd_room_whois(..)
960
90ff94f0fbbb Auto-whois shouldn't enable chat mode
Mikael Berthe <mikael@lilotux.net>
parents: 958
diff changeset
2912 // If interactive is TRUE, chatmode can be enabled.
1939
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
2913 // Please note that usernick is expected in UTF-8 locale iff interactive is
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
2914 // FALSE (in order to work correctly with auto_whois).
1938
26e437e79e60 Fix MUC whois / auto_whois
Mikael Berthe <mikael@lilotux.net>
parents: 1923
diff changeset
2915 void cmd_room_whois(gpointer bud, const char *usernick, guint interactive)
572
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2916 {
1938
26e437e79e60 Fix MUC whois / auto_whois
Mikael Berthe <mikael@lilotux.net>
parents: 1923
diff changeset
2917 char **paramlst = NULL;
572
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2918 gchar *nick, *buffer;
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2919 const char *bjid, *realjid;
572
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2920 const char *rst_msg;
575
1b8e024c3a10 Improve /room whois
Mikael Berthe <mikael@lilotux.net>
parents: 572
diff changeset
2921 gchar rprio;
572
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2922 enum imstatus rstatus;
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2923 enum imrole role;
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2924 enum imaffiliation affil;
625
028c01940490 Show presence timestamps in "/info" and "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 622
diff changeset
2925 time_t rst_time;
1416
7f0da8de2a7d [MUC] Auto-whois doesn't set the new message flag
Mikael Berthe <mikael@lilotux.net>
parents: 1415
diff changeset
2926 guint msg_flag = HBB_PREFIX_INFO;
572
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2927
1938
26e437e79e60 Fix MUC whois / auto_whois
Mikael Berthe <mikael@lilotux.net>
parents: 1923
diff changeset
2928 if (interactive) {
26e437e79e60 Fix MUC whois / auto_whois
Mikael Berthe <mikael@lilotux.net>
parents: 1923
diff changeset
2929 paramlst = split_arg(usernick, 1, 0); // nickname
26e437e79e60 Fix MUC whois / auto_whois
Mikael Berthe <mikael@lilotux.net>
parents: 1923
diff changeset
2930 nick = to_utf8(*paramlst);
26e437e79e60 Fix MUC whois / auto_whois
Mikael Berthe <mikael@lilotux.net>
parents: 1923
diff changeset
2931 } else {
26e437e79e60 Fix MUC whois / auto_whois
Mikael Berthe <mikael@lilotux.net>
parents: 1923
diff changeset
2932 nick = g_strdup(usernick);
26e437e79e60 Fix MUC whois / auto_whois
Mikael Berthe <mikael@lilotux.net>
parents: 1923
diff changeset
2933 }
572
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2934
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2935 if (!nick || !*nick) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
2936 scr_LogPrint(LPRINT_NORMAL, "Please specify a nickname.");
1938
26e437e79e60 Fix MUC whois / auto_whois
Mikael Berthe <mikael@lilotux.net>
parents: 1923
diff changeset
2937 if (paramlst)
26e437e79e60 Fix MUC whois / auto_whois
Mikael Berthe <mikael@lilotux.net>
parents: 1923
diff changeset
2938 free_arg_lst(paramlst);
572
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2939 return;
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2940 }
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2941
960
90ff94f0fbbb Auto-whois shouldn't enable chat mode
Mikael Berthe <mikael@lilotux.net>
parents: 958
diff changeset
2942 if (interactive) {
90ff94f0fbbb Auto-whois shouldn't enable chat mode
Mikael Berthe <mikael@lilotux.net>
parents: 958
diff changeset
2943 // Enter chat mode
90ff94f0fbbb Auto-whois shouldn't enable chat mode
Mikael Berthe <mikael@lilotux.net>
parents: 958
diff changeset
2944 scr_set_chatmode(TRUE);
1780
e4378fbab5d7 Major API cleanup - bump API to 4
Mikael Berthe <mikael@lilotux.net>
parents: 1774
diff changeset
2945 scr_show_buddy_window();
1416
7f0da8de2a7d [MUC] Auto-whois doesn't set the new message flag
Mikael Berthe <mikael@lilotux.net>
parents: 1415
diff changeset
2946 } else
7f0da8de2a7d [MUC] Auto-whois doesn't set the new message flag
Mikael Berthe <mikael@lilotux.net>
parents: 1415
diff changeset
2947 msg_flag |= HBB_PREFIX_NOFLAG;
647
c6c41dd2464a Enter chat mode automatically when using some commands
Mikael Berthe <mikael@lilotux.net>
parents: 644
diff changeset
2948
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2949 bjid = buddy_getjid(bud);
572
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2950 rstatus = buddy_getstatus(bud, nick);
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2951
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2952 if (rstatus == offline) {
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2953 scr_LogPrint(LPRINT_NORMAL, "No such member: %s", nick);
1938
26e437e79e60 Fix MUC whois / auto_whois
Mikael Berthe <mikael@lilotux.net>
parents: 1923
diff changeset
2954 if (paramlst)
26e437e79e60 Fix MUC whois / auto_whois
Mikael Berthe <mikael@lilotux.net>
parents: 1923
diff changeset
2955 free_arg_lst(paramlst);
791
6c9e8fb69965 Fix "/room whois" with UTF-8 nickname
Mikael Berthe <mikael@lilotux.net>
parents: 777
diff changeset
2956 g_free(nick);
572
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2957 return;
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2958 }
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2959
625
028c01940490 Show presence timestamps in "/info" and "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 622
diff changeset
2960 rst_time = buddy_getstatustime(bud, nick);
575
1b8e024c3a10 Improve /room whois
Mikael Berthe <mikael@lilotux.net>
parents: 572
diff changeset
2961 rprio = buddy_getresourceprio(bud, nick);
572
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2962 rst_msg = buddy_getstatusmsg(bud, nick);
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2963 if (!rst_msg) rst_msg = "";
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2964
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2965 role = buddy_getrole(bud, nick);
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2966 affil = buddy_getaffil(bud, nick);
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2967 realjid = buddy_getrjid(bud, nick);
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2968
626
b75f4105ce32 Use a larger buffer for commands like /info
Mikael Berthe <mikael@lilotux.net>
parents: 625
diff changeset
2969 buffer = g_new(char, 4096);
572
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2970
626
b75f4105ce32 Use a larger buffer for commands like /info
Mikael Berthe <mikael@lilotux.net>
parents: 625
diff changeset
2971 snprintf(buffer, 4095, "Whois [%s]", nick);
1416
7f0da8de2a7d [MUC] Auto-whois doesn't set the new message flag
Mikael Berthe <mikael@lilotux.net>
parents: 1415
diff changeset
2972 scr_WriteIncomingMessage(bjid, buffer, 0, msg_flag, 0);
626
b75f4105ce32 Use a larger buffer for commands like /info
Mikael Berthe <mikael@lilotux.net>
parents: 625
diff changeset
2973 snprintf(buffer, 4095, "Status : [%c] %s", imstatus2char[rstatus],
572
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2974 rst_msg);
1416
7f0da8de2a7d [MUC] Auto-whois doesn't set the new message flag
Mikael Berthe <mikael@lilotux.net>
parents: 1415
diff changeset
2975 scr_WriteIncomingMessage(bjid, buffer, 0, msg_flag | HBB_PREFIX_CONT, 0);
572
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2976
625
028c01940490 Show presence timestamps in "/info" and "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 622
diff changeset
2977 if (rst_time) {
626
b75f4105ce32 Use a larger buffer for commands like /info
Mikael Berthe <mikael@lilotux.net>
parents: 625
diff changeset
2978 char tbuf[128];
625
028c01940490 Show presence timestamps in "/info" and "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 622
diff changeset
2979
028c01940490 Show presence timestamps in "/info" and "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 622
diff changeset
2980 strftime(tbuf, sizeof(tbuf), "%Y-%m-%d %H:%M:%S", localtime(&rst_time));
028c01940490 Show presence timestamps in "/info" and "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 622
diff changeset
2981 snprintf(buffer, 127, "Timestamp: %s", tbuf);
1416
7f0da8de2a7d [MUC] Auto-whois doesn't set the new message flag
Mikael Berthe <mikael@lilotux.net>
parents: 1415
diff changeset
2982 scr_WriteIncomingMessage(bjid, buffer, 0, msg_flag | HBB_PREFIX_CONT, 0);
625
028c01940490 Show presence timestamps in "/info" and "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 622
diff changeset
2983 }
028c01940490 Show presence timestamps in "/info" and "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 622
diff changeset
2984
572
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2985 if (realjid) {
626
b75f4105ce32 Use a larger buffer for commands like /info
Mikael Berthe <mikael@lilotux.net>
parents: 625
diff changeset
2986 snprintf(buffer, 4095, "JID : <%s>", realjid);
1416
7f0da8de2a7d [MUC] Auto-whois doesn't set the new message flag
Mikael Berthe <mikael@lilotux.net>
parents: 1415
diff changeset
2987 scr_WriteIncomingMessage(bjid, buffer, 0, msg_flag | HBB_PREFIX_CONT, 0);
572
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2988 }
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2989
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
2990 snprintf(buffer, 4095, "Role : %s", strrole[role]);
1416
7f0da8de2a7d [MUC] Auto-whois doesn't set the new message flag
Mikael Berthe <mikael@lilotux.net>
parents: 1415
diff changeset
2991 scr_WriteIncomingMessage(bjid, buffer, 0, msg_flag | HBB_PREFIX_CONT, 0);
626
b75f4105ce32 Use a larger buffer for commands like /info
Mikael Berthe <mikael@lilotux.net>
parents: 625
diff changeset
2992 snprintf(buffer, 4095, "Affiliat.: %s", straffil[affil]);
1416
7f0da8de2a7d [MUC] Auto-whois doesn't set the new message flag
Mikael Berthe <mikael@lilotux.net>
parents: 1415
diff changeset
2993 scr_WriteIncomingMessage(bjid, buffer, 0, msg_flag | HBB_PREFIX_CONT, 0);
626
b75f4105ce32 Use a larger buffer for commands like /info
Mikael Berthe <mikael@lilotux.net>
parents: 625
diff changeset
2994 snprintf(buffer, 4095, "Priority : %d", rprio);
1416
7f0da8de2a7d [MUC] Auto-whois doesn't set the new message flag
Mikael Berthe <mikael@lilotux.net>
parents: 1415
diff changeset
2995 scr_WriteIncomingMessage(bjid, buffer, 0, msg_flag | HBB_PREFIX_CONT, 0);
7f0da8de2a7d [MUC] Auto-whois doesn't set the new message flag
Mikael Berthe <mikael@lilotux.net>
parents: 1415
diff changeset
2996
7f0da8de2a7d [MUC] Auto-whois doesn't set the new message flag
Mikael Berthe <mikael@lilotux.net>
parents: 1415
diff changeset
2997 scr_WriteIncomingMessage(bjid, "End of WHOIS", 0, msg_flag, 0);
572
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2998
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
2999 g_free(buffer);
791
6c9e8fb69965 Fix "/room whois" with UTF-8 nickname
Mikael Berthe <mikael@lilotux.net>
parents: 777
diff changeset
3000 g_free(nick);
1938
26e437e79e60 Fix MUC whois / auto_whois
Mikael Berthe <mikael@lilotux.net>
parents: 1923
diff changeset
3001 if (paramlst)
26e437e79e60 Fix MUC whois / auto_whois
Mikael Berthe <mikael@lilotux.net>
parents: 1923
diff changeset
3002 free_arg_lst(paramlst);
572
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
3003 }
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
3004
1009
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3005 static void room_bookmark(gpointer bud, char *arg)
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3006 {
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3007 const char *roomid;
1976
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
3008 const char *name = NULL, *nick = NULL, *group = NULL;
1603
54029aba9452 Allow specifying nickname for bookmark
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1602
diff changeset
3009 char *tmpnick = NULL;
1379
74b7621537d7 MUC: Store room settings (print_status, auto_whois) in private storage
Mikael Berthe <mikael@lilotux.net>
parents: 1377
diff changeset
3010 enum room_autowhois autowhois = 0;
1979
6febc7d1f760 Add /room setopt flag_joins (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1978
diff changeset
3011 enum room_flagjoins flagjoins = 0;
1379
74b7621537d7 MUC: Store room settings (print_status, auto_whois) in private storage
Mikael Berthe <mikael@lilotux.net>
parents: 1377
diff changeset
3012 enum room_printstatus printstatus = 0;
1009
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3013 enum { bm_add = 0, bm_del = 1 } action = 0;
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3014 int autojoin = 0;
1603
54029aba9452 Allow specifying nickname for bookmark
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1602
diff changeset
3015 int nick_set = 0;
1009
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3016
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3017 if (arg && *arg) {
1603
54029aba9452 Allow specifying nickname for bookmark
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1602
diff changeset
3018 // /room bookmark [add|del] [[+|-]autojoin] [-|nick]
1009
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3019 char **paramlst;
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3020 char **pp;
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3021
1603
54029aba9452 Allow specifying nickname for bookmark
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1602
diff changeset
3022 paramlst = split_arg(arg, 3, 0); // At most 3 parameters
1009
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3023 for (pp = paramlst; *pp; pp++) {
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3024 if (!strcasecmp(*pp, "add"))
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3025 action = bm_add;
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3026 else if (!strcasecmp(*pp, "del"))
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3027 action = bm_del;
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3028 else if (!strcasecmp(*pp, "-autojoin"))
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3029 autojoin = 0;
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3030 else if (!strcasecmp(*pp, "+autojoin") || !strcasecmp(*pp, "autojoin"))
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3031 autojoin = 1;
1603
54029aba9452 Allow specifying nickname for bookmark
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1602
diff changeset
3032 else if (!strcmp(*pp, "-"))
54029aba9452 Allow specifying nickname for bookmark
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1602
diff changeset
3033 nick_set = 1;
54029aba9452 Allow specifying nickname for bookmark
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1602
diff changeset
3034 else {
54029aba9452 Allow specifying nickname for bookmark
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1602
diff changeset
3035 nick_set = 1;
54029aba9452 Allow specifying nickname for bookmark
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1602
diff changeset
3036 nick = tmpnick = to_utf8 (*pp);
54029aba9452 Allow specifying nickname for bookmark
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1602
diff changeset
3037 }
1009
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3038 }
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3039 free_arg_lst(paramlst);
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3040 }
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3041
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3042 roomid = buddy_getjid(bud);
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3043
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3044 if (action == bm_add) {
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3045 name = buddy_getname(bud);
1603
54029aba9452 Allow specifying nickname for bookmark
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1602
diff changeset
3046 if (!nick_set)
54029aba9452 Allow specifying nickname for bookmark
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1602
diff changeset
3047 nick = buddy_getnickname(bud);
1379
74b7621537d7 MUC: Store room settings (print_status, auto_whois) in private storage
Mikael Berthe <mikael@lilotux.net>
parents: 1377
diff changeset
3048 printstatus = buddy_getprintstatus(bud);
74b7621537d7 MUC: Store room settings (print_status, auto_whois) in private storage
Mikael Berthe <mikael@lilotux.net>
parents: 1377
diff changeset
3049 autowhois = buddy_getautowhois(bud);
1979
6febc7d1f760 Add /room setopt flag_joins (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1978
diff changeset
3050 flagjoins = buddy_getflagjoins(bud);
1976
e6beab22099b Do not add items to roster with commands /move and /rename (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1972
diff changeset
3051 group = buddy_getgroupname(bud);
1009
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3052 }
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3053
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
3054 xmpp_set_storage_bookmark(roomid, name, nick, NULL, autojoin,
1979
6febc7d1f760 Add /room setopt flag_joins (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1978
diff changeset
3055 printstatus, autowhois, flagjoins, group);
1603
54029aba9452 Allow specifying nickname for bookmark
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1602
diff changeset
3056 g_free (tmpnick);
1009
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3057 }
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3058
1163
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
3059 static void display_all_bookmarks(void)
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
3060 {
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
3061 GSList *bm, *bmp;
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
3062 GString *sbuf;
1525
68580b6be895 Display more information in /room bookmark (autojoin, nick...)
Mikael Berthe <mikael@lilotux.net>
parents: 1518
diff changeset
3063 struct bookmark *bm_elt;
1163
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
3064
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
3065 bm = xmpp_get_all_storage_bookmarks();
1163
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
3066
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
3067 if (!bm)
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
3068 return;
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
3069
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
3070 sbuf = g_string_new("");
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
3071
1333
e30a9d907105 Minor coding style adjustments
Mikael Berthe <mikael@lilotux.net>
parents: 1329
diff changeset
3072 scr_WriteIncomingMessage(NULL, "List of MUC bookmarks:",
e30a9d907105 Minor coding style adjustments
Mikael Berthe <mikael@lilotux.net>
parents: 1329
diff changeset
3073 0, HBB_PREFIX_INFO, 0);
1163
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
3074
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
3075 for (bmp = bm; bmp; bmp = g_slist_next(bmp)) {
1525
68580b6be895 Display more information in /room bookmark (autojoin, nick...)
Mikael Berthe <mikael@lilotux.net>
parents: 1518
diff changeset
3076 bm_elt = bmp->data;
68580b6be895 Display more information in /room bookmark (autojoin, nick...)
Mikael Berthe <mikael@lilotux.net>
parents: 1518
diff changeset
3077 g_string_printf(sbuf, "%c <%s>",
68580b6be895 Display more information in /room bookmark (autojoin, nick...)
Mikael Berthe <mikael@lilotux.net>
parents: 1518
diff changeset
3078 (bm_elt->autojoin ? '*' : ' '), bm_elt->roomjid);
68580b6be895 Display more information in /room bookmark (autojoin, nick...)
Mikael Berthe <mikael@lilotux.net>
parents: 1518
diff changeset
3079 if (bm_elt->nick)
68580b6be895 Display more information in /room bookmark (autojoin, nick...)
Mikael Berthe <mikael@lilotux.net>
parents: 1518
diff changeset
3080 g_string_append_printf(sbuf, " (%s)", bm_elt->nick);
68580b6be895 Display more information in /room bookmark (autojoin, nick...)
Mikael Berthe <mikael@lilotux.net>
parents: 1518
diff changeset
3081 if (bm_elt->name)
68580b6be895 Display more information in /room bookmark (autojoin, nick...)
Mikael Berthe <mikael@lilotux.net>
parents: 1518
diff changeset
3082 g_string_append_printf(sbuf, " %s", bm_elt->name);
68580b6be895 Display more information in /room bookmark (autojoin, nick...)
Mikael Berthe <mikael@lilotux.net>
parents: 1518
diff changeset
3083 g_free(bm_elt->roomjid);
68580b6be895 Display more information in /room bookmark (autojoin, nick...)
Mikael Berthe <mikael@lilotux.net>
parents: 1518
diff changeset
3084 g_free(bm_elt->name);
68580b6be895 Display more information in /room bookmark (autojoin, nick...)
Mikael Berthe <mikael@lilotux.net>
parents: 1518
diff changeset
3085 g_free(bm_elt->nick);
68580b6be895 Display more information in /room bookmark (autojoin, nick...)
Mikael Berthe <mikael@lilotux.net>
parents: 1518
diff changeset
3086 g_free(bm_elt);
1268
dbc907b2d92f Add configurable colors for info and incoming messages (Michal 'vorner' Vaner)
Mikael Berthe <mikael@lilotux.net>
parents: 1260
diff changeset
3087 scr_WriteIncomingMessage(NULL, sbuf->str,
1290
e42f48103609 Drawing the MUC nicks by a different color
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1279
diff changeset
3088 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0);
1163
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
3089 }
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
3090
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
3091 scr_setmsgflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE);
1815
6abca6000762 Make use of ROSTER_UI_PRIO_STATUS_WIN_MESSAGE
Mikael Berthe <mikael@lilotux.net>
parents: 1811
diff changeset
3092 scr_setattentionflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE,
6abca6000762 Make use of ROSTER_UI_PRIO_STATUS_WIN_MESSAGE
Mikael Berthe <mikael@lilotux.net>
parents: 1811
diff changeset
3093 ROSTER_UI_PRIO_STATUS_WIN_MESSAGE, prio_max);
1163
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
3094 g_string_free(sbuf, TRUE);
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
3095 g_slist_free(bm);
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
3096 }
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
3097
1735
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1732
diff changeset
3098 static void do_module(char *arg)
1607
14690e624e9d Add modules
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1603
diff changeset
3099 {
1939
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
3100 #ifdef MODULES_ENABLE
1735
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1732
diff changeset
3101 gboolean force = FALSE;
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1732
diff changeset
3102 char **args;
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1732
diff changeset
3103
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1732
diff changeset
3104 args = split_arg(arg, 2, 0);
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1732
diff changeset
3105 if (!args[0] || !strcmp(args[0], "list")) {
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1732
diff changeset
3106 module_list_print();
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1732
diff changeset
3107 } else {
1749
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1745
diff changeset
3108 const gchar *error = NULL;
1737
764ed5c12589 Move -f flag of /module command after a subcommand
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
3109 const gchar *name = args[1];
764ed5c12589 Move -f flag of /module command after a subcommand
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
3110
764ed5c12589 Move -f flag of /module command after a subcommand
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
3111 if (name && name[0] == '-' && name[1] == 'f') {
764ed5c12589 Move -f flag of /module command after a subcommand
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
3112 force = TRUE;
764ed5c12589 Move -f flag of /module command after a subcommand
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
3113 name +=2;
764ed5c12589 Move -f flag of /module command after a subcommand
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
3114 while (*name && *name == ' ')
764ed5c12589 Move -f flag of /module command after a subcommand
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
3115 ++name;
764ed5c12589 Move -f flag of /module command after a subcommand
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
3116 }
764ed5c12589 Move -f flag of /module command after a subcommand
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
3117
1735
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1732
diff changeset
3118 if (!strcmp(args[0], "load"))
1737
764ed5c12589 Move -f flag of /module command after a subcommand
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
3119 error = module_load(name, TRUE, force);
1735
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1732
diff changeset
3120 else if (!strcmp(args[0], "unload"))
1737
764ed5c12589 Move -f flag of /module command after a subcommand
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
3121 error = module_unload(name, TRUE, force);
1749
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1745
diff changeset
3122 else if (!strcmp(args[0], "info"))
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1745
diff changeset
3123 module_info_print(name);
1735
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1732
diff changeset
3124 else
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1732
diff changeset
3125 error = "Unknown subcommand";
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1732
diff changeset
3126 if (error)
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1732
diff changeset
3127 scr_LogPrint(LPRINT_LOGNORM, "Error: %s.", error);
1607
14690e624e9d Add modules
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1603
diff changeset
3128 }
1735
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1732
diff changeset
3129 free_arg_lst(args);
1939
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
3130 #else
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
3131 scr_log_print(LPRINT_NORMAL,
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
3132 "Please recompile mcabber with modules enabled.");
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
3133 #endif
1607
14690e624e9d Add modules
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1603
diff changeset
3134 }
1163
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
3135
447
03bb57383cea Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents: 446
diff changeset
3136 static void do_room(char *arg)
03bb57383cea Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents: 446
diff changeset
3137 {
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3138 char **paramlst;
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3139 char *subcmd;
447
03bb57383cea Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents: 446
diff changeset
3140 gpointer bud;
03bb57383cea Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents: 446
diff changeset
3141
1684
95df4ea512c8 Provide xmpp_is_online()
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1682
diff changeset
3142 if (!xmpp_is_online()) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
3143 scr_LogPrint(LPRINT_NORMAL, "You are not connected.");
472
75442262c082 Disable some commands when not connected
Mikael Berthe <mikael@lilotux.net>
parents: 471
diff changeset
3144 return;
75442262c082 Disable some commands when not connected
Mikael Berthe <mikael@lilotux.net>
parents: 471
diff changeset
3145 }
75442262c082 Disable some commands when not connected
Mikael Berthe <mikael@lilotux.net>
parents: 471
diff changeset
3146
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3147 paramlst = split_arg(arg, 2, 1); // subcmd, arg
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3148 subcmd = *paramlst;
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3149 arg = *(paramlst+1);
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3150
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3151 if (!subcmd || !*subcmd) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
3152 scr_LogPrint(LPRINT_NORMAL, "Missing parameter.");
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3153 free_arg_lst(paramlst);
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3154 return;
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3155 }
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3156
831
dd865cc57aa2 Fix joining a room when the buddylist is empty
Mikael Berthe <mikael@lilotux.net>
parents: 820
diff changeset
3157 if (current_buddy) {
dd865cc57aa2 Fix joining a room when the buddylist is empty
Mikael Berthe <mikael@lilotux.net>
parents: 820
diff changeset
3158 bud = BUDDATA(current_buddy);
dd865cc57aa2 Fix joining a room when the buddylist is empty
Mikael Berthe <mikael@lilotux.net>
parents: 820
diff changeset
3159 } else {
1073
253e8988eb5c Fix a few memory leaks after calls to split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 1072
diff changeset
3160 if (strcasecmp(subcmd, "join")) {
253e8988eb5c Fix a few memory leaks after calls to split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 1072
diff changeset
3161 free_arg_lst(paramlst);
831
dd865cc57aa2 Fix joining a room when the buddylist is empty
Mikael Berthe <mikael@lilotux.net>
parents: 820
diff changeset
3162 return;
1073
253e8988eb5c Fix a few memory leaks after calls to split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 1072
diff changeset
3163 }
831
dd865cc57aa2 Fix joining a room when the buddylist is empty
Mikael Berthe <mikael@lilotux.net>
parents: 820
diff changeset
3164 // "room join" is a special case, we don't need to have a valid
dd865cc57aa2 Fix joining a room when the buddylist is empty
Mikael Berthe <mikael@lilotux.net>
parents: 820
diff changeset
3165 // current_buddy.
dd865cc57aa2 Fix joining a room when the buddylist is empty
Mikael Berthe <mikael@lilotux.net>
parents: 820
diff changeset
3166 bud = NULL;
dd865cc57aa2 Fix joining a room when the buddylist is empty
Mikael Berthe <mikael@lilotux.net>
parents: 820
diff changeset
3167 }
dd865cc57aa2 Fix joining a room when the buddylist is empty
Mikael Berthe <mikael@lilotux.net>
parents: 820
diff changeset
3168
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3169 if (!strcasecmp(subcmd, "join")) {
841
f8c0447beec2 Allow "/room join . [nick]" if the current item is a MUC room
Mikael Berthe <mikael@lilotux.net>
parents: 840
diff changeset
3170 if ((arg = check_room_subcommand(arg, FALSE, NULL)) != NULL)
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
3171 room_join(bud, arg);
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3172 } else if (!strcasecmp(subcmd, "invite")) {
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3173 if ((arg = check_room_subcommand(arg, TRUE, bud)) != NULL)
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
3174 room_invite(bud, arg);
585
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
3175 } else if (!strcasecmp(subcmd, "affil")) {
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
3176 if ((arg = check_room_subcommand(arg, TRUE, bud)) != NULL)
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
3177 room_affil(bud, arg);
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
3178 } else if (!strcasecmp(subcmd, "role")) {
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
3179 if ((arg = check_room_subcommand(arg, TRUE, bud)) != NULL)
7eff2c1481fa Add "/room affil" and "/room role"
Mikael Berthe <mikael@lilotux.net>
parents: 584
diff changeset
3180 room_role(bud, arg);
571
d63e6cbdc297 Add "/room ban"
Mikael Berthe <mikael@lilotux.net>
parents: 570
diff changeset
3181 } else if (!strcasecmp(subcmd, "ban")) {
d63e6cbdc297 Add "/room ban"
Mikael Berthe <mikael@lilotux.net>
parents: 570
diff changeset
3182 if ((arg = check_room_subcommand(arg, TRUE, bud)) != NULL)
d63e6cbdc297 Add "/room ban"
Mikael Berthe <mikael@lilotux.net>
parents: 570
diff changeset
3183 room_ban(bud, arg);
1260
b4ccc5b2a6de Add command /room unban
Mikael Berthe <mikael@lilotux.net>
parents: 1235
diff changeset
3184 } else if (!strcasecmp(subcmd, "unban")) {
b4ccc5b2a6de Add command /room unban
Mikael Berthe <mikael@lilotux.net>
parents: 1235
diff changeset
3185 if ((arg = check_room_subcommand(arg, TRUE, bud)) != NULL)
b4ccc5b2a6de Add command /room unban
Mikael Berthe <mikael@lilotux.net>
parents: 1235
diff changeset
3186 room_unban(bud, arg);
568
eb1df2371581 Add "/room kick"
Mikael Berthe <mikael@lilotux.net>
parents: 566
diff changeset
3187 } else if (!strcasecmp(subcmd, "kick")) {
eb1df2371581 Add "/room kick"
Mikael Berthe <mikael@lilotux.net>
parents: 566
diff changeset
3188 if ((arg = check_room_subcommand(arg, TRUE, bud)) != NULL)
eb1df2371581 Add "/room kick"
Mikael Berthe <mikael@lilotux.net>
parents: 566
diff changeset
3189 room_kick(bud, arg);
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3190 } else if (!strcasecmp(subcmd, "leave")) {
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3191 if ((arg = check_room_subcommand(arg, FALSE, bud)) != NULL)
1415
317f8d181626 Rename command public functions
Mikael Berthe <mikael@lilotux.net>
parents: 1414
diff changeset
3192 cmd_room_leave(bud, arg);
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3193 } else if (!strcasecmp(subcmd, "names")) {
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3194 if ((arg = check_room_subcommand(arg, FALSE, bud)) != NULL)
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
3195 room_names(bud, arg);
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3196 } else if (!strcasecmp(subcmd, "nick")) {
565
89c347b3e4c1 MUC: Make "/room nick" display the current nickname
Mikael Berthe <mikael@lilotux.net>
parents: 558
diff changeset
3197 if ((arg = check_room_subcommand(arg, FALSE, bud)) != NULL)
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
3198 room_nick(bud, arg);
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3199 } else if (!strcasecmp(subcmd, "privmsg")) {
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3200 if ((arg = check_room_subcommand(arg, TRUE, bud)) != NULL)
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
3201 room_privmsg(bud, arg);
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3202 } else if (!strcasecmp(subcmd, "remove")) {
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3203 if ((arg = check_room_subcommand(arg, FALSE, bud)) != NULL)
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
3204 room_remove(bud, arg);
599
fb67bf62f4eb Add "/room destroy"
Mikael Berthe <mikael@lilotux.net>
parents: 598
diff changeset
3205 } else if (!strcasecmp(subcmd, "destroy")) {
fb67bf62f4eb Add "/room destroy"
Mikael Berthe <mikael@lilotux.net>
parents: 598
diff changeset
3206 if ((arg = check_room_subcommand(arg, FALSE, bud)) != NULL)
fb67bf62f4eb Add "/room destroy"
Mikael Berthe <mikael@lilotux.net>
parents: 598
diff changeset
3207 room_destroy(bud, arg);
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3208 } else if (!strcasecmp(subcmd, "unlock")) {
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3209 if ((arg = check_room_subcommand(arg, FALSE, bud)) != NULL)
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
3210 room_unlock(bud, arg);
1377
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
3211 } else if (!strcasecmp(subcmd, "setopt")) {
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
3212 if ((arg = check_room_subcommand(arg, FALSE, bud)) != NULL)
cd9182f0b5c7 Add /room setopt {print_status,auto_whois}
Mikael Berthe <mikael@lilotux.net>
parents: 1368
diff changeset
3213 room_setopt(bud, arg);
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3214 } else if (!strcasecmp(subcmd, "topic")) {
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3215 if ((arg = check_room_subcommand(arg, FALSE, bud)) != NULL)
552
ba5271b49f21 Split do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 549
diff changeset
3216 room_topic(bud, arg);
572
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
3217 } else if (!strcasecmp(subcmd, "whois")) {
afc2bd38b15c Implement affiliations handling, add "/room whois"
Mikael Berthe <mikael@lilotux.net>
parents: 571
diff changeset
3218 if ((arg = check_room_subcommand(arg, TRUE, bud)) != NULL)
1415
317f8d181626 Rename command public functions
Mikael Berthe <mikael@lilotux.net>
parents: 1414
diff changeset
3219 cmd_room_whois(bud, arg, TRUE);
1009
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3220 } else if (!strcasecmp(subcmd, "bookmark")) {
1163
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
3221 if (!arg && !buddy_getjid(BUDDATA(current_buddy)) &&
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
3222 buddy_gettype(BUDDATA(current_buddy)) == ROSTER_TYPE_SPECIAL)
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
3223 display_all_bookmarks();
2913310a7be6 Make /roster bookmark in the status buffer show all bookmarks
Mikael Berthe <mikael@lilotux.net>
parents: 1162
diff changeset
3224 else if ((arg = check_room_subcommand(arg, FALSE, bud)) != NULL)
1009
c112423ac012 Add /room bookmark
Mikael Berthe <mikael@lilotux.net>
parents: 1004
diff changeset
3225 room_bookmark(bud, arg);
447
03bb57383cea Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents: 446
diff changeset
3226 } else {
03bb57383cea Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents: 446
diff changeset
3227 scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!");
03bb57383cea Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents: 446
diff changeset
3228 }
554
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3229
2424bbf0a6db Some more work on do_room()
Mikael Berthe <mikael@lilotux.net>
parents: 552
diff changeset
3230 free_arg_lst(paramlst);
447
03bb57383cea Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents: 446
diff changeset
3231 }
03bb57383cea Initial Multi-User Chat support
Mikael Berthe <mikael@lilotux.net>
parents: 446
diff changeset
3232
617
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3233 static void do_authorization(char *arg)
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3234 {
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3235 char **paramlst;
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3236 char *subcmd;
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
3237 char *jid_utf8;
617
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3238
1684
95df4ea512c8 Provide xmpp_is_online()
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1682
diff changeset
3239 if (!xmpp_is_online()) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
3240 scr_LogPrint(LPRINT_NORMAL, "You are not connected.");
617
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3241 return;
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3242 }
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3243
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3244 paramlst = split_arg(arg, 2, 0); // subcmd, [jid]
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3245 subcmd = *paramlst;
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3246 arg = *(paramlst+1);
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3247
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3248 if (!subcmd || !*subcmd) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
3249 scr_LogPrint(LPRINT_NORMAL, "Missing parameter.");
1073
253e8988eb5c Fix a few memory leaks after calls to split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 1072
diff changeset
3250 goto do_authorization_return;
617
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3251 }
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3252
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3253 // Use the provided jid, if it looks valid
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3254 if (arg) {
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3255 if (!*arg) {
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3256 // If no jid is provided, we use the current selected buddy
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3257 arg = NULL;
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3258 } else {
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3259 if (check_jid_syntax(arg)) {
1064
516b5f7d1023 Fix some UTF-8 related problems
Mikael Berthe <mikael@lilotux.net>
parents: 1059
diff changeset
3260 scr_LogPrint(LPRINT_NORMAL|LPRINT_NOTUTF8,
516b5f7d1023 Fix some UTF-8 related problems
Mikael Berthe <mikael@lilotux.net>
parents: 1059
diff changeset
3261 "<%s> is not a valid Jabber ID.", arg);
1073
253e8988eb5c Fix a few memory leaks after calls to split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 1072
diff changeset
3262 goto do_authorization_return;
617
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3263 }
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3264 }
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3265 }
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3266
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3267 if (!arg) { // Use the current selected buddy's jid
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3268 gpointer bud;
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3269 guint type;
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3270
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
3271 if (!current_buddy)
1073
253e8988eb5c Fix a few memory leaks after calls to split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 1072
diff changeset
3272 goto do_authorization_return;
617
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3273 bud = BUDDATA(current_buddy);
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3274
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
3275 jid_utf8 = arg = (char*)buddy_getjid(bud);
617
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3276 type = buddy_gettype(bud);
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3277
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3278 if (!(type & (ROSTER_TYPE_USER|ROSTER_TYPE_AGENT))) {
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
3279 scr_LogPrint(LPRINT_NORMAL, "Invalid buddy.");
1073
253e8988eb5c Fix a few memory leaks after calls to split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 1072
diff changeset
3280 goto do_authorization_return;
617
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3281 }
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
3282 } else {
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
3283 jid_utf8 = to_utf8(arg);
617
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3284 }
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3285
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3286 if (!strcasecmp(subcmd, "allow")) {
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
3287 xmpp_send_s10n(jid_utf8, LM_MESSAGE_SUB_TYPE_SUBSCRIBED);
617
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3288 scr_LogPrint(LPRINT_LOGNORM,
1635
a57f2634ee7c Fix a misleading message
Mikael Berthe <mikael@lilotux.net>
parents: 1631
diff changeset
3289 "Sent presence subscription approval to <%s>.",
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
3290 jid_utf8);
617
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3291 } else if (!strcasecmp(subcmd, "cancel")) {
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
3292 xmpp_send_s10n(jid_utf8, LM_MESSAGE_SUB_TYPE_UNSUBSCRIBED);
617
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3293 scr_LogPrint(LPRINT_LOGNORM,
681
8dc602a246a4 Improve messages in commands.c
Philip M. White <pmw@qnan.org>
parents: 677
diff changeset
3294 "<%s> will no longer receive your presence updates.",
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
3295 jid_utf8);
617
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3296 } else if (!strcasecmp(subcmd, "request")) {
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
3297 xmpp_send_s10n(jid_utf8, LM_MESSAGE_SUB_TYPE_SUBSCRIBE);
617
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3298 scr_LogPrint(LPRINT_LOGNORM,
957
82aaa7afbd03 Cosmetic changes
Mikael Berthe <mikael@lilotux.net>
parents: 954
diff changeset
3299 "Sent presence notification request to <%s>.", jid_utf8);
835
6a732d2ad4b4 Add "/authorization request_unsubscribe"
Mikael Berthe <mikael@lilotux.net>
parents: 831
diff changeset
3300 } else if (!strcasecmp(subcmd, "request_unsubscribe")) {
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
3301 xmpp_send_s10n(jid_utf8, LM_MESSAGE_SUB_TYPE_UNSUBSCRIBE);
835
6a732d2ad4b4 Add "/authorization request_unsubscribe"
Mikael Berthe <mikael@lilotux.net>
parents: 831
diff changeset
3302 scr_LogPrint(LPRINT_LOGNORM,
957
82aaa7afbd03 Cosmetic changes
Mikael Berthe <mikael@lilotux.net>
parents: 954
diff changeset
3303 "Sent presence notification unsubscription request to <%s>.",
835
6a732d2ad4b4 Add "/authorization request_unsubscribe"
Mikael Berthe <mikael@lilotux.net>
parents: 831
diff changeset
3304 jid_utf8);
617
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3305 } else {
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3306 scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!");
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3307 }
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3308
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
3309 // Only free jid_utf8 if it has been allocated, i.e. if != arg.
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
3310 if (jid_utf8 && jid_utf8 != arg)
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
3311 g_free(jid_utf8);
1073
253e8988eb5c Fix a few memory leaks after calls to split_arg()
Mikael Berthe <mikael@lilotux.net>
parents: 1072
diff changeset
3312 do_authorization_return:
617
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3313 free_arg_lst(paramlst);
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3314 }
d3a8b43bf9e7 Add "/authorization" command
Mikael Berthe <mikael@lilotux.net>
parents: 608
diff changeset
3315
622
2b7ef605ddc6 Add /version command
Mikael Berthe <mikael@lilotux.net>
parents: 620
diff changeset
3316 static void do_version(char *arg)
2b7ef605ddc6 Add /version command
Mikael Berthe <mikael@lilotux.net>
parents: 620
diff changeset
3317 {
777
e6d42f239541 "/version" shows Mercurial changeset (if there's one)
Mikael Berthe <mikael@lilotux.net>
parents: 774
diff changeset
3318 gchar *ver = mcabber_version();
e6d42f239541 "/version" shows Mercurial changeset (if there's one)
Mikael Berthe <mikael@lilotux.net>
parents: 774
diff changeset
3319 scr_LogPrint(LPRINT_NORMAL, "This is mcabber version %s.", ver);
e6d42f239541 "/version" shows Mercurial changeset (if there's one)
Mikael Berthe <mikael@lilotux.net>
parents: 774
diff changeset
3320 g_free(ver);
1921
7d72b7d2d93a Add module information in the output of /version
Mikael Berthe <mikael@lilotux.net>
parents: 1875
diff changeset
3321 #ifdef MODULES_ENABLE
7d72b7d2d93a Add module information in the output of /version
Mikael Berthe <mikael@lilotux.net>
parents: 1875
diff changeset
3322 scr_LogPrint(LPRINT_NORMAL, "Compiled with modules support (API %s:%d-%d).",
7d72b7d2d93a Add module information in the output of /version
Mikael Berthe <mikael@lilotux.net>
parents: 1875
diff changeset
3323 MCABBER_BRANCH, MCABBER_API_MIN, MCABBER_API_VERSION);
7d72b7d2d93a Add module information in the output of /version
Mikael Berthe <mikael@lilotux.net>
parents: 1875
diff changeset
3324 # ifdef PKGLIB_DIR
7d72b7d2d93a Add module information in the output of /version
Mikael Berthe <mikael@lilotux.net>
parents: 1875
diff changeset
3325 scr_LogPrint(LPRINT_NORMAL, " Modules directory: " PKGLIB_DIR);
7d72b7d2d93a Add module information in the output of /version
Mikael Berthe <mikael@lilotux.net>
parents: 1875
diff changeset
3326 # endif
7d72b7d2d93a Add module information in the output of /version
Mikael Berthe <mikael@lilotux.net>
parents: 1875
diff changeset
3327 #endif
622
2b7ef605ddc6 Add /version command
Mikael Berthe <mikael@lilotux.net>
parents: 620
diff changeset
3328 }
2b7ef605ddc6 Add /version command
Mikael Berthe <mikael@lilotux.net>
parents: 620
diff changeset
3329
693
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3330 static void do_request(char *arg)
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3331 {
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3332 char **paramlst;
1722
b18142457ca9 Fix vCard requests in MUC rooms
Mikael Berthe <mikael@lilotux.net>
parents: 1720
diff changeset
3333 char *fjid, *type;
740
1877838d3c27 Kill two gcc warnings
Mikael Berthe <mikael@lilotux.net>
parents: 707
diff changeset
3334 enum iqreq_type numtype = iqreq_none;
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
3335 char *jid_utf8 = NULL;
693
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3336
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3337 paramlst = split_arg(arg, 2, 0); // type, jid
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3338 type = *paramlst;
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
3339 fjid = *(paramlst+1);
693
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3340
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3341 if (type) {
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3342 // Quick check...
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3343 if (!strcasecmp(type, "version"))
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3344 numtype = iqreq_version;
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3345 else if (!strcasecmp(type, "time"))
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3346 numtype = iqreq_time;
1015
579299b1c9b2 Add /request last
Mikael Berthe <mikael@lilotux.net>
parents: 1014
diff changeset
3347 else if (!strcasecmp(type, "last"))
579299b1c9b2 Add /request last
Mikael Berthe <mikael@lilotux.net>
parents: 1014
diff changeset
3348 numtype = iqreq_last;
1705
ac881b5f9248 Add /request ping (XEP-0199), by merging isbear's module
Mikael Berthe <mikael@lilotux.net>
parents: 1686
diff changeset
3349 else if (!strcasecmp(type, "ping"))
ac881b5f9248 Add /request ping (XEP-0199), by merging isbear's module
Mikael Berthe <mikael@lilotux.net>
parents: 1686
diff changeset
3350 numtype = iqreq_ping;
1003
c8b1a52b2fd6 Initial VCard retrieval support
Mikael Berthe <mikael@lilotux.net>
parents: 988
diff changeset
3351 else if (!strcasecmp(type, "vcard"))
c8b1a52b2fd6 Initial VCard retrieval support
Mikael Berthe <mikael@lilotux.net>
parents: 988
diff changeset
3352 numtype = iqreq_vcard;
693
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3353 }
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3354
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3355 if (!type || !numtype) {
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3356 scr_LogPrint(LPRINT_NORMAL,
1015
579299b1c9b2 Add /request last
Mikael Berthe <mikael@lilotux.net>
parents: 1014
diff changeset
3357 "Please specify a query type (version, time...).");
693
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3358 free_arg_lst(paramlst);
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3359 return;
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3360 }
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3361
1684
95df4ea512c8 Provide xmpp_is_online()
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1682
diff changeset
3362 if (!xmpp_is_online()) {
1592
1802b926e3fa Display a warning when using /request while disconnected
Mikael Berthe <mikael@lilotux.net>
parents: 1588
diff changeset
3363 scr_LogPrint(LPRINT_NORMAL, "You are not connected.");
1802b926e3fa Display a warning when using /request while disconnected
Mikael Berthe <mikael@lilotux.net>
parents: 1588
diff changeset
3364 free_arg_lst(paramlst);
1802b926e3fa Display a warning when using /request while disconnected
Mikael Berthe <mikael@lilotux.net>
parents: 1588
diff changeset
3365 return;
1802b926e3fa Display a warning when using /request while disconnected
Mikael Berthe <mikael@lilotux.net>
parents: 1588
diff changeset
3366 }
1802b926e3fa Display a warning when using /request while disconnected
Mikael Berthe <mikael@lilotux.net>
parents: 1588
diff changeset
3367
693
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3368 // Allow special jid "" or "." (current buddy)
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
3369 if (fjid && (!*fjid || !strcmp(fjid, ".")))
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
3370 fjid = NULL;
693
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3371
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
3372 if (fjid) {
693
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3373 // The JID has been specified. Quick check...
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
3374 if (check_jid_syntax(fjid)) {
1064
516b5f7d1023 Fix some UTF-8 related problems
Mikael Berthe <mikael@lilotux.net>
parents: 1059
diff changeset
3375 scr_LogPrint(LPRINT_NORMAL|LPRINT_NOTUTF8,
516b5f7d1023 Fix some UTF-8 related problems
Mikael Berthe <mikael@lilotux.net>
parents: 1059
diff changeset
3376 "<%s> is not a valid Jabber ID.", fjid);
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
3377 fjid = NULL;
693
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3378 } else {
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3379 // Convert jid to lowercase
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
3380 char *p;
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
3381 for (p = fjid; *p && *p != JID_RESOURCE_SEPARATOR; p++)
693
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3382 *p = tolower(*p);
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
3383 fjid = jid_utf8 = to_utf8(fjid);
693
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3384 }
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3385 } else {
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3386 // Add the current buddy
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3387 if (current_buddy)
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
3388 fjid = (char*)buddy_getjid(BUDDATA(current_buddy));
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
3389 if (!fjid)
693
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3390 scr_LogPrint(LPRINT_NORMAL, "Please specify a Jabber ID.");
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3391 }
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3392
1058
c0d44a9a99bc Code cleanup
Mikael Berthe <mikael@lilotux.net>
parents: 1055
diff changeset
3393 if (fjid) {
693
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3394 switch (numtype) {
1720
98d99485d276 Do not use the full JID for vcard requests (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1705
diff changeset
3395 case iqreq_vcard:
1722
b18142457ca9 Fix vCard requests in MUC rooms
Mikael Berthe <mikael@lilotux.net>
parents: 1720
diff changeset
3396 { // vCards requests are sent to the bare jid, except in MUC rooms
b18142457ca9 Fix vCard requests in MUC rooms
Mikael Berthe <mikael@lilotux.net>
parents: 1720
diff changeset
3397 gchar *tmp = strchr(fjid, JID_RESOURCE_SEPARATOR);
b18142457ca9 Fix vCard requests in MUC rooms
Mikael Berthe <mikael@lilotux.net>
parents: 1720
diff changeset
3398 if (tmp) {
b18142457ca9 Fix vCard requests in MUC rooms
Mikael Berthe <mikael@lilotux.net>
parents: 1720
diff changeset
3399 gchar *bjid = jidtodisp(fjid);
b18142457ca9 Fix vCard requests in MUC rooms
Mikael Berthe <mikael@lilotux.net>
parents: 1720
diff changeset
3400 if (!roster_find(bjid, jidsearch, ROSTER_TYPE_ROOM))
b18142457ca9 Fix vCard requests in MUC rooms
Mikael Berthe <mikael@lilotux.net>
parents: 1720
diff changeset
3401 *tmp = '\0';
b18142457ca9 Fix vCard requests in MUC rooms
Mikael Berthe <mikael@lilotux.net>
parents: 1720
diff changeset
3402 g_free(bjid);
b18142457ca9 Fix vCard requests in MUC rooms
Mikael Berthe <mikael@lilotux.net>
parents: 1720
diff changeset
3403 }
b18142457ca9 Fix vCard requests in MUC rooms
Mikael Berthe <mikael@lilotux.net>
parents: 1720
diff changeset
3404 }
693
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3405 case iqreq_version:
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3406 case iqreq_time:
1015
579299b1c9b2 Add /request last
Mikael Berthe <mikael@lilotux.net>
parents: 1014
diff changeset
3407 case iqreq_last:
1705
ac881b5f9248 Add /request ping (XEP-0199), by merging isbear's module
Mikael Berthe <mikael@lilotux.net>
parents: 1686
diff changeset
3408 case iqreq_ping:
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
3409 xmpp_request(fjid, numtype);
693
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3410 break;
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3411 default:
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3412 break;
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3413 }
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3414 }
772
464be13343a9 Store most data in UTF-8 internally
Mikael Berthe <mikael@lilotux.net>
parents: 757
diff changeset
3415 g_free(jid_utf8);
693
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3416 free_arg_lst(paramlst);
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3417 }
e98abd3ce28c Add /request command
Mikael Berthe <mikael@lilotux.net>
parents: 681
diff changeset
3418
748
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3419 static void do_event(char *arg)
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3420 {
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3421 char **paramlst;
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3422 char *evid, *subcmd;
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3423 int action = -1;
1685
1342df44c814 Improved events interface
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1684
diff changeset
3424
1342df44c814 Improved events interface
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1684
diff changeset
3425 paramlst = split_arg(arg, 3, 1); // id, subcmd, optional arg
748
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3426 evid = *paramlst;
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3427 subcmd = *(paramlst+1);
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3428
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3429 if (!evid || !subcmd) {
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3430 // Special case: /event list
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3431 if (evid && !strcasecmp(evid, "list"))
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3432 evs_display_list();
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3433 else
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3434 scr_LogPrint(LPRINT_NORMAL,
1685
1342df44c814 Improved events interface
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1684
diff changeset
3435 "Missing parameter. Usage: /event num action "
1342df44c814 Improved events interface
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1684
diff changeset
3436 "[event-specific args]");
748
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3437 free_arg_lst(paramlst);
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3438 return;
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3439 }
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3440
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3441 if (!strcasecmp(subcmd, "reject"))
1685
1342df44c814 Improved events interface
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1684
diff changeset
3442 action = EVS_CONTEXT_REJECT;
748
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3443 else if (!strcasecmp(subcmd, "accept"))
1685
1342df44c814 Improved events interface
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1684
diff changeset
3444 action = EVS_CONTEXT_ACCEPT;
755
b747f76e57ae Add "/event n ignore"
Mikael Berthe <mikael@lilotux.net>
parents: 750
diff changeset
3445 else if (!strcasecmp(subcmd, "ignore"))
1685
1342df44c814 Improved events interface
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1684
diff changeset
3446 action = EVS_CONTEXT_CANCEL;
748
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3447
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3448 if (action == -1) {
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3449 scr_LogPrint(LPRINT_NORMAL, "Wrong action parameter.");
1685
1342df44c814 Improved events interface
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1684
diff changeset
3450 } else {
820
80bd7f49075f Allow '*' in /event command
Mikael Berthe <mikael@lilotux.net>
parents: 807
diff changeset
3451 GSList *p;
1685
1342df44c814 Improved events interface
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1684
diff changeset
3452 GSList *evidlst;
820
80bd7f49075f Allow '*' in /event command
Mikael Berthe <mikael@lilotux.net>
parents: 807
diff changeset
3453
80bd7f49075f Allow '*' in /event command
Mikael Berthe <mikael@lilotux.net>
parents: 807
diff changeset
3454 if (!strcmp(evid, "*")) {
80bd7f49075f Allow '*' in /event command
Mikael Berthe <mikael@lilotux.net>
parents: 807
diff changeset
3455 // Use completion list
1685
1342df44c814 Improved events interface
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1684
diff changeset
3456 evidlst = evs_geteventslist();
820
80bd7f49075f Allow '*' in /event command
Mikael Berthe <mikael@lilotux.net>
parents: 807
diff changeset
3457 } else {
80bd7f49075f Allow '*' in /event command
Mikael Berthe <mikael@lilotux.net>
parents: 807
diff changeset
3458 // Let's create a slist with the provided event id
1685
1342df44c814 Improved events interface
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1684
diff changeset
3459 evidlst = g_slist_append(NULL, evid);
748
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3460 }
820
80bd7f49075f Allow '*' in /event command
Mikael Berthe <mikael@lilotux.net>
parents: 807
diff changeset
3461 for (p = evidlst; p; p = g_slist_next(p)) {
1685
1342df44c814 Improved events interface
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1684
diff changeset
3462 if (evs_callback(p->data, action,
1342df44c814 Improved events interface
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1684
diff changeset
3463 (const char*)(paramlst+2)) == -1) {
1686
393c05fba337 Use G_GNUC_PRINTF to check scr_LogPrint arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1685
diff changeset
3464 scr_LogPrint(LPRINT_NORMAL, "Event %s not found.",
393c05fba337 Use G_GNUC_PRINTF to check scr_LogPrint arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1685
diff changeset
3465 (const char *)p->data);
820
80bd7f49075f Allow '*' in /event command
Mikael Berthe <mikael@lilotux.net>
parents: 807
diff changeset
3466 }
80bd7f49075f Allow '*' in /event command
Mikael Berthe <mikael@lilotux.net>
parents: 807
diff changeset
3467 }
80bd7f49075f Allow '*' in /event command
Mikael Berthe <mikael@lilotux.net>
parents: 807
diff changeset
3468 g_slist_free(evidlst);
748
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3469 }
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3470
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3471 free_arg_lst(paramlst);
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3472 }
53a000411587 Add /event command
Mikael Berthe <mikael@lilotux.net>
parents: 740
diff changeset
3473
1066
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3474 static void do_pgp(char *arg)
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3475 {
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3476 char **paramlst;
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3477 char *fjid, *subcmd, *keyid;
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3478 enum {
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3479 pgp_none,
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3480 pgp_enable,
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3481 pgp_disable,
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3482 pgp_setkey,
1197
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
3483 pgp_force,
1066
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3484 pgp_info
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3485 } op = 0;
1197
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
3486 int force = FALSE;
1066
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3487
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3488 paramlst = split_arg(arg, 3, 0); // subcmd, jid, [key]
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3489 subcmd = *paramlst;
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3490 fjid = *(paramlst+1);
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3491 keyid = *(paramlst+2);
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3492
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3493 if (!subcmd)
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3494 fjid = NULL;
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3495 if (!fjid)
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3496 keyid = NULL;
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3497
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3498 if (subcmd) {
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3499 if (!strcasecmp(subcmd, "enable"))
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3500 op = pgp_enable;
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3501 else if (!strcasecmp(subcmd, "disable"))
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3502 op = pgp_disable;
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3503 else if (!strcasecmp(subcmd, "setkey"))
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3504 op = pgp_setkey;
1197
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
3505 else if ((!strcasecmp(subcmd, "force")) ||
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
3506 (!strcasecmp(subcmd, "+force"))) {
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
3507 op = pgp_force;
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
3508 force = TRUE;
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
3509 } else if (!strcasecmp(subcmd, "-force"))
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
3510 op = pgp_force;
1066
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3511 else if (!strcasecmp(subcmd, "info"))
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3512 op = pgp_info;
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3513 }
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3514
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3515 if (!op) {
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3516 scr_LogPrint(LPRINT_NORMAL, "Unrecognized or missing parameter!");
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3517 free_arg_lst(paramlst);
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3518 return;
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3519 }
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3520
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3521 // Allow special jid "" or "." (current buddy)
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3522 if (fjid && (!*fjid || !strcmp(fjid, ".")))
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3523 fjid = NULL;
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3524
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3525 if (fjid) {
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3526 // The JID has been specified. Quick check...
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3527 if (check_jid_syntax(fjid) || !strchr(fjid, '@')) {
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3528 scr_LogPrint(LPRINT_NORMAL|LPRINT_NOTUTF8,
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3529 "<%s> is not a valid Jabber ID.", fjid);
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3530 fjid = NULL;
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3531 } else {
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3532 // Convert jid to lowercase and strip resource
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3533 char *p;
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3534 for (p = fjid; *p && *p != JID_RESOURCE_SEPARATOR; p++)
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3535 *p = tolower(*p);
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3536 if (*p == JID_RESOURCE_SEPARATOR)
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3537 *p = '\0';
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3538 }
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3539 } else {
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3540 gpointer bud = NULL;
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3541 if (current_buddy)
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3542 bud = BUDDATA(current_buddy);
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3543 if (bud) {
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3544 guint type = buddy_gettype(bud);
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3545 if (type & ROSTER_TYPE_USER) // Is it a user?
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3546 fjid = (char*)buddy_getjid(bud);
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3547 else
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3548 scr_LogPrint(LPRINT_NORMAL, "The selected item should be a user.");
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3549 }
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3550 }
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3551
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3552 if (fjid) { // fjid is actually a bare jid...
1197
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
3553 guint disabled;
1066
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3554 GString *sbuf;
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3555 switch (op) {
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3556 case pgp_enable:
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3557 case pgp_disable:
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3558 settings_pgp_setdisabled(fjid, (op == pgp_disable ? TRUE : FALSE));
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3559 break;
1197
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
3560 case pgp_force:
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
3561 settings_pgp_setforce(fjid, force);
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
3562 break;
1066
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3563 case pgp_setkey:
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3564 settings_pgp_setkeyid(fjid, keyid);
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3565 break;
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3566 case pgp_info:
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3567 sbuf = g_string_new("");
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3568 if (settings_pgp_getkeyid(fjid)) {
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3569 g_string_printf(sbuf, "PGP Encryption key id: %s",
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3570 settings_pgp_getkeyid(fjid));
1290
e42f48103609 Drawing the MUC nicks by a different color
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1279
diff changeset
3571 scr_WriteIncomingMessage(fjid, sbuf->str, 0, HBB_PREFIX_INFO, 0);
1066
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3572 }
1197
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
3573 disabled = settings_pgp_getdisabled(fjid);
1066
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3574 g_string_printf(sbuf, "PGP encryption is %s",
1197
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
3575 (disabled ? "disabled" : "enabled"));
1290
e42f48103609 Drawing the MUC nicks by a different color
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1279
diff changeset
3576 scr_WriteIncomingMessage(fjid, sbuf->str, 0, HBB_PREFIX_INFO, 0);
1197
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
3577 if (!disabled && settings_pgp_getforce(fjid)) {
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
3578 scr_WriteIncomingMessage(fjid,
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
3579 "Encryption enforced (no negotiation)",
1290
e42f48103609 Drawing the MUC nicks by a different color
Michal 'vorner' Vaner <vorner@ucw.cz>
parents: 1279
diff changeset
3580 0, HBB_PREFIX_INFO, 0);
1197
6f602d3270a4 Add /pgp [-]force
Mikael Berthe <mikael@lilotux.net>
parents: 1192
diff changeset
3581 }
1066
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3582 g_string_free(sbuf, TRUE);
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3583 break;
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3584 default:
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3585 break;
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3586 }
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3587 } else {
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3588 scr_LogPrint(LPRINT_NORMAL, "Please specify a valid Jabber ID.");
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3589 }
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3590
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3591 free_arg_lst(paramlst);
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3592 }
6de60e142372 Add command /pgp
Mikael Berthe <mikael@lilotux.net>
parents: 1065
diff changeset
3593
1299
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3594 static void do_otr(char *arg)
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3595 {
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3596 #ifdef HAVE_LIBOTR
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3597 char **paramlst;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3598 char *fjid, *subcmd, *keyid;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3599 enum {
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3600 otr_none,
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3601 otr_start,
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3602 otr_stop,
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3603 otr_fpr,
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3604 otr_smpq,
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3605 otr_smpr,
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3606 otr_smpa,
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3607 otr_k,
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3608 otr_info
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3609 } op = 0;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3610
1347
07816313073b Add an option 'otr' to enable OTR support in the configuration file
Mikael Berthe <mikael@lilotux.net>
parents: 1341
diff changeset
3611 if (!otr_enabled()) {
07816313073b Add an option 'otr' to enable OTR support in the configuration file
Mikael Berthe <mikael@lilotux.net>
parents: 1341
diff changeset
3612 scr_LogPrint(LPRINT_LOGNORM,
07816313073b Add an option 'otr' to enable OTR support in the configuration file
Mikael Berthe <mikael@lilotux.net>
parents: 1341
diff changeset
3613 "Warning: OTR hasn't been enabled -- command ignored.");
07816313073b Add an option 'otr' to enable OTR support in the configuration file
Mikael Berthe <mikael@lilotux.net>
parents: 1341
diff changeset
3614 return;
07816313073b Add an option 'otr' to enable OTR support in the configuration file
Mikael Berthe <mikael@lilotux.net>
parents: 1341
diff changeset
3615 }
07816313073b Add an option 'otr' to enable OTR support in the configuration file
Mikael Berthe <mikael@lilotux.net>
parents: 1341
diff changeset
3616
1299
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3617 paramlst = split_arg(arg, 3, 0); // subcmd, jid, [key]
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3618 subcmd = *paramlst;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3619 fjid = *(paramlst+1);
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3620 keyid = *(paramlst+2);
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3621
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3622 if (!subcmd)
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3623 fjid = NULL;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3624 if (!fjid)
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3625 keyid = NULL;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3626
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3627 if (subcmd) {
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3628 if (!strcasecmp(subcmd, "start"))
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3629 op = otr_start;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3630 else if (!strcasecmp(subcmd, "stop"))
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3631 op = otr_stop;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3632 else if (!strcasecmp(subcmd, "fingerprint"))
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3633 op = otr_fpr;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3634 else if (!strcasecmp(subcmd, "smpq"))
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3635 op = otr_smpq;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3636 else if (!strcasecmp(subcmd, "smpr"))
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3637 op = otr_smpr;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3638 else if (!strcasecmp(subcmd, "smpa"))
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3639 op = otr_smpa;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3640 else if (!strcasecmp(subcmd, "key"))
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3641 op = otr_k;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3642 else if (!strcasecmp(subcmd, "info"))
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3643 op = otr_info;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3644 }
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3645
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3646 if (!op) {
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3647 scr_LogPrint(LPRINT_NORMAL, "Unrecognized or missing parameter!");
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3648 free_arg_lst(paramlst);
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3649 return;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3650 }
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3651
1333
e30a9d907105 Minor coding style adjustments
Mikael Berthe <mikael@lilotux.net>
parents: 1329
diff changeset
3652 if (op == otr_k)
1299
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3653 otr_key();
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3654 else {
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3655 // Allow special jid "" or "." (current buddy)
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3656 if (fjid && (!*fjid || !strcmp(fjid, ".")))
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3657 fjid = NULL;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3658
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3659 if (fjid) {
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3660 // The JID has been specified. Quick check...
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3661 if (check_jid_syntax(fjid) || !strchr(fjid, '@')) {
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3662 scr_LogPrint(LPRINT_NORMAL|LPRINT_NOTUTF8,
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3663 "<%s> is not a valid Jabber ID.", fjid);
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3664 fjid = NULL;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3665 } else {
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3666 // Convert jid to lowercase and strip resource
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3667 char *p;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3668 for (p = fjid; *p && *p != JID_RESOURCE_SEPARATOR; p++)
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3669 *p = tolower(*p);
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3670 if (*p == JID_RESOURCE_SEPARATOR)
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3671 *p = '\0';
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3672 }
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3673 } else {
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3674 gpointer bud = NULL;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3675 if (current_buddy)
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3676 bud = BUDDATA(current_buddy);
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3677 if (bud) {
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3678 guint type = buddy_gettype(bud);
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3679 if (type & ROSTER_TYPE_USER) // Is it a user?
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3680 fjid = (char*)buddy_getjid(bud);
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3681 else
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3682 scr_LogPrint(LPRINT_NORMAL, "The selected item should be a user.");
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3683 }
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3684 }
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3685
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3686 if (fjid) { // fjid is actually a bare jid...
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3687 switch (op) {
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3688 case otr_start:
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3689 otr_establish(fjid); break;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3690 case otr_stop:
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3691 otr_disconnect(fjid); break;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3692 case otr_fpr:
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3693 otr_fingerprint(fjid, keyid); break;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3694 case otr_smpq:
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3695 otr_smp_query(fjid, keyid); break;
1329
e00d97c9fce2 OTR Policy: * as an shortcut for default
franky@teufel.fs
parents: 1312
diff changeset
3696 case otr_smpr:
1299
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3697 otr_smp_respond(fjid, keyid); break;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3698 case otr_smpa:
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3699 otr_smp_abort(fjid); break;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3700 case otr_info:
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3701 otr_print_info(fjid); break;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3702 default:
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3703 break;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3704 }
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3705 } else
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3706 scr_LogPrint(LPRINT_NORMAL, "Please specify a valid Jabber ID.");
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3707 }
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3708 free_arg_lst(paramlst);
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3709
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3710 #else
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3711 scr_LogPrint(LPRINT_NORMAL, "Please recompile mcabber with libotr enabled.");
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3712 #endif /* HAVE_LIBOTR */
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3713 }
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3714
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3715 #ifdef HAVE_LIBOTR
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
3716 static char *string_for_otrpolicy(enum otr_policy p)
1299
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3717 {
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3718 switch (p) {
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3719 case plain: return "plain";
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3720 case opportunistic: return "opportunistic";
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3721 case manual: return "manual";
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3722 case always: return "always";
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3723 default: return "unknown";
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3724 }
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3725 }
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3726
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
3727 static void dump_otrpolicy(char *k, char *v, void *nothing)
1299
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3728 {
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3729 scr_LogPrint(LPRINT_NORMAL|LPRINT_NOTUTF8, "otrpolicy for %s: %s", k,
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3730 string_for_otrpolicy(*(enum otr_policy*)v));
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3731 }
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3732 #endif
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3733
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3734 static void do_otrpolicy(char *arg)
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3735 {
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3736 #ifdef HAVE_LIBOTR
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3737 char **paramlst;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3738 char *fjid, *policy;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3739 enum otr_policy p;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3740
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3741 paramlst = split_arg(arg, 2, 0); // [jid|default] policy
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3742 fjid = *paramlst;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3743 policy = *(paramlst+1);
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3744
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3745 if (!fjid && !policy) {
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3746 scr_LogPrint(LPRINT_NORMAL, "default otrpolicy: %s",
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3747 string_for_otrpolicy(settings_otr_getpolicy(NULL)));
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3748 settings_foreach(SETTINGS_TYPE_OTR, &dump_otrpolicy, NULL);
1301
37b41ed9ed35 Fixed compiler warnings
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1299
diff changeset
3749 free_arg_lst(paramlst);
1299
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3750 return;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3751 }
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3752
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3753 if (!policy) {
1301
37b41ed9ed35 Fixed compiler warnings
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1299
diff changeset
3754 scr_LogPrint(LPRINT_NORMAL,
37b41ed9ed35 Fixed compiler warnings
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1299
diff changeset
3755 "Please call otrpolicy correctly: /otrpolicy (default|jid) "
37b41ed9ed35 Fixed compiler warnings
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1299
diff changeset
3756 "(plain|manual|opportunistic|always)");
1299
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3757 free_arg_lst(paramlst);
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3758 return;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3759 }
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3760
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3761 if (!strcasecmp(policy, "plain"))
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3762 p = plain;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3763 else if (!strcasecmp(policy, "manual"))
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3764 p = manual;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3765 else if (!strcasecmp(policy, "opportunistic"))
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3766 p = opportunistic;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3767 else if (!strcasecmp(policy, "always"))
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3768 p = always;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3769 else {
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3770 /* Fail, we don't know _this_ policy*/
1301
37b41ed9ed35 Fixed compiler warnings
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1299
diff changeset
3771 scr_LogPrint(LPRINT_NORMAL, "mcabber doesn't support _this_ policy!");
37b41ed9ed35 Fixed compiler warnings
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1299
diff changeset
3772 free_arg_lst(paramlst);
37b41ed9ed35 Fixed compiler warnings
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1299
diff changeset
3773 return;
1299
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3774 }
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3775
1333
e30a9d907105 Minor coding style adjustments
Mikael Berthe <mikael@lilotux.net>
parents: 1329
diff changeset
3776 if (!strcasecmp(fjid, "default") || !strcasecmp(fjid, "*")) {
1299
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3777 /*set default policy*/
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3778 settings_otr_setpolicy(NULL, p);
1301
37b41ed9ed35 Fixed compiler warnings
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1299
diff changeset
3779 free_arg_lst(paramlst);
1299
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3780 return;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3781 }
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3782 // Allow special jid "" or "." (current buddy)
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3783 if (fjid && (!*fjid || !strcmp(fjid, ".")))
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3784 fjid = NULL;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3785
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3786 if (fjid) {
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3787 // The JID has been specified. Quick check...
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3788 if (check_jid_syntax(fjid) || !strchr(fjid, '@')) {
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3789 scr_LogPrint(LPRINT_NORMAL|LPRINT_NOTUTF8,
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3790 "<%s> is not a valid Jabber ID.", fjid);
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3791 fjid = NULL;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3792 } else {
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3793 // Convert jid to lowercase and strip resource
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3794 char *p;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3795 for (p = fjid; *p && *p != JID_RESOURCE_SEPARATOR; p++)
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3796 *p = tolower(*p);
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3797 if (*p == JID_RESOURCE_SEPARATOR)
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3798 *p = '\0';
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3799 }
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3800 } else {
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3801 gpointer bud = NULL;
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3802 if (current_buddy)
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3803 bud = BUDDATA(current_buddy);
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3804 if (bud) {
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3805 guint type = buddy_gettype(bud);
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3806 if (type & ROSTER_TYPE_USER) // Is it a user?
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3807 fjid = (char*)buddy_getjid(bud);
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3808 else
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3809 scr_LogPrint(LPRINT_NORMAL, "The selected item should be a user.");
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3810 }
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3811 }
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3812
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3813 if (fjid)
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3814 settings_otr_setpolicy(fjid, p);
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3815 else
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3816 scr_LogPrint(LPRINT_NORMAL, "Please specify a valid Jabber ID.");
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3817
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3818 free_arg_lst(paramlst);
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3819 #else
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3820 scr_LogPrint(LPRINT_NORMAL, "Please recompile mcabber with libotr enabled.");
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3821 #endif /* HAVE_LIBOTR */
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3822 }
3b338a5c01fc OTR support
Frank Zschockelt <mcabber_otr[at]freakysoft.de>
parents: 1292
diff changeset
3823
1173
960f34ec22a2 Add init_bindings() for default key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1172
diff changeset
3824 /* !!!
960f34ec22a2 Add init_bindings() for default key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1172
diff changeset
3825 After changing the /iline arguments names here, you must change ones
960f34ec22a2 Add init_bindings() for default key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1172
diff changeset
3826 in init_bindings().
960f34ec22a2 Add init_bindings() for default key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1172
diff changeset
3827 */
1171
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3828 static void do_iline(char *arg)
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3829 {
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3830 if (!strcasecmp(arg, "fword")) {
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3831 readline_forward_word();
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3832 } else if (!strcasecmp(arg, "bword")) {
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3833 readline_backward_word();
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3834 } else if (!strcasecmp(arg, "word_fdel")) {
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3835 readline_forward_kill_word();
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3836 } else if (!strcasecmp(arg, "word_bdel")) {
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3837 readline_backward_kill_word();
1172
334ae9f498f1 Add some more iline functions (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1171
diff changeset
3838 } else if (!strcasecmp(arg, "word_upcase")) {
334ae9f498f1 Add some more iline functions (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1171
diff changeset
3839 readline_updowncase_word(1);
334ae9f498f1 Add some more iline functions (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1171
diff changeset
3840 } else if (!strcasecmp(arg, "word_downcase")) {
334ae9f498f1 Add some more iline functions (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1171
diff changeset
3841 readline_updowncase_word(0);
334ae9f498f1 Add some more iline functions (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1171
diff changeset
3842 } else if (!strcasecmp(arg, "word_capit")) {
334ae9f498f1 Add some more iline functions (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1171
diff changeset
3843 readline_capitalize_word();
1171
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3844 } else if (!strcasecmp(arg, "fchar")) {
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3845 readline_forward_char();
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3846 } else if (!strcasecmp(arg, "bchar")) {
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3847 readline_backward_char();
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3848 } else if (!strcasecmp(arg, "char_fdel")) {
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3849 readline_forward_kill_char();
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3850 } else if (!strcasecmp(arg, "char_bdel")) {
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3851 readline_backward_kill_char();
1172
334ae9f498f1 Add some more iline functions (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1171
diff changeset
3852 } else if (!strcasecmp(arg, "char_swap")) {
1171
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3853 readline_transpose_chars();
1190
be06bbe7e449 Add readline_hist_beginning_search_bwd/fwd functions
Mikael Berthe <mikael@lilotux.net>
parents: 1187
diff changeset
3854 } else if (!strcasecmp(arg, "hist_beginning_search_bwd")) {
be06bbe7e449 Add readline_hist_beginning_search_bwd/fwd functions
Mikael Berthe <mikael@lilotux.net>
parents: 1187
diff changeset
3855 readline_hist_beginning_search_bwd();
be06bbe7e449 Add readline_hist_beginning_search_bwd/fwd functions
Mikael Berthe <mikael@lilotux.net>
parents: 1187
diff changeset
3856 } else if (!strcasecmp(arg, "hist_beginning_search_fwd")) {
be06bbe7e449 Add readline_hist_beginning_search_bwd/fwd functions
Mikael Berthe <mikael@lilotux.net>
parents: 1187
diff changeset
3857 readline_hist_beginning_search_fwd();
1171
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3858 } else if (!strcasecmp(arg, "hist_prev")) {
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3859 readline_hist_prev();
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3860 } else if (!strcasecmp(arg, "hist_next")) {
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3861 readline_hist_next();
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3862 } else if (!strcasecmp(arg, "iline_start")) {
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3863 readline_iline_start();
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3864 } else if (!strcasecmp(arg, "iline_end")) {
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3865 readline_iline_end();
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3866 } else if (!strcasecmp(arg, "iline_fdel")) {
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3867 readline_forward_kill_iline();
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3868 } else if (!strcasecmp(arg, "iline_bdel")) {
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3869 readline_backward_kill_iline();
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3870 } else if (!strcasecmp(arg, "send_multiline")) {
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3871 readline_send_multiline();
1172
334ae9f498f1 Add some more iline functions (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1171
diff changeset
3872 } else if (!strcasecmp(arg, "iline_accept")) {
1177
10733d7de004 Refactor readline_accept_line() and readline_accept_line_down_hist()
Mikael Berthe <mikael@lilotux.net>
parents: 1173
diff changeset
3873 retval_for_cmds = readline_accept_line(FALSE);
10733d7de004 Refactor readline_accept_line() and readline_accept_line_down_hist()
Mikael Berthe <mikael@lilotux.net>
parents: 1173
diff changeset
3874 } else if (!strcasecmp(arg, "iline_accept_down_hist")) {
10733d7de004 Refactor readline_accept_line() and readline_accept_line_down_hist()
Mikael Berthe <mikael@lilotux.net>
parents: 1173
diff changeset
3875 retval_for_cmds = readline_accept_line(TRUE);
1172
334ae9f498f1 Add some more iline functions (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1171
diff changeset
3876 } else if (!strcasecmp(arg, "compl_cancel")) {
334ae9f498f1 Add some more iline functions (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1171
diff changeset
3877 readline_cancel_completion();
334ae9f498f1 Add some more iline functions (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1171
diff changeset
3878 } else if (!strcasecmp(arg, "compl_do")) {
334ae9f498f1 Add some more iline functions (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1171
diff changeset
3879 readline_do_completion();
1945
518740bcd78b Add /iline iline_insert (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1943
diff changeset
3880 } else {
518740bcd78b Add /iline iline_insert (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1943
diff changeset
3881 char **paramlst;
518740bcd78b Add /iline iline_insert (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1943
diff changeset
3882 char *subcmd;
518740bcd78b Add /iline iline_insert (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1943
diff changeset
3883
518740bcd78b Add /iline iline_insert (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1943
diff changeset
3884 paramlst = split_arg(arg, 2, 0); // subcmd, arg
518740bcd78b Add /iline iline_insert (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1943
diff changeset
3885 subcmd = *paramlst;
518740bcd78b Add /iline iline_insert (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1943
diff changeset
3886 arg = *(paramlst+1);
518740bcd78b Add /iline iline_insert (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1943
diff changeset
3887
1946
69f03eabe514 Complain when the iline subcommand is missing/incorrect
Mikael Berthe <mikael@lilotux.net>
parents: 1945
diff changeset
3888 if (!subcmd || !*subcmd) {
69f03eabe514 Complain when the iline subcommand is missing/incorrect
Mikael Berthe <mikael@lilotux.net>
parents: 1945
diff changeset
3889 scr_LogPrint(LPRINT_NORMAL, "Missing parameter.");
69f03eabe514 Complain when the iline subcommand is missing/incorrect
Mikael Berthe <mikael@lilotux.net>
parents: 1945
diff changeset
3890 free_arg_lst(paramlst);
69f03eabe514 Complain when the iline subcommand is missing/incorrect
Mikael Berthe <mikael@lilotux.net>
parents: 1945
diff changeset
3891 return;
69f03eabe514 Complain when the iline subcommand is missing/incorrect
Mikael Berthe <mikael@lilotux.net>
parents: 1945
diff changeset
3892 }
69f03eabe514 Complain when the iline subcommand is missing/incorrect
Mikael Berthe <mikael@lilotux.net>
parents: 1945
diff changeset
3893
1945
518740bcd78b Add /iline iline_insert (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1943
diff changeset
3894 if (!strcasecmp(subcmd, "iline_insert")) {
518740bcd78b Add /iline iline_insert (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1943
diff changeset
3895 readline_insert(arg);
1946
69f03eabe514 Complain when the iline subcommand is missing/incorrect
Mikael Berthe <mikael@lilotux.net>
parents: 1945
diff changeset
3896 } else {
69f03eabe514 Complain when the iline subcommand is missing/incorrect
Mikael Berthe <mikael@lilotux.net>
parents: 1945
diff changeset
3897 scr_LogPrint(LPRINT_NORMAL, "Invalid subcommand.");
1945
518740bcd78b Add /iline iline_insert (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1943
diff changeset
3898 }
518740bcd78b Add /iline iline_insert (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1943
diff changeset
3899
518740bcd78b Add /iline iline_insert (Hermitifier)
Mikael Berthe <mikael@lilotux.net>
parents: 1943
diff changeset
3900 free_arg_lst(paramlst);
1171
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3901 }
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3902 }
03a38b7ad2e0 Add a collection of commands for key bindings (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1165
diff changeset
3903
1172
334ae9f498f1 Add some more iline functions (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1171
diff changeset
3904 static void do_screen_refresh(char *arg)
334ae9f498f1 Add some more iline functions (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1171
diff changeset
3905 {
334ae9f498f1 Add some more iline functions (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1171
diff changeset
3906 readline_refresh_screen();
334ae9f498f1 Add some more iline functions (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1171
diff changeset
3907 }
334ae9f498f1 Add some more iline functions (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1171
diff changeset
3908
334ae9f498f1 Add some more iline functions (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1171
diff changeset
3909 static void do_chat_disable(char *arg)
334ae9f498f1 Add some more iline functions (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1171
diff changeset
3910 {
1503
c74cfe7fd848 Add option --show-roster to command chat_disable.
Mikael Berthe <mikael@lilotux.net>
parents: 1485
diff changeset
3911 guint show_roster;
c74cfe7fd848 Add option --show-roster to command chat_disable.
Mikael Berthe <mikael@lilotux.net>
parents: 1485
diff changeset
3912
c74cfe7fd848 Add option --show-roster to command chat_disable.
Mikael Berthe <mikael@lilotux.net>
parents: 1485
diff changeset
3913 if (arg && !strcasecmp(arg, "--show-roster"))
c74cfe7fd848 Add option --show-roster to command chat_disable.
Mikael Berthe <mikael@lilotux.net>
parents: 1485
diff changeset
3914 show_roster = 1;
c74cfe7fd848 Add option --show-roster to command chat_disable.
Mikael Berthe <mikael@lilotux.net>
parents: 1485
diff changeset
3915 else
c74cfe7fd848 Add option --show-roster to command chat_disable.
Mikael Berthe <mikael@lilotux.net>
parents: 1485
diff changeset
3916 show_roster = 0;
c74cfe7fd848 Add option --show-roster to command chat_disable.
Mikael Berthe <mikael@lilotux.net>
parents: 1485
diff changeset
3917
c74cfe7fd848 Add option --show-roster to command chat_disable.
Mikael Berthe <mikael@lilotux.net>
parents: 1485
diff changeset
3918 readline_disable_chat_mode(show_roster);
1172
334ae9f498f1 Add some more iline functions (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1171
diff changeset
3919 }
334ae9f498f1 Add some more iline functions (Lego12239)
Mikael Berthe <mikael@lilotux.net>
parents: 1171
diff changeset
3920
1675
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3921 static int source_print_error(const char *path, int eerrno)
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3922 {
1939
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
3923 scr_LogPrint(LPRINT_DEBUG, "Source: glob (%s) error: %s.",
932d1b250a55 Simplify cmd_add() (Myhailo Danylenko)
Mikael Berthe <mikael@lilotux.net>
parents: 1938
diff changeset
3924 path, strerror(eerrno));
1675
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3925 return 0;
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3926 }
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3927
1192
7b8765c10abb New command: /source
Mikael Berthe <mikael@lilotux.net>
parents: 1190
diff changeset
3928 static void do_source(char *arg)
7b8765c10abb New command: /source
Mikael Berthe <mikael@lilotux.net>
parents: 1190
diff changeset
3929 {
7b8765c10abb New command: /source
Mikael Berthe <mikael@lilotux.net>
parents: 1190
diff changeset
3930 static int recur_level;
1202
ede6c7aa59b0 Handle "~" in /source paths
Mikael Berthe <mikael@lilotux.net>
parents: 1197
diff changeset
3931 gchar *filename, *expfname;
1675
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3932 glob_t flist;
1192
7b8765c10abb New command: /source
Mikael Berthe <mikael@lilotux.net>
parents: 1190
diff changeset
3933 if (!*arg) {
7b8765c10abb New command: /source
Mikael Berthe <mikael@lilotux.net>
parents: 1190
diff changeset
3934 scr_LogPrint(LPRINT_NORMAL, "Missing filename.");
7b8765c10abb New command: /source
Mikael Berthe <mikael@lilotux.net>
parents: 1190
diff changeset
3935 return;
7b8765c10abb New command: /source
Mikael Berthe <mikael@lilotux.net>
parents: 1190
diff changeset
3936 }
7b8765c10abb New command: /source
Mikael Berthe <mikael@lilotux.net>
parents: 1190
diff changeset
3937 if (recur_level > 20) {
7b8765c10abb New command: /source
Mikael Berthe <mikael@lilotux.net>
parents: 1190
diff changeset
3938 scr_LogPrint(LPRINT_LOGNORM, "** Too many source commands!");
7b8765c10abb New command: /source
Mikael Berthe <mikael@lilotux.net>
parents: 1190
diff changeset
3939 return;
7b8765c10abb New command: /source
Mikael Berthe <mikael@lilotux.net>
parents: 1190
diff changeset
3940 }
7b8765c10abb New command: /source
Mikael Berthe <mikael@lilotux.net>
parents: 1190
diff changeset
3941 filename = g_strdup(arg);
7b8765c10abb New command: /source
Mikael Berthe <mikael@lilotux.net>
parents: 1190
diff changeset
3942 strip_arg_special_chars(filename);
1202
ede6c7aa59b0 Handle "~" in /source paths
Mikael Berthe <mikael@lilotux.net>
parents: 1197
diff changeset
3943 expfname = expand_filename(filename);
1192
7b8765c10abb New command: /source
Mikael Berthe <mikael@lilotux.net>
parents: 1190
diff changeset
3944 g_free(filename);
1675
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3945 // match
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3946 flist.gl_offs = 0;
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3947 if (glob(expfname, 0, source_print_error, &flist)) {
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3948 scr_LogPrint(LPRINT_LOGNORM, "Source: error: %s.", strerror (errno));
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3949 } else {
1680
1d84f5be2ad1 Kill a warning
Mikael Berthe <mikael@lilotux.net>
parents: 1676
diff changeset
3950 unsigned int i;
1675
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3951 // sort list
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3952 for (i = 1; i < flist.gl_pathc; ++i) {
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3953 int j;
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3954 for (j = i-1; j > 0; --j) {
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3955 char *a = flist.gl_pathv[j+1];
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3956 char *b = flist.gl_pathv[j];
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3957 if (strcmp(a, b) < 0) {
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3958 flist.gl_pathv[j] = a;
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3959 flist.gl_pathv[j+1] = b;
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3960 } else
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3961 break;
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3962 }
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3963 }
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3964 // source files in list
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3965 for (i=0; i < flist.gl_pathc; ++i) {
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3966 recur_level++;
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3967 cfg_read_file(flist.gl_pathv[i], FALSE);
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3968 recur_level--;
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3969 }
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3970 // free
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3971 globfree(&flist);
c73b31124fa6 Use glob() in source command
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1668
diff changeset
3972 }
1202
ede6c7aa59b0 Handle "~" in /source paths
Mikael Berthe <mikael@lilotux.net>
parents: 1197
diff changeset
3973 g_free(expfname);
1192
7b8765c10abb New command: /source
Mikael Berthe <mikael@lilotux.net>
parents: 1190
diff changeset
3974 }
7b8765c10abb New command: /source
Mikael Berthe <mikael@lilotux.net>
parents: 1190
diff changeset
3975
336
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
3976 static void do_connect(char *arg)
298
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 290
diff changeset
3977 {
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
3978 xmpp_connect();
298
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 290
diff changeset
3979 }
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 290
diff changeset
3980
336
eb994ee40029 Make some functions static
Mikael Berthe <mikael@lilotux.net>
parents: 330
diff changeset
3981 static void do_disconnect(char *arg)
298
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 290
diff changeset
3982 {
1598
a087125d8fc8 Replace libjabber with loudmouth
franky
parents: 1592
diff changeset
3983 xmpp_disconnect();
298
35cda94e570d Add /connect and /disconnect commands
Mikael Berthe <mikael@lilotux.net>
parents: 290
diff changeset
3984 }
576
8b3db0b555a1 Add Vim modelines
Mikael Berthe <mikael@lilotux.net>
parents: 575
diff changeset
3985
868
cefdaeb42e67 Add online /help command
Mikael Berthe <mikael@lilotux.net>
parents: 867
diff changeset
3986 static void do_help(char *arg)
cefdaeb42e67 Add online /help command
Mikael Berthe <mikael@lilotux.net>
parents: 867
diff changeset
3987 {
cefdaeb42e67 Add online /help command
Mikael Berthe <mikael@lilotux.net>
parents: 867
diff changeset
3988 help_process(arg);
cefdaeb42e67 Add online /help command
Mikael Berthe <mikael@lilotux.net>
parents: 867
diff changeset
3989 }
cefdaeb42e67 Add online /help command
Mikael Berthe <mikael@lilotux.net>
parents: 867
diff changeset
3990
1518
63dc211a4c1a New command: /echo (display a message in the log window)
Mikael Berthe <mikael@lilotux.net>
parents: 1508
diff changeset
3991 static void do_echo(char *arg)
63dc211a4c1a New command: /echo (display a message in the log window)
Mikael Berthe <mikael@lilotux.net>
parents: 1508
diff changeset
3992 {
63dc211a4c1a New command: /echo (display a message in the log window)
Mikael Berthe <mikael@lilotux.net>
parents: 1508
diff changeset
3993 if (arg)
63dc211a4c1a New command: /echo (display a message in the log window)
Mikael Berthe <mikael@lilotux.net>
parents: 1508
diff changeset
3994 scr_print_logwindow(arg);
63dc211a4c1a New command: /echo (display a message in the log window)
Mikael Berthe <mikael@lilotux.net>
parents: 1508
diff changeset
3995 }
63dc211a4c1a New command: /echo (display a message in the log window)
Mikael Berthe <mikael@lilotux.net>
parents: 1508
diff changeset
3996
1811
e6d355e50d7a Update Vim modelines
Mikael Berthe <mikael@lilotux.net>
parents: 1780
diff changeset
3997 /* vim: set expandtab cindent cinoptions=>2\:2(0 sw=2 ts=2: For Vim users... */