author | Myhailo Danylenko <isbear@ukrpost.net> |
Fri, 04 Mar 2016 15:57:04 +0200 | |
changeset 91 | 51d326d5cb92 |
parent 87 | 78238d26911a |
permissions | -rw-r--r-- |
64 | 1 |
# HG changeset patch |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
2 |
# Parent 7a77fde8f7eea66ad121440646e1ffb63ad82749 |
74 | 3 |
[work-in-progress] Unified command option parsing |
4 |
||
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
5 |
* complete change of commands.h interface |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6 |
- uses different symbols to make compatibility layer possible |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
7 |
* completion system is broken now |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
8 |
* usable commands: |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
9 |
- roster |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
10 |
- color |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
11 |
- status/status_to |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
12 |
- add/del |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
13 |
- group |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
14 |
- say/msay/say_to |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
15 |
- buffer |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
16 |
- clear |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
17 |
- info |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
18 |
* it does compile, but have not tested at all |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
19 |
* privatized say_cmd() |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
20 |
* dropped cmd_setstatus() |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
21 |
* process_line() still expects line to be in local encoding, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
22 |
while cmd_execute() expects utf8 and rw |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
23 |
* process_line() can return error values, different from 255 |
74 | 24 |
|
25 |
** PREVIOUS ACHIEVEMENTS ** |
|
64 | 26 |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
27 |
* function interface changes: |
66 | 28 |
* buddy_search() now expects argument in utf8 |
68
c2334fb31211
[cmdopts] Convert /status and /status_to
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
29 |
* cmd_setstatus() now expects separate status and message arguments |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
30 |
* say_cmd()'s second argument is now of new type msgtype_t |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
31 |
* scr_multi* now store multiline in utf8 |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
32 |
* /del: |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
33 |
* allows specifying jid, as /add does |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
34 |
* -n(--dryrun) switch for debugging purposes |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
35 |
* /rename: |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
36 |
* -r(--reset) instead of '-' |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
37 |
* -j(--jid), -g(--group), -n(--name) |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
38 |
* /move: |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
39 |
* -j(--jid), -n(--name) |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
40 |
* misc: |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
41 |
* fix help for /buffer date |
66 | 42 |
|
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
43 |
diff -r 7a77fde8f7ee mcabber/doc/HOWTO_commands.mdwn |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
44 |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
45 |
+++ b/mcabber/doc/HOWTO_commands.mdwn Thu Aug 22 00:44:41 2013 +0300 |
82
06d4a9185902
[cmdopts] Fix documentation errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
81
diff
changeset
|
46 |
@@ -0,0 +1,977 @@ |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
47 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
48 |
+**New commands interface for MCabber** |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
49 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
50 |
+[[!toc levels=2]] |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
51 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
52 |
+# Overview |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
53 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
54 |
+New command interface was designed with next goals in mind: |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
55 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
56 |
+ * Share as much argument checking code as possible. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
57 |
+ * Remove cumbersome parsing code from commands. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
58 |
+ * Encourage adding options and switches to commands. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
59 |
+ * Use the same rules, when handling arguments everywhere. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
60 |
+ * Integrate and improve completion system. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
61 |
+ * Add common generic stuff, like '--help'. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
62 |
+ * Try to still be lightweight. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
63 |
+ * Try to still be readable. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
64 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
65 |
+It is built around static structure, "command description". User can add or |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
66 |
+remove these structures to list of commands. *FIXME* more |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
67 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
68 |
+## Command description struct, 'cmdopts_t' |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
69 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
70 |
+[[!format c """// -------------------------------------------------------------- |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
71 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
72 |
+typedef struct cmdopts_struct cmdopts_t; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
73 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
74 |
+typedef enum { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
75 |
+ cmd_default = 0x0000, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
76 |
+ cmd_safe = 0x0001, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
77 |
+} cmd_flags_t; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
78 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
79 |
+struct cmdopts_struct { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
80 |
+ const char *name; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
81 |
+ const cmd_flags_t flags; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
82 |
+ const cmd_checker_t check; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
83 |
+ const cmd_handler_t handle; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
84 |
+ const cmdopt_t *opts; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
85 |
+ const cmdarg_t *args; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
86 |
+ const cmdopts_t *cmds; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
87 |
+ const gpointer userdata; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
88 |
+ size_t valno; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
89 |
+}; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
90 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
91 |
+// -------------------------------------------------------------- """ ]] |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
92 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
93 |
+This struct describes command as a whole and links to argument descriptions. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
94 |
+This struct is also used to describe individual subcommands, as they are quite |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
95 |
+similar to normal command, because they can have their own options, arguments |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
96 |
+and subcommands. The fields of this struct: |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
97 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
98 |
+ * 'name' - name of the command or subcommand. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
99 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
100 |
+ * 'flags' - currently there's only one flag: |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
101 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
102 |
+ + 'cmd_safe' - command is safe to execute in main mcabberrc during |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
103 |
+ initialization. Have no meaning for subcommands. |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
104 |
+ + 'cmd_default' - default value of no flags enabled. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
105 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
106 |
+ * 'check' - execution environment checker for command. This callback is used |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
107 |
+ to do general checks before even parsing command line. You can write your |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
108 |
+ own checker or use standard ones, for example - 'cmd_check_online', that |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
109 |
+ checks, if you are currently online. |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
110 |
+ |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
111 |
+ * 'handle' - command function. It is executed only if command line was |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
112 |
+ successfully parsed and argument values passed the type checking. Unused in |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
113 |
+ subcommands. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
114 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
115 |
+ * 'opts' - pointer to the array of 'cmdopt_t' structs, describing command-line |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
116 |
+ options ("-f bar") and switches ("-x"), that this command accepts. Array |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
117 |
+ must end with option, that have 0 as short option character. |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
118 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
119 |
+ * 'args' - similarly, pointer to the array of 'cmdarg_t' structs, that describe |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
120 |
+ command-line positional arguments (in order). Array must end with argument, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
121 |
+ that have NULL name. |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
122 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
123 |
+ * 'cmds' - pointer to the array of subcommands of this command (or subcommand). |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
124 |
+ How parser switches to subcommands we will describe later. Array must end |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
125 |
+ with subcommand, that have NULL name. |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
126 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
127 |
+ * 'userdata' - arbitrary pointer, where you can put some data, that should |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
128 |
+ accompany this command or subcommand. Unused by parser. |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
129 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
130 |
+ * 'valno' - this is internal value, that is initialized at command definition |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
131 |
+ time, you should not modify it. Currently unused in subcommands. |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
132 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
133 |
+## Command function, 'cmd_handler_t' |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
134 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
135 |
+[[!format c """// -------------------------------------------------------------- |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
136 |
+ |
82
06d4a9185902
[cmdopts] Fix documentation errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
81
diff
changeset
|
137 |
+typedef gchar *(*cmd_handler_t) (const cmdopts_t *command, |
06d4a9185902
[cmdopts] Fix documentation errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
81
diff
changeset
|
138 |
+ cmdarg_value_t *values); |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
139 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
140 |
+// -------------------------------------------------------------- """ ]] |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
141 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
142 |
+Command function is passed it's command definition struct (mainly to give it |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
143 |
+access to userdata) and dynamically allocated array of parsed argument values. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
144 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
145 |
+It should return NULL in case all went smoothly, or dynamically allocated error |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
146 |
+string, that will be g_free()'d after displaying. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
147 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
148 |
+So, as you can see, command definition should give parser info on what can |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
149 |
+appear in command line and how to map all these options and arguments to array |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
150 |
+of values. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
151 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
152 |
+## Option description struct, 'cmdopt_t' |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
153 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
154 |
+[[!format c """// -------------------------------------------------------------- |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
155 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
156 |
+typedef struct { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
157 |
+ const char stortopt; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
158 |
+ const char *longopt; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
159 |
+ cmdarg_t arg; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
160 |
+} cmdopt_t; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
161 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
162 |
+// -------------------------------------------------------------- """ ]] |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
163 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
164 |
+This struct just adds short option character and long option name to generic |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
165 |
+argument struct, that we'll look at right now. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
166 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
167 |
+## Argument description struct, 'cmdarg_t' |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
168 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
169 |
+[[!format c """// -------------------------------------------------------------- |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
170 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
171 |
+typedef struct cmdarg_struct cmdarg_t; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
172 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
173 |
+typedef enum { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
174 |
+ cmdarg_default = 0x0000, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
175 |
+ cmdarg_catchall = 0x0001, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
176 |
+ cmdarg_plain = 0x0002, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
177 |
+ cmdarg_check = 0x0004, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
178 |
+ cmdarg_required = 0x0008, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
179 |
+ cmdarg_subcmd = 0x0010, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
180 |
+ cmdarg_switch = 0x0020, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
181 |
+ cmdarg_eol = 0x0003, // catchall + plain |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
182 |
+ cmdarg_chreq = 0x000C, // check + required |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
183 |
+ cmdarg_special = 0x0030, // subcmd + switch |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
184 |
+ cmdarg_trigger = 0x0024, // switch + check |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
185 |
+} cmdarg_flags_t; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
186 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
187 |
+struct cmdarg_struct { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
188 |
+ const char *name; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
189 |
+ const guint pos; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
190 |
+ const cmdarg_flags_t flags; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
191 |
+ const char *defval; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
192 |
+ const cmdarg_type *type; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
193 |
+ gconstpointer chkdata; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
194 |
+ gconstpointer userdata; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
195 |
+}; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
196 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
197 |
+// -------------------------------------------------------------- """ ]] |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
198 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
199 |
+This struct stores information about mapping between command-line entity |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
200 |
+(switch, option, argument, subcommand) and element in 'values' array. First, |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
201 |
+let's briefly describe fields, and then walk through their use in different |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
202 |
+entities. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
203 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
204 |
+Fields: |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
205 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
206 |
+ * 'name' - argument name, mainly used for help (not implemented yet) and error |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
207 |
+ messages. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
208 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
209 |
+ * 'pos' - this is the index in 'values' array, where argument value should be |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
210 |
+ stored. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
211 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
212 |
+ * 'flags' - various tweaks to parsing process: |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
213 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
214 |
+ + 'catchall' - argument value will catch everything, remaining on command |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
215 |
+ line, even if unescaped spaces will appear in it. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
216 |
+ + 'plain' - do not treat backslashes ('\') and quotes ('"') as escaping |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
217 |
+ characters. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
218 |
+ + 'check' - call argument value checker (defined in 'type' field), even if |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
219 |
+ argument was not assigned the value during the parsing process. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
220 |
+ + 'required' - if mentioned checker will return error, with this flag set, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
221 |
+ this error will be considered fatal, and command function will not be |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
222 |
+ called. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
223 |
+ + 'subcmd' - this argument is subcommand. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
224 |
+ + 'switch' - this argument is part of option definition, and this option |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
225 |
+ have no argument (but it still needs to store switch state somewhere). |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
226 |
+ + 'eol' - shortcut for "rest of command line without modification". |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
227 |
+ + 'chreq' - shortcut for "argument must have a valid value". |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
228 |
+ + 'special' - this is special type of argument - subcommand or switch. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
229 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
230 |
+ * 'defval' - default value for argument in "unchecked" form - i.e., in the form |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
231 |
+ of string, as it appears on command line (we'll discuss type checkers and |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
232 |
+ what can they do to value later). Before parsing command line, parser will |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
233 |
+ assign this value to corresponding value structure. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
234 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
235 |
+ * 'type' - pointer to structure, describing argument type. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
236 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
237 |
+ * 'chkdata' - if type needs some additional info, it is a place to supply it. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
238 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
239 |
+ * 'userdata' - place for arbitrary info, that should accompany this argument or |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
240 |
+ option. Unused by parser. |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
241 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
242 |
+Now, let's discuss general case - option with argument or positional argument. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
243 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
244 |
+When parser encounters such argument, it checks 'catchall' and 'plain' flags and |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
245 |
+crops argument value from command line accordingly, then it assigns it to the |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
246 |
+'value.arg' field of 'cmdarg_value_t' struct in array 'values' with index, given |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
247 |
+in 'pos'. Also it marks such value as 'visited' and puts a link to argument |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
248 |
+description into value's 'src' field. More about effect of these actions later, |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
249 |
+in 'cmdarg_value_t' section. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
250 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
251 |
+However, if argument struct is a part of option description struct, and have |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
252 |
+flag 'switch' set, parser will not try to parse value. Instead it will increase |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
253 |
+the count in 'value.swc' in corresponding 'cmdarg_value_t' struct. Argument |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
254 |
+name for switches is essentially ignored, but for safety sake it is recommended |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
255 |
+to duplicate switch long option name here. Flags 'catchall' and 'plain' |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
256 |
+obviously have no effect. Flag 'check' makes switch a trigger, that flips |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
257 |
+between 'on' and 'off' for every occurence of flag on command line. Flags |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
258 |
+'required' and 'subcmd' also have no effect for obvious reasons. Default value |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
259 |
+is ignored for switches, they always start with count 0 (off). Since switch is |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
260 |
+internal type, argument type field is ignored as well. Flags and source fields |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
261 |
+of value are updated as usual. |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
262 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
263 |
+If flag 'subcmd' is set for positional argument, parser crops argument value |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
264 |
+according to flags as usual, but instead of assigning it, walks through list of |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
265 |
+subcommands in command description struct and compares obtained value to |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
266 |
+subcommand names. If it finds corresponding subcommand, it assigns pointer to |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
267 |
+subcommand description struct to 'value.cmd' field of corresponding |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
268 |
+'cmdarg_value_t' struct and updates it's source and flags. Then, instead of |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
269 |
+proceeding with parsing process, it recursively calls parser on remaining part |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
270 |
+of command line, passing subparser subcommand description. Note, that if |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
271 |
+subcommand parser will end parsing before hitting end of command line, parser |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
272 |
+will proceed with parsing arguments for main command. Default value and |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
273 |
+argument type fields are ignored for subcommands. |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
274 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
275 |
+Now let's take a look at value structure, that you'll be dealing with the most |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
276 |
+in the actual code. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
277 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
278 |
+## Argument value structure, 'cmdarg_value_t' |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
279 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
280 |
+[[!format c """// -------------------------------------------------------------- |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
281 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
282 |
+typedef struct cmdarg_value_struct cmdarg_value_t; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
283 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
284 |
+typedef enum { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
285 |
+ cmdval_default = 0x0000, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
286 |
+ cmdval_visited = 0x0100, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
287 |
+ cmdval_freeme = 0x0200, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
288 |
+} cmdval_flags_t; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
289 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
290 |
+struct cmdarg_value_struct { |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
291 |
+ const cmdarg_t *src; |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
292 |
+ cmdval_flags_t flags; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
293 |
+ union { |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
294 |
+ guint uint; |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
295 |
+ gint sint; |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
296 |
+ guint swc; |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
297 |
+ const gchar *roarg; |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
298 |
+ gchar *arg; |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
299 |
+ const cmdopts_t *cmd; |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
300 |
+ struct { |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
301 |
+ gpointer bud; |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
302 |
+ gchar *resource; |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
303 |
+ } rjid; |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
304 |
+ gpointer ptr; |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
305 |
+ } value; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
306 |
+}; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
307 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
308 |
+// -------------------------------------------------------------- """ ]] |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
309 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
310 |
+Command may happen to be called recursively - i.e., something in command may |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
311 |
+cause the event, that will cause another call to the same command, thus we |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
312 |
+cannot store actual values in command/argument definition struct, and have to |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
313 |
+allocate dynamic memory for them. This struct is designed exactly for this. |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
314 |
+Let's take a look at it's fields: |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
315 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
316 |
+ * 'src' - this points to the argument description, from which this struct is |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
317 |
+ holding value right now (note, that value can be initialized several times |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
318 |
+ during parsing process from different arguments). |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
319 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
320 |
+ * 'flags' - to hold parser and typechecker marks: |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
321 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
322 |
+ + 'visited' - parser uses this to track values, initialized from command |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
323 |
+ line as opposed to values, holding default value. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
324 |
+ + 'freeme' - used by argument type checker to tell parser, that it needs to |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
325 |
+ call value destructor callback on value. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
326 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
327 |
+ * 'value' - union, that contains various possible forms of value: |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
328 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
329 |
+ + 'uint' - generic unsigned integer. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
330 |
+ + 'sint' - generic signed integer. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
331 |
+ + 'swc' - switch occurence count. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
332 |
+ + 'roarg' - XXX read-only string - default value or like. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
333 |
+ + 'arg' - generic string value (read-write). |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
334 |
+ + 'cmd' - pointer to subcommand description struct. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
335 |
+ + 'rjid' - roster jid value - pair of roster buddy and resource string. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
336 |
+ + 'ptr' - used for anything, that does not fits into these types. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
337 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
338 |
+To better understand, how these fields are used, let's walk through parsing |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
339 |
+process. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
340 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
341 |
+## Parsing |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
342 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
343 |
+Parser starts by allocating memory for values array, and then initializing it by |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
344 |
+walking through command description, looking at options and arguments and |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
345 |
+assigning default values to corresponding entries in array. It also puts |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
346 |
+pointer to the argument description into value's 'src' field. Thus, all used in |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
347 |
+command description values will have this field initialized, even if they were |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
348 |
+not specified on command line. This comes handly later, when checking for |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
349 |
+reqired value presence. For switches parser just sets the counter to zero. |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
350 |
+Note, that parser does not descend into subcommands at this stage. It does the |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
351 |
+same procedure for subcommand, but later, when it already knows which subcommand |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
352 |
+is selected. Also note, that if several arguments have the same value index, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
353 |
+parser will use latest encountered one to initialize the value. This is used |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
354 |
+for default value in "argument clustering", that I'll show you later. |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
355 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
356 |
+Then parser calls command environment checker callback (if present), and if it |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
357 |
+returns error - terminates the process right now. Note, that subcommands can |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
358 |
+also have checkers. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
359 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
360 |
+Next parser does its job of parsing command line. Each time it extracts |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
361 |
+argument value, it into 'value.arg' field of corresponding value entry and |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
362 |
+pointer to argument description struct into 'src' field. Also it sets 'visited' |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
363 |
+flag on value. At this stage value is still just unchecked string, except for |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
364 |
+special argument types. For switch occurence count in 'value.swc' gets |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
365 |
+increased each time argument was specified. Note however, that if several |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
366 |
+switches use the same value index ("clustered switches"), counter gets reset, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
367 |
+when switches change one another in sequence - i.e. "-e -s -s -s" will count as |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
368 |
+three "-s", but "-s -s -e -s" will count as only one "-s". For subcommands |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
369 |
+parser checks for corresponding subcommand in 'cmds' list, assigns it to |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
370 |
+'value.cmd' and recursively passes the end of command line to be parsed with |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
371 |
+subcommand description. Note, that for subcommands parser does "checking on the |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
372 |
+spot" - if parsed argument value does not match any subcommand, and argument |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
373 |
+have 'required' flag set, it raises error immediately (if flag is not set, it |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
374 |
+merely assigns NULL and proceeds parsing according to current command |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
375 |
+description). |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
376 |
+ |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
377 |
+Then parser walks through array of values and performs value checking. Note, |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
378 |
+that all values, that need checking at this point should have 'src' field |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
379 |
+initialized - either set at default value assignment step, or during parsing, |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
380 |
+so, parser knows properties of value's argument. Parser only pays attention to |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
381 |
+the values, that either have 'visited' flag set (i.e. provided by user) or that |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
382 |
+have 'check' flag in argument description (useful for mandatory arguments or |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
383 |
+default values, that need convesion). If value corresponds to a switch, and |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
384 |
+argument have 'check' flag set, switch occurence count is replaced by remainder |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
385 |
+of division it by 2 (this way switch behaves like trigger). If it is a |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
386 |
+subcommand, and it have 'required' flag set, parser checks, if it have non-NULL |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
387 |
+value. If it is usual argument (option or positional), and it does have 'type', |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
388 |
+that have 'check' callback set, parser calls this checker, passing it value |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
389 |
+structure (again, value structure contains pointer to argument description, so, |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
390 |
+checker can access 'chkdata' field, supplied by user). If checker returns error |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
391 |
+string and argument have 'required' flag set, parser raises error. If flag is |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
392 |
+not set, parser just prints warning and proceeds with checking. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
393 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
394 |
+If checking was successful, parser calls command function, providing it with |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
395 |
+command description and values array. This function can also return error, but |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
396 |
+at this stage it does not change process, only causes error message to be |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
397 |
+printed. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
398 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
399 |
+And finally parser frees allocated resources - walks through values array, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
400 |
+calling argument type 'free' callback on values, that have 'freeme' flag set and |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
401 |
+then frees the array itself. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
402 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
403 |
+## Argument type, 'cmdarg_type_t' |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
404 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
405 |
+[[!format c """// -------------------------------------------------------------- |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
406 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
407 |
+typedef struct cmdarg_type_struct cmdarg_type_t; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
408 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
409 |
+typedef gchar *(*cmdarg_checker_t) (cmdarg_value_t *value); |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
410 |
+typedef void (*cmdarg_destructor_t) (cmdarg_value_t *value); |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
411 |
+// FIXME: this one is still not designed |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
412 |
+typedef void (*cmdarg_completor_t) (void); |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
413 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
414 |
+struct cmdarg_type_struct { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
415 |
+ cmdarg_checker_t check; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
416 |
+ cmdarg_destructor_t free; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
417 |
+ cmdarg_completor_t complete; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
418 |
+}; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
419 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
420 |
+// -------------------------------------------------------------- """ ]] |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
421 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
422 |
+As you can see, argument type is nothing more than a set of callbacks: |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
423 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
424 |
+ * 'check' - check parsed argument value for conformance to type rules, possibly |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
425 |
+ replace with something different, like corresponding integer value or roster |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
426 |
+ buddy pointer. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
427 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
428 |
+ * 'free' - if type checker may need to free some data afterwards, this callback |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
429 |
+ should be set to corresponding function, and each time checker really needs |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
430 |
+ value to be freed, it should set flag 'freeme' on value. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
431 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
432 |
+ * 'complete' - *FIXME* not yet designed callback, that will return list of |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
433 |
+ possible completions according to given prefix. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
434 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
435 |
+After parsing command line parser performs argument value checking, that's where |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
436 |
+it calls 'check' callbacks. Checker is given pointer to value structure, that |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
437 |
+it needs to check. Checker can modify value string (except when it is default |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
438 |
+value, but you have to supply your default values so, that they do not need |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
439 |
+modifying) or completely replace it with another string or even non-string |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
440 |
+object. If checker uses some resources (eg. allocates memory for replacement |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
441 |
+value), it can set the flag 'freeme' on value to request call to value |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
442 |
+destructor, when values array will be freed. If checker needs some additional |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
443 |
+data (eg. it is some generic checker, that needs list of valid values or other |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
444 |
+parameters), these data can be supplied in 'chkdata' field. Checker function |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
445 |
+should return NULL on success or error string, that will be g_free()'d by |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
446 |
+parser. Take note, that if argument does not have 'reqired' flag set, parser |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
447 |
+will ignore checker error, so, it is recommended to nullify invalid value before |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
448 |
+returning error (but it is not required). |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
449 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
450 |
+# Examples |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
451 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
452 |
+When writing description for a command, first thing, you have to do - is to |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
453 |
+determine, which values your command can get from user. You don't have to be |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
454 |
+shy - new interface is designed to encourage commands to be as flexible and |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
455 |
+option-rich as possible. |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
456 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
457 |
+Second - consider, which ones are to be specified as positional arguments, and |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
458 |
+which should become options or switches. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
459 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
460 |
+Next you will want to decide, which checks and restrictions should you put on |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
461 |
+values. Essentially, determine value type. |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
462 |
+ |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
463 |
+And then you can begin writing command definition. So, let's start with |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
464 |
+something simple. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
465 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
466 |
+## Single-argument no-checks command |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
467 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
468 |
+Let's look at command like /say, that have only one argument, that should be |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
469 |
+passed as is, and with no restrictions: |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
470 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
471 |
+ /ex1 message... |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
472 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
473 |
+Definition for such command will look like: |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
474 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
475 |
+[[!format c """// -------------------------------------------------------------- |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
476 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
477 |
+// command function predeclaration |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
478 |
+gchar *do_ex1 (const cmdopts_t *command, cmdarg_value_t *values); |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
479 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
480 |
+// command arguments definition |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
481 |
+cmdopts_t def_ex1 = { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
482 |
+ "ex1", // command name |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
483 |
+ cmd_default, // flags |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
484 |
+ NULL, // checker |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
485 |
+ do_ex1, // command function |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
486 |
+ NULL, // list of options - none |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
487 |
+ (cmdarg_t[2]){ // list of arguments |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
488 |
+ { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
489 |
+ "message", // argument name |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
490 |
+ 0, // value index |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
491 |
+ // flags: |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
492 |
+ // - plain: do not interpret quotes and escapes |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
493 |
+ // - catchall: do not end argument on unescaped spaces |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
494 |
+ cmdarg_plain | cmdarg_catchall, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
495 |
+ NULL, // default value |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
496 |
+ NULL, // argument type |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
497 |
+ }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
498 |
+ {NULL} // this is an argument list end marker |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
499 |
+ }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
500 |
+ NULL, // list of subcommands - none |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
501 |
+}; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
502 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
503 |
+// Command function gets shown above command description (we don't need it) and |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
504 |
+// argument value list. Returns error message or NULL. |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
505 |
+gchar *do_ex1 (const cmdopts_t *command, cmdarg_value_t *values) |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
506 |
+{ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
507 |
+ gchar *message = values[0].value.arg; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
508 |
+ // now do something with message: |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
509 |
+ // - check, if message was given at all |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
510 |
+ if (!message || !*message) |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
511 |
+ // return error, it will be printed, prepended by command name |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
512 |
+ return g_strdup("You need to specify a message!"); |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
513 |
+ // - use the value |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
514 |
+ scr_log_print (LPRINT_NORMAL, "Got the message: \"%s\".", message); |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
515 |
+ // no error occured |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
516 |
+ return NULL; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
517 |
+} |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
518 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
519 |
+... |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
520 |
+// register our command |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
521 |
+cmd_define (&def_ex1); |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
522 |
+... |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
523 |
+// remove command |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
524 |
+cmd_undef (&def_ex1); |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
525 |
+... |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
526 |
+ |
82
06d4a9185902
[cmdopts] Fix documentation errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
81
diff
changeset
|
527 |
+// -------------------------------------------------------------- """ ]] |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
528 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
529 |
+A lot of things to do to achieve a simple goal - does not look quite appealing |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
530 |
+so far. Still, let's tweak our example a bit. |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
531 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
532 |
+Remember the third step - decide, which checks should apply to our argument. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
533 |
+Now, look at our command - we check, if message is NULL or if message is empty. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
534 |
+But imagine, that user has given us a message " " - it's of no big use to us, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
535 |
+so, probably, we should also strip leading/trailing spaces before doing the |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
536 |
+check. That's where argument types come into play. We can write argument |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
537 |
+checker for that! But luckily, we already have built-in standard checker, that |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
538 |
+does exactly what we need - checks if string contains non-space characters. All |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
539 |
+we need to do - to specify '&cmdarg_type_nonspace' as argument type and remove |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
540 |
+our check inside of the command: |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
541 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
542 |
+[[!format c """// -------------------------------------------------------------- |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
543 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
544 |
+... |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
545 |
+cmdopts_t def_ex1 = { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
546 |
+ "ex1", |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
547 |
+ cmd_default, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
548 |
+ NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
549 |
+ do_ex1, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
550 |
+ NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
551 |
+ (cmdarg_t[2]){ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
552 |
+ { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
553 |
+ "message", |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
554 |
+ 0, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
555 |
+ // flags: |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
556 |
+ // - plain: do not interpret quotes and escapes |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
557 |
+ // - catchall: do not end argument on unescaped spaces |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
558 |
+ // - check: always invoke checker, even if user omitted the argument |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
559 |
+ // - required: terminate processing, if checker returns error |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
560 |
+ // a lot of flags, but we can use shortcuts: |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
561 |
+ // - eol = plain + catchall: get everything to the end of line as is |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
562 |
+ // - chreq = check + required: argument needs to have a valid value |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
563 |
+ cmdarg_eol | cmdarg_chreq, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
564 |
+ NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
565 |
+ // strip spaces, check if result have non-zero length |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
566 |
+ &cmdarg_type_nonspace, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
567 |
+ }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
568 |
+ {NULL} |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
569 |
+ }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
570 |
+ NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
571 |
+}; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
572 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
573 |
+gchar *do_ex1 (const cmdopts_t *command, cmdarg_value_t *values) |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
574 |
+{ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
575 |
+ scr_log_print (LPRINT_NORMAL, "Got the message: \"%s\".", |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
576 |
+ values[0].value.arg); |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
577 |
+ return NULL; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
578 |
+} |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
579 |
+... |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
580 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
581 |
+// -------------------------------------------------------------- """ ]] |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
582 |
+ |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
583 |
+Ok, that's a little bit better. Now let's move on to something more complex. |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
584 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
585 |
+## Switches |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
586 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
587 |
+Let's add switches '-s' and '-l', that will define, where to print the message |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
588 |
+to - to log or to screen. For that we will need another two value indices - one |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
589 |
+for each switch. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
590 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
591 |
+[[!format c """// -------------------------------------------------------------- |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
592 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
593 |
+... |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
594 |
+cmdopts_t def_ex1 = { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
595 |
+ "ex1", |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
596 |
+ cmd_default, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
597 |
+ NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
598 |
+ do_ex1, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
599 |
+ (cmdopt_t[3]){ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
600 |
+ { // first switch: [-s|--screen] |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
601 |
+ 's', // short option name |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
602 |
+ "screen", // long option name |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
603 |
+ { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
604 |
+ "screen", // argument name - unused |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
605 |
+ 1, // value position |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
606 |
+ // flags: |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
607 |
+ // - switch: this is switch |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
608 |
+ cmdarg_switch, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
609 |
+ NULL, // default value - unused |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
610 |
+ NULL, // type - unused |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
611 |
+ } |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
612 |
+ }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
613 |
+ // second switch: [-l|--log] |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
614 |
+ { 'l', "log", { "log", 2, cmdarg_switch, NULL, NULL } }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
615 |
+ {0} // end of list marker |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
616 |
+ }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
617 |
+ (cmdarg_t[2]){ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
618 |
+ { "message", 0, cmdarg_eol | cmdarg_chreq, NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
619 |
+ &cmdarg_type_nonspace }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
620 |
+ {NULL} |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
621 |
+ }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
622 |
+ NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
623 |
+}; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
624 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
625 |
+gchar *do_ex1 (const cmdopts_t *command, cmdarg_value_t *values) |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
626 |
+{ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
627 |
+ // default value |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
628 |
+ guint whereto = LPRINT_NORMAL; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
629 |
+ // -s is default, so, check, that it is not set before checking for -l |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
630 |
+ if (!values[1].value.swc) |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
631 |
+ if (values[2].value.swc) |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
632 |
+ whereto = LPRINT_LOG; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
633 |
+ scr_log_print (whereto, "Got the message: \"%s\".", values[0].value.arg); |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
634 |
+ return NULL; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
635 |
+} |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
636 |
+... |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
637 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
638 |
+// -------------------------------------------------------------- """ ]] |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
639 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
640 |
+Ok, that works, but what if user have aliases, and wants last specified option |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
641 |
+to override the value? Currently, if -s was once specified, -l will not have any |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
642 |
+effect, regardless of count or position in command line. Not that good. Let's |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
643 |
+use the trick, that I call "argument clustering". We'll specify the same value |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
644 |
+index for both switches. Since 'value' struct have the pointer to the argument, |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
645 |
+it was initialized from last time, we can recognize, which switch was used last. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
646 |
+By default this pointer points to the last argument with this index in command |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
647 |
+definition - we can use that to specify default value. Now, to identify |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
648 |
+switches we can use argument names, but 'argument' struct contains userdata |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
649 |
+field, where we can put our LPRINT_* constants and just use it directly. So, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
650 |
+with clustered switches, we will have: |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
651 |
+ |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
652 |
+[[!format c """// -------------------------------------------------------------- |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
653 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
654 |
+... |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
655 |
+cmdopts_t def_ex1 = { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
656 |
+ "ex1", |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
657 |
+ cmd_default, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
658 |
+ NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
659 |
+ do_ex1, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
660 |
+ (cmdopt_t[3]){ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
661 |
+ // Set both argument indices to 1, specify our constants in userdata |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
662 |
+ // field. Screen is default value, thus, it goes last. |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
663 |
+ { 'l', "log", { "log", 1, cmdarg_switch, NULL, NULL, NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
664 |
+ (gpointer)LPRINT_LOG } }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
665 |
+ { 's', "screen", { "screen", 1, cmdarg_switch, NULL, NULL, NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
666 |
+ (gpointer)LPRINT_NORMAL } }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
667 |
+ {0} |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
668 |
+ }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
669 |
+ (cmdarg_t[2]){ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
670 |
+ { "message", 0, cmdarg_eol | cmdarg_chreq, NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
671 |
+ &cmdarg_type_nonspace }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
672 |
+ {NULL} |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
673 |
+ }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
674 |
+ NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
675 |
+}; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
676 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
677 |
+gchar *do_ex1 (const cmdopts_t *command, cmdarg_value_t *values) |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
678 |
+{ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
679 |
+ scr_log_print ((guint)values[1].src -> userdata, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
680 |
+ "Got the message: \"%s\".", values[0].value.arg); |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
681 |
+ return NULL; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
682 |
+} |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
683 |
+... |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
684 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
685 |
+// -------------------------------------------------------------- """ ]] |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
686 |
+ |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
687 |
+That's much better. This trick may be quite useful not only with switches, but |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
688 |
+also with options, sometimes even clustering options with arguments can be |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
689 |
+handy. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
690 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
691 |
+## Options |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
692 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
693 |
+Options are not much different from normal arguments, except there you'll see |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
694 |
+'check' and 'required' mostly only in combination with default value - otherwise |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
695 |
+it defeats the purpose - to be optional. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
696 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
697 |
+[[!format c """// -------------------------------------------------------------- |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
698 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
699 |
+// TODO: |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
700 |
+// example (not really used as of now - were too complex to deal using old |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
701 |
+// interface). |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
702 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
703 |
+// -------------------------------------------------------------- """ ]] |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
704 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
705 |
+## Subcommands |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
706 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
707 |
+Now, let's discuss another internal argument type - subcommand. Since |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
708 |
+subcommands are quite common in mcabber, and since they have quite big impact on |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
709 |
+parsing process, they were made a part of parser. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
710 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
711 |
+Currently, only positional arguments can be subcommands. You can have options or |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
712 |
+other arguments precede them, though in practice there's no examples of that so |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
713 |
+far. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
714 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
715 |
+So, to indicate, that argument is a subcommand, you just add flag 'subcmd'. |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
716 |
+When parser will encounter such argument, it will look up command structure with |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
717 |
+specified name in the list 'cmds' of command definition and proceed parsing, |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
718 |
+using that command definition instead of main one. A good example of command |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
719 |
+with several completely different subcommands would be '/color', so, let's look: |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
720 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
721 |
+[[!format c """// -------------------------------------------------------------- |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
722 |
+ |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
723 |
+static gchar *do_color (const cmdopts_t *command, cmdarg_value_t *values); |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
724 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
725 |
+// We will put these values in subcommand definition 'userdata' fields |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
726 |
+// to simplify the task of determining, which subcommand was actually selected. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
727 |
+typedef enum { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
728 |
+ scmd_color_roster, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
729 |
+ scmd_color_mucnick, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
730 |
+ scmd_color_muc, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
731 |
+} scmd_color_t; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
732 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
733 |
+// We define value inedxes as enum to make value access expressions |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
734 |
+// self-explanatory. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
735 |
+typedef enum { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
736 |
+ pos_color_scmd = 0, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
737 |
+ pos_color_roster_status = 1, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
738 |
+ pos_color_roster_jid = 2, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
739 |
+ pos_color_roster_color = 3, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
740 |
+ pos_color_muc_room = 1, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
741 |
+ pos_color_muc_mode = 2, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
742 |
+ pos_color_nick_nick = 1, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
743 |
+ pos_color_nick_color = 2, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
744 |
+} pos_color_t; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
745 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
746 |
+// This is a helper struct for cmdarg_type_string2enum checker. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
747 |
+// The checker will compare value to strings and replace value.arg |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
748 |
+// with corresponding value.uint. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
749 |
+static const string2enum_t s2e_color_muc[] = { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
750 |
+ { "on", MC_ALL }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
751 |
+ { "off", MC_OFF }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
752 |
+ { "preset", MC_PRESET }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
753 |
+ { "-", MC_REMOVE }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
754 |
+ { NULL, 0 }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
755 |
+}; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
756 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
757 |
+static cmdopts_t def_color = { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
758 |
+ "color", |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
759 |
+ // This command is allowed in main config file during initialization, thus |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
760 |
+ // it have the 'safe' flag. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
761 |
+ cmd_safe, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
762 |
+ NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
763 |
+ do_color, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
764 |
+ // no options |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
765 |
+ NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
766 |
+ // only one argument - subcommand |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
767 |
+ (cmdarg_t[2]){{ "subcommand", pos_color_scmd, cmdarg_subcmd | cmdarg_chreq, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
768 |
+ NULL, NULL },{NULL}}, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
769 |
+ // three subcommands |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
770 |
+ (cmdopts_t[4]){ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
771 |
+ // First subcommand - 'roster' with three arguments. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
772 |
+ {"roster", cmd_default, NULL, NULL, NULL, (cmdarg_t[4]){ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
773 |
+ { "statusmask|clear", pos_color_roster_status, cmdarg_chreq, NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
774 |
+ &cmdarg_type_color_statusmask, (gpointer)"ofdna_?" }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
775 |
+ { "jidmask", pos_color_roster_jid, cmdarg_check, NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
776 |
+ &cmdarg_type_bjidmask }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
777 |
+ { "color|-", pos_color_roster_color, cmdarg_check, NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
778 |
+ &cmdarg_type_color }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
779 |
+ {NULL} |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
780 |
+ }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
781 |
+ // Subcommand can have its own subcommands, but in this case we |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
782 |
+ // don't have them. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
783 |
+ NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
784 |
+ // We use userdata to determine, which subcommand was selected. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
785 |
+ (gpointer)scmd_color_roster}, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
786 |
+ // Second subcommand - 'muc' with two arguments. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
787 |
+ {"muc", cmd_default, NULL, NULL, NULL, (cmdarg_t[3]){ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
788 |
+ { "roomjid", pos_color_muc_room, cmdarg_chreq, NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
789 |
+ &cmdarg_type_color_roomjid }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
790 |
+ { "on|off|preset|-", pos_color_muc_mode, cmdarg_chreq, "on", |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
791 |
+ &cmdarg_type_string2enum, (gpointer)s2e_color_muc }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
792 |
+ {NULL} |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
793 |
+ }, NULL, (gpointer)scmd_color_muc}, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
794 |
+ // Third subcommand - 'mucnick' also with two arguments. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
795 |
+ {"mucnick", cmd_default, NULL, NULL, NULL, (cmdarg_t[3]){ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
796 |
+ { "nick", pos_color_nick_nick, cmdarg_chreq, NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
797 |
+ &cmdarg_type_nick }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
798 |
+ { "color|-", pos_color_nick_color, cmdarg_chreq, NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
799 |
+ &cmdarg_type_color }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
800 |
+ {NULL} |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
801 |
+ }, NULL, (gpointer)scmd_color_mucnick}, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
802 |
+ {NULL} |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
803 |
+ }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
804 |
+}; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
805 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
806 |
+static gchar *do_color (const cmdopts_t *options, cmdarg_value_t *values) |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
807 |
+{ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
808 |
+ scmd_color_t subcmd = |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
809 |
+ (scmd_color_t) (values[pos_color_scmd].value.cmd -> userdata); |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
810 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
811 |
+ if (subcmd == scmd_color_roster) { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
812 |
+ const gchar *status = values[pos_color_roster_status].value.arg; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
813 |
+ const gchar *wildcard = values[pos_color_roster_jid].value.arg; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
814 |
+ const gchar *color = values[pos_color_roster_color].value.arg; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
815 |
+ if (!strcmp(status, "clear")) { // Not a color command, clear all |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
816 |
+ scr_roster_clear_color(); |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
817 |
+ update_roster = TRUE; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
818 |
+ } else { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
819 |
+ // Unfortunately, due to "clear" case not taking any arguments, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
820 |
+ // we cannot check for argument presence using 'required' flag. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
821 |
+ if ((!wildcard) || (!color)) { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
822 |
+ return g_strdup ("Missing argument."); |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
823 |
+ } else { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
824 |
+ update_roster = scr_roster_color(status, wildcard, color) || |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
825 |
+ update_roster; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
826 |
+ } |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
827 |
+ } |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
828 |
+ } else if (subcmd == scmd_color_muc) { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
829 |
+ scr_muc_color ( values[pos_color_muc_room].value.arg, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
830 |
+ values[pos_color_muc_mode].value.uint ); |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
831 |
+ } else { // scmd_color_mucnick |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
832 |
+ scr_muc_nick_color( values[pos_color_nick_nick].value.arg, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
833 |
+ values[pos_color_nick_color].value.arg ); |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
834 |
+ } |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
835 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
836 |
+ return NULL; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
837 |
+} |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
838 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
839 |
+// -------------------------------------------------------------- """ ]] |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
840 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
841 |
+Here you also see a lot of new types: |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
842 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
843 |
+ * 'color_statusmask' - specific to "/color" command wrapper over generic type |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
844 |
+ 'charset'. This type allows only word "clear" or string, composed of |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
845 |
+ specified in 'chkdata' field characters, in this case tese are, of course, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
846 |
+ "ofdna_?". |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
847 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
848 |
+ * 'bjidmask' - this type only provides completion, otherwise it is the same as |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
849 |
+ 'nonspace'. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
850 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
851 |
+ * 'color' - checks value to be a valid name of mcabber color. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
852 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
853 |
+ * 'color_roomjid' - specific to "/color" command wrapper over type 'bjid'. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
854 |
+ Type allows the string "*" or a valid bare jid. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
855 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
856 |
+ * 'string2enum' - generic type, that converts string into unsigned integer |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
857 |
+ value according to given in 'chkdata' dictionary of name-value pairs. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
858 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
859 |
+ * 'nick' - as 'bjidmask' - only provides completion. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
860 |
+ |
82
06d4a9185902
[cmdopts] Fix documentation errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
81
diff
changeset
|
861 |
+Note, that although here I used value indexes 1 and 2 several times for |
06d4a9185902
[cmdopts] Fix documentation errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
81
diff
changeset
|
862 |
+different arguments, it is not "clustering", as they are used in different |
06d4a9185902
[cmdopts] Fix documentation errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
81
diff
changeset
|
863 |
+subcommands. |
06d4a9185902
[cmdopts] Fix documentation errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
81
diff
changeset
|
864 |
+ |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
865 |
+## Argument types |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
866 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
867 |
+Let's take a look at simple checker, that we've encountered first - 'nonspace': |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
868 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
869 |
+[[!format c """// -------------------------------------------------------------- |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
870 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
871 |
+// Checker gets parsed value string in 'value.arg', argument description in |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
872 |
+// 'src' and returns error string or NULL. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
873 |
+gchar *cmdarg_check_nonspace (cmdarg_value_t *arg) |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
874 |
+{ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
875 |
+ // current value |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
876 |
+ gchar *val = arg -> value.arg; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
877 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
878 |
+ // was value given at all? |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
879 |
+ if (val) { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
880 |
+ // skip leading spaces |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
881 |
+ while (isspace (*val)) |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
882 |
+ val ++; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
883 |
+ if (*val) { // valid arg - string contains non-space symbols |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
884 |
+ // reassing value in case of stripped leading space |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
885 |
+ arg -> value.arg = val; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
886 |
+ // strip trailing space |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
887 |
+ while (*val) |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
888 |
+ val ++; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
889 |
+ while (isspace (*val)) |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
890 |
+ val --; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
891 |
+ val ++; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
892 |
+ // Note: this needs write access, so, default value cannot contain |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
893 |
+ // trailing spaces! |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
894 |
+ if (*val) |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
895 |
+ *val = '\0'; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
896 |
+ // no error, argument is valid |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
897 |
+ return NULL; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
898 |
+ } |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
899 |
+ } |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
900 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
901 |
+ // Returned error may be ignored by parser, if 'required' flag is not set on |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
902 |
+ // argument, so, we nullify argument to ensure, that invalid value will not |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
903 |
+ // be passed to command. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
904 |
+ arg -> value.arg = NULL; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
905 |
+ return g_strdup ("Non-space value required."); |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
906 |
+} |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
907 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
908 |
+// type definition |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
909 |
+const cmdarg_type_t cmdarg_type_nonspace = { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
910 |
+ // our checker |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
911 |
+ cmdarg_check_nonspace, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
912 |
+ // freeing callabck - no need for that |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
913 |
+ NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
914 |
+ // completion callabck - none, we can't know, what string may contain |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
915 |
+ NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
916 |
+}; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
917 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
918 |
+// -------------------------------------------------------------- """ ]] |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
919 |
+ |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
920 |
+Quite simple, I hope. Now, let's look at more complex type - 'fjid': |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
921 |
+ |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
922 |
+[[!format c """// -------------------------------------------------------------- |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
923 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
924 |
+// This checker checks syntax of fjid and expands "current-buddy" expressions |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
925 |
+// "." and "./resource". |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
926 |
+gchar *cmdarg_check_fjid (cmdarg_value_t *arg) |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
927 |
+{ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
928 |
+ gchar *error = NULL; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
929 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
930 |
+ // We're using nonspace checker to check our value - empty string is not a |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
931 |
+ // valid jid. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
932 |
+ if (!(error = cmdarg_check_nonspace(arg))) { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
933 |
+ // Now, we're sure, that we have non-space string |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
934 |
+ const char *fjid = arg -> value.arg; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
935 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
936 |
+ // We check for "current-buddy" expression. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
937 |
+ if (fjid[0] == '.' && |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
938 |
+ (fjid[1] == JID_RESOURCE_SEPARATOR || fjid[1] == '\0')) { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
939 |
+ const char *jid; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
940 |
+ if (!current_buddy) { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
941 |
+ error = g_strdup_printf ("No buddy selected."); |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
942 |
+ } else if (!(jid = buddy_getjid(BUDDATA(current_buddy)))) { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
943 |
+ error = g_strdup_printf ("Current buddy have no jid."); |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
944 |
+ } else if (fjid[1] == '\0') { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
945 |
+ arg -> value.roarg = jid; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
946 |
+ } else { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
947 |
+ // We allocate value - we will need to free it, so, we as well set |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
948 |
+ // 'freeme' flag. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
949 |
+ arg -> value.arg = g_strdup_printf ("%s%c%s", |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
950 |
+ jid, JID_RESOURCE_SEPARATOR, fjid + 2); |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
951 |
+ arg -> flags |= cmdval_freeme; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
952 |
+ } |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
953 |
+ // this is jid - check, that it is valid |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
954 |
+ } else if (check_jid_syntax(fjid)) { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
955 |
+ error = g_strdup_printf ("Jid <%s> is invalid.", fjid); |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
956 |
+ } |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
957 |
+ } |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
958 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
959 |
+ // As before, nullify value in case of error |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
960 |
+ if (error) |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
961 |
+ arg -> value.arg = NULL; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
962 |
+ return error; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
963 |
+} |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
964 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
965 |
+// Free callback will be called only if freeme flag is set, so, we can |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
966 |
+// just g_free() value without any checks. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
967 |
+void cmdarg_free_gfree (cmdarg_value_t *arg) |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
968 |
+{ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
969 |
+ g_free (arg -> value.arg); |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
970 |
+} |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
971 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
972 |
+const cmdarg_type_t cmdarg_type_fjid = { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
973 |
+ // checker |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
974 |
+ cmdarg_check_fjid, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
975 |
+ // freer |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
976 |
+ cmdarg_free_gfree, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
977 |
+ // completor, while possible, is not implemented, as whole completion system is |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
978 |
+ // not yet designed. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
979 |
+ NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
980 |
+}; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
981 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
982 |
+// -------------------------------------------------------------- """ ]] |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
983 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
984 |
+If possible, you are encouraged to re-use existing checkers - for example, bjid |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
985 |
+checker uses fjid checker to expand "current-buddy" expressions and check |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
986 |
+syntax, and only strips resource afterwards: |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
987 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
988 |
+[[!format c """// -------------------------------------------------------------- |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
989 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
990 |
+gchar *cmdarg_check_bjid (cmdarg_value_t *arg) |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
991 |
+{ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
992 |
+ gchar *error = NULL; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
993 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
994 |
+ if (!(error = cmdarg_check_fjid(arg))) { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
995 |
+ gchar *res = strchr (arg -> value.arg, JID_RESOURCE_SEPARATOR); |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
996 |
+ if (res != NULL) |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
997 |
+ *res = '\0'; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
998 |
+ } |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
999 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
1000 |
+ // Error can only happen inside fjid callback, that will nullify argument |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
1001 |
+ // for us. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
1002 |
+ return error; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
1003 |
+} |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
1004 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
1005 |
+const cmdarg_type_t cmdarg_type_bjid = { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
1006 |
+ cmdarg_check_bjid, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
1007 |
+ // may need to free value - we're using fjid checker internally |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
1008 |
+ cmdarg_free_gfree, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
1009 |
+ NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
1010 |
+}; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
1011 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1012 |
+// -------------------------------------------------------------- """ ]] |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1013 |
+ |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1014 |
+So far we've only modified string in value. But checkers are not limited to |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
1015 |
+this, for example, uint checker performs atoi() on value and assigns resulting |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1016 |
+number to value.uint. Take a look at definition of cmdarg_value_t struct - |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1017 |
+value is actually a union of different types of value. If you need something |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1018 |
+different from existing - you can always allocate your own struct and use |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1019 |
+value.ptr. However, if you think, that your case is generic enough - contact |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1020 |
+mcabber developers, we'll consider adding more variants there. Maybe we'll even |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1021 |
+add your argument type to built-in types. |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
1022 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
1023 |
+<!-- vim: se ts=4 sw=4 et filetype=markdown tw=80: --> |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1024 |
diff -r 7a77fde8f7ee mcabber/doc/help/cs/hlp_buffer.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1025 |
--- a/mcabber/doc/help/cs/hlp_buffer.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1026 |
+++ b/mcabber/doc/help/cs/hlp_buffer.txt Thu Aug 22 00:44:41 2013 +0300 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1027 |
@@ -25,7 +25,7 @@ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1028 |
Přesune se o [n] řádků nahoru (výchozí: polovina obrazovky). |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1029 |
/buffer down [n] |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1030 |
Přesune se o [n] řádků dolů (výchozí: polovina obrazovky). |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1031 |
-/buffer date [datum] |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1032 |
+/buffer date datum |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1033 |
Přesune se na první řádek po datu [datum] (formát: "RRRR-mm-dd"). |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1034 |
/buffer % n |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1035 |
Přesune se na procentuální pozici n%. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1036 |
diff -r 7a77fde8f7ee mcabber/doc/help/cs/hlp_del.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1037 |
--- a/mcabber/doc/help/cs/hlp_del.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1038 |
+++ b/mcabber/doc/help/cs/hlp_del.txt Thu Aug 22 00:44:41 2013 +0300 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1039 |
@@ -1,4 +1,4 @@ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1040 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1041 |
- /DEL |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1042 |
+ /DEL [-n|--dryrun] [jid] |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1043 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1044 |
Smaže aktuální kontakt ze seznamu kontaktů (rosteru) a zruší povolení oznamování o stavu daného kontaktu (autorizaci) na obou stranách. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1045 |
diff -r 7a77fde8f7ee mcabber/doc/help/cs/hlp_move.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1046 |
--- a/mcabber/doc/help/cs/hlp_move.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1047 |
+++ b/mcabber/doc/help/cs/hlp_move.txt Thu Aug 22 00:44:41 2013 +0300 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1048 |
@@ -1,5 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1049 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1050 |
- /MOVE [skupina] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1051 |
+ /MOVE [-j|--jid jid] [-n|--name name] [skupina] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1052 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1053 |
Přesune aktuální kontakt do požadované skupiny. Není-li skupina zadána, přesune se kontakt do výchozí skupiny. Pokud skupina neexistuje, automaticky se založí. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1054 |
+You can select other buddy that current using options --jid and --name. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1055 |
Tip: V módu rozhovoru lze použít "/roster alternate" pro skok na přesunutý kontakt. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1056 |
diff -r 7a77fde8f7ee mcabber/doc/help/cs/hlp_rename.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1057 |
--- a/mcabber/doc/help/cs/hlp_rename.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1058 |
+++ b/mcabber/doc/help/cs/hlp_rename.txt Thu Aug 22 00:44:41 2013 +0300 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1059 |
@@ -1,4 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1060 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1061 |
- /RENAME jméno |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1062 |
+ /RENAME [-r|--reset] [-j|--jid jid] [-g|--group name] [-n|--name name] jméno |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1063 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1064 |
-Přejmenuje aktuálního uživatele nebo skupinu na 'jméno'. Je-li 'jméno' znak '-', dané jméno se odstraní ze seznamu kontaktů (rosteru) a zobrazí se 'jid'. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1065 |
+Přejmenuje aktuálního uživatele nebo skupinu na 'jméno'. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1066 |
+If --reset is specified, "newname" is ignored and name will be reset to default - jid or username. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1067 |
+Optionally you can use one of --jid, --group or --name to select object, different from current. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1068 |
diff -r 7a77fde8f7ee mcabber/doc/help/de/hlp_buffer.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1069 |
--- a/mcabber/doc/help/de/hlp_buffer.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1070 |
+++ b/mcabber/doc/help/de/hlp_buffer.txt Thu Aug 22 00:44:41 2013 +0300 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1071 |
@@ -25,7 +25,7 @@ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1072 |
Scrollt den Puffer um n Zeilen hoch. Gibt man keine Zahl an, scrollt er um einen halben Bildschirm |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1073 |
/buffer down [n] |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1074 |
Scrollt den Puffer um n Zeilen runter. Gibt man keine Zahl an, scrollt er um einen halben Bildschirm |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1075 |
-/buffer date [date] |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1076 |
+/buffer date date |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1077 |
Springe zu der ersten Zeile nach dem Datum, welches im Format "JJJJ-mm-tt" anstatt [date] angegeben werden muss |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1078 |
/buffer % n |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1079 |
Springe zur Position "n" im Chatpuffer |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1080 |
diff -r 7a77fde8f7ee mcabber/doc/help/de/hlp_del.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1081 |
--- a/mcabber/doc/help/de/hlp_del.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1082 |
+++ b/mcabber/doc/help/de/hlp_del.txt Thu Aug 22 00:44:41 2013 +0300 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1083 |
@@ -1,4 +1,4 @@ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1084 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1085 |
- /DEL |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1086 |
+ /DEL [-n|--dryrun] [jid] |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1087 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1088 |
Löscht den gerade ausgewählten Buddy vom Roster. Außerdem werden die automatischen Presence Benachrichtigungen vom/zum Buddy gestoppt. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1089 |
diff -r 7a77fde8f7ee mcabber/doc/help/de/hlp_move.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1090 |
--- a/mcabber/doc/help/de/hlp_move.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1091 |
+++ b/mcabber/doc/help/de/hlp_move.txt Thu Aug 22 00:44:41 2013 +0300 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1092 |
@@ -1,6 +1,7 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1093 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1094 |
- /MOVE [groupname] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1095 |
+ /MOVE [-j|--jid jid] [-n|--name name] [groupname] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1096 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1097 |
Verschiebt den ausgewählten Buddy zu der Gruppe "groupname". Wenn keine Gruppe angegeben wurde, wird der Buddy zur Standardgruppe verschoben. Wenn die Gruppe "groupname" nicht existiert, wird sie erst erschaffen. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1098 |
+You can select other buddy that current using options --jid and --name. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1099 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1100 |
Tipp: Wenn der Chatmodus aktiviert ist, kannst du "/roster alternate" benutzen um zu dem gerade bewegten Buddy zu springen. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1101 |
diff -r 7a77fde8f7ee mcabber/doc/help/de/hlp_rename.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1102 |
--- a/mcabber/doc/help/de/hlp_rename.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1103 |
+++ b/mcabber/doc/help/de/hlp_rename.txt Thu Aug 22 00:44:41 2013 +0300 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1104 |
@@ -1,4 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1105 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1106 |
- /RENAME name |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1107 |
+ /RENAME [-r|--reset] [-j|--jid jid] [-g|--group name] [-n|--name name] newname |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1108 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1109 |
-Setzt den Namen des gerade ausgewählten Buddys bzw. der ausgewählten Gruppe auf "name". Wenn "name" - ist, so wird der Name vom Roster entfernt (mcabber wird in diesem Falle die JID bzw. den username anzeigen) |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1110 |
+Setzt den Namen des gerade ausgewählten Buddys bzw. der ausgewählten Gruppe auf "name". |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1111 |
+If --reset is specified, "newname" is ignored and name will be reset to default - jid or username. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1112 |
+Optionally you can use one of --jid, --group or --name to select object, different from current. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1113 |
diff -r 7a77fde8f7ee mcabber/doc/help/en/hlp_buffer.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1114 |
--- a/mcabber/doc/help/en/hlp_buffer.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1115 |
+++ b/mcabber/doc/help/en/hlp_buffer.txt Thu Aug 22 00:44:41 2013 +0300 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1116 |
@@ -25,7 +25,7 @@ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1117 |
Scroll the buffer up [n] lines (default: half a screen) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1118 |
/buffer down [n] |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1119 |
Scroll the buffer down [n] lines (default: half a screen) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1120 |
-/buffer date [date] |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1121 |
+/buffer date date |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1122 |
Jump to the first line after the specified [date] in the chat buffer (date format: "YYYY-mm-dd") |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1123 |
/buffer % n |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1124 |
Jump to position %n of the buddy chat buffer |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1125 |
diff -r 7a77fde8f7ee mcabber/doc/help/en/hlp_del.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1126 |
--- a/mcabber/doc/help/en/hlp_del.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1127 |
+++ b/mcabber/doc/help/en/hlp_del.txt Thu Aug 22 00:44:41 2013 +0300 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1128 |
@@ -1,4 +1,4 @@ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1129 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1130 |
- /DEL |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1131 |
+ /DEL [-n|--dryrun] [jid] |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1132 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1133 |
-Delete the current buddy from our roster, unsubscribe from its presence notification and unsubscribe it from ours. |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1134 |
+Delete the current buddy or one, specified with [jid] from our roster, unsubscribe from its presence notification and unsubscribe it from ours. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1135 |
diff -r 7a77fde8f7ee mcabber/doc/help/en/hlp_move.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1136 |
--- a/mcabber/doc/help/en/hlp_move.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1137 |
+++ b/mcabber/doc/help/en/hlp_move.txt Thu Aug 22 00:44:41 2013 +0300 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1138 |
@@ -1,5 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1139 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1140 |
- /MOVE [groupname] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1141 |
+ /MOVE [-j|--jid jid] [-n|--name name] [groupname] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1142 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1143 |
Move the current buddy to the requested group. If no group is specified, then the buddy is moved to the default group. If the group "groupname" doesn't exist, it is created. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1144 |
+You can select other buddy that current using options --jid and --name. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1145 |
Tip: if the chatmode is enabled, you can use "/roster alternate" to jump to the moved buddy. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1146 |
diff -r 7a77fde8f7ee mcabber/doc/help/en/hlp_rename.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1147 |
--- a/mcabber/doc/help/en/hlp_rename.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1148 |
+++ b/mcabber/doc/help/en/hlp_rename.txt Thu Aug 22 00:44:41 2013 +0300 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1149 |
@@ -1,4 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1150 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1151 |
- /RENAME name |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1152 |
+ /RENAME [-r|--reset] [-j|--jid jid] [-g|--group name] [-n|--name name] newname |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1153 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1154 |
-Rename the current buddy or group to the given "name". If "name" is -, the name is removed from the roster (and mcabber will display the JID or username). |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1155 |
+Rename the current buddy or group to the given "newname". |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1156 |
+If --reset is specified, "newname" is ignored and name will be reset to default - jid or username. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1157 |
+Optionally you can use one of --jid, --group or --name to select object, different from current. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1158 |
diff -r 7a77fde8f7ee mcabber/doc/help/fr/hlp_buffer.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1159 |
--- a/mcabber/doc/help/fr/hlp_buffer.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1160 |
+++ b/mcabber/doc/help/fr/hlp_buffer.txt Thu Aug 22 00:44:41 2013 +0300 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1161 |
@@ -25,7 +25,7 @@ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1162 |
Défile vers le haut de [n] lignes (par défaut un demi écran) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1163 |
/buffer down [n] |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1164 |
Défile vers le bas de [n] lignes (par défaut un demi écran) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1165 |
-/buffer date [date] |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1166 |
+/buffer date date |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1167 |
Va à la première ligne après la [date] dans le tampon actuel (format: "aaaa-mm-jj") |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1168 |
/buffer % n |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1169 |
Va à la position n% du tampon |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1170 |
diff -r 7a77fde8f7ee mcabber/doc/help/fr/hlp_del.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1171 |
--- a/mcabber/doc/help/fr/hlp_del.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1172 |
+++ b/mcabber/doc/help/fr/hlp_del.txt Thu Aug 22 00:44:41 2013 +0300 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1173 |
@@ -1,4 +1,4 @@ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1174 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1175 |
- /DEL |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1176 |
+ /DEL [-n|--dryrun] [jid] |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1177 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1178 |
Supprime le contact sélectionné du roster, supprime notre abonnement à ses notifications de présence et supprime son abonnement aux nôtres. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1179 |
diff -r 7a77fde8f7ee mcabber/doc/help/fr/hlp_move.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1180 |
--- a/mcabber/doc/help/fr/hlp_move.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1181 |
+++ b/mcabber/doc/help/fr/hlp_move.txt Thu Aug 22 00:44:41 2013 +0300 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1182 |
@@ -1,5 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1183 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1184 |
- /MOVE [groupname] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1185 |
+ /MOVE [-j|--jid jid] [-n|--name name] [groupname] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1186 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1187 |
Déplace le contact sélectionné vers le groupe spécifié. Si aucun groupe n'est donné, le contact est déplacé vers le groupe par défaut. Si le groupe "groupname" n'existe pas, il est créé. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1188 |
+You can select other buddy that current using options --jid and --name. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1189 |
Astuce : si le mode discussion (chatmode) est activé, vous pouvez utiliser "/roster alternate" pour vous positionner sur le contact que vous venez de déplacer. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1190 |
diff -r 7a77fde8f7ee mcabber/doc/help/fr/hlp_rename.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1191 |
--- a/mcabber/doc/help/fr/hlp_rename.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1192 |
+++ b/mcabber/doc/help/fr/hlp_rename.txt Thu Aug 22 00:44:41 2013 +0300 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1193 |
@@ -1,4 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1194 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1195 |
- /RENAME nom |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1196 |
+ /RENAME [-r|--reset] [-j|--jid jid] [-g|--group name] [-n|--name name] nom |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1197 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1198 |
-Renomme le contact/groupe sélectionné avec le "nom" spécifié. Si le nom est «-», le nom est supprimé du roster (et mcabber affichera le JID ou le nom d'utilisateur). |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1199 |
+Renomme le contact/groupe sélectionné avec le "nom" spécifié. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1200 |
+If --reset is specified, "newname" is ignored and name will be reset to default - jid or username. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1201 |
+Optionally you can use one of --jid, --group or --name to select object, different from current. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1202 |
diff -r 7a77fde8f7ee mcabber/doc/help/it/hlp_buffer.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1203 |
--- a/mcabber/doc/help/it/hlp_buffer.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1204 |
+++ b/mcabber/doc/help/it/hlp_buffer.txt Thu Aug 22 00:44:41 2013 +0300 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1205 |
@@ -25,7 +25,7 @@ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1206 |
Fa scorrere indietro il buffer di [n] linee (default: metà schermo) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1207 |
/buffer down [n] |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1208 |
Fa scorrere avanti il buffer di [n] linee (default: metà schermo) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1209 |
-/buffer date [data] |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1210 |
+/buffer date data |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1211 |
Salta alla prima linea successiva alla [data] specificata nel buffer di chat (formato della data: "YYYY-mm-dd") |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1212 |
/buffer % n |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1213 |
Salta alla posizione %n del buffer di chat corrente |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1214 |
diff -r 7a77fde8f7ee mcabber/doc/help/it/hlp_del.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1215 |
--- a/mcabber/doc/help/it/hlp_del.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1216 |
+++ b/mcabber/doc/help/it/hlp_del.txt Thu Aug 22 00:44:41 2013 +0300 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1217 |
@@ -1,4 +1,4 @@ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1218 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1219 |
- /DEL |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1220 |
+ /DEL [-n|--dryrun] [jid] |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1221 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1222 |
Elimina il contatto corrente dal roster, cancellando la sottoscrizione alle reciproche notifiche della propria presenza. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1223 |
diff -r 7a77fde8f7ee mcabber/doc/help/it/hlp_move.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1224 |
--- a/mcabber/doc/help/it/hlp_move.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1225 |
+++ b/mcabber/doc/help/it/hlp_move.txt Thu Aug 22 00:44:41 2013 +0300 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1226 |
@@ -1,5 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1227 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1228 |
- /MOVE [gruppo] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1229 |
+ /MOVE [-j|--jid jid] [-n|--name name] [grouppo] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1230 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1231 |
Muove il contatto corrente nel gruppo richiesto. Se non viene specificato alcun gruppo, il contatto viene spostato nel gruppo si default. Se il gruppo "gruppo" non esiste, viene creato. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1232 |
+You can select other buddy that current using options --jid and --name. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1233 |
Trucco: se la modalità chat è abilitata, puoi usare "/roster alternate" per spostarti sul contatto appena mosso. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1234 |
diff -r 7a77fde8f7ee mcabber/doc/help/it/hlp_rename.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1235 |
--- a/mcabber/doc/help/it/hlp_rename.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1236 |
+++ b/mcabber/doc/help/it/hlp_rename.txt Thu Aug 22 00:44:41 2013 +0300 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1237 |
@@ -1,4 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1238 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1239 |
- /RENAME nome |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1240 |
+ /RENAME [-r|--reset] [-j|--jid jid] [-g|--group name] [-n|--name name] nome |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1241 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1242 |
-Rinomina il contatto od il gruppo correnti usando "nome". Se si specifica - come "nome", il nome viene rimosso dal roster, ed al suo posto verranno visulizzati il JID o lo username. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1243 |
+Rinomina il contatto od il gruppo correnti usando "nome". |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1244 |
+If --reset is specified, "newname" is ignored and name will be reset to default - jid or username. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1245 |
+Optionally you can use one of --jid, --group or --name to select object, different from current. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1246 |
diff -r 7a77fde8f7ee mcabber/doc/help/nl/hlp_buffer.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1247 |
--- a/mcabber/doc/help/nl/hlp_buffer.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1248 |
+++ b/mcabber/doc/help/nl/hlp_buffer.txt Thu Aug 22 00:44:41 2013 +0300 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1249 |
@@ -25,7 +25,7 @@ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1250 |
Scroll de buffer [n] regels omhoog (standaard: een half scherm) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1251 |
/buffer down [n] |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1252 |
Scroll de buffer [n] regels omlaag (standaard: een half scherm) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1253 |
-/buffer date [datum] |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1254 |
+/buffer date datum |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1255 |
Spring naar de eerste regel na de aangeduide [datum] in de chat buffer (datum formaat: "YYYY-mm-dd") |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1256 |
/buffer % n |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1257 |
Spring naar positie %n in de buddy chat buffer |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1258 |
diff -r 7a77fde8f7ee mcabber/doc/help/nl/hlp_del.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1259 |
--- a/mcabber/doc/help/nl/hlp_del.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1260 |
+++ b/mcabber/doc/help/nl/hlp_del.txt Thu Aug 22 00:44:41 2013 +0300 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1261 |
@@ -1,4 +1,4 @@ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1262 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1263 |
- /DEL |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1264 |
+ /DEL [-n|--dryrun] [jid] |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1265 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1266 |
Verwijder de actieve buddy uit ons roster, en zet het wederzijds toezenden van status veranderingen stop. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1267 |
diff -r 7a77fde8f7ee mcabber/doc/help/nl/hlp_move.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1268 |
--- a/mcabber/doc/help/nl/hlp_move.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1269 |
+++ b/mcabber/doc/help/nl/hlp_move.txt Thu Aug 22 00:44:41 2013 +0300 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1270 |
@@ -1,5 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1271 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1272 |
- /MOVE [groepsnaam] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1273 |
+ /MOVE [-j|--jid jid] [-n|--name name] [groepsnaam] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1274 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1275 |
Verplaats de actieve buddy naar de aangegeven groep. Indien geen groep werd gespecificeerd wordt buddy verplaatst naar de standaard groep. Indien de groep "groepsnaam" niet bestaat, wordt die eerst aangemaakt. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1276 |
+You can select other buddy that current using options --jid and --name. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1277 |
Tip: indien chatmode actief is, kun je "/roster alternate" gebruiken om direct naar de verplaatste buddy te springen. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1278 |
diff -r 7a77fde8f7ee mcabber/doc/help/nl/hlp_rename.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1279 |
--- a/mcabber/doc/help/nl/hlp_rename.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1280 |
+++ b/mcabber/doc/help/nl/hlp_rename.txt Thu Aug 22 00:44:41 2013 +0300 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1281 |
@@ -1,4 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1282 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1283 |
- /RENAME naam |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1284 |
+ /RENAME [-r|--reset] [-j|--jid jid] [-g|--group name] [-n|--name name] naam |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1285 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1286 |
-Hernoem de actieve buddy of groep in de aangegeven "naam". Indien '-' wordt gebruikt als 'naam', wordt die uit het roster verwijderd (en mcabber zal vervolgens de JID of gebruikersnaam tonen). |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1287 |
+Hernoem de actieve buddy of groep in de aangegeven "naam". |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1288 |
+If --reset is specified, "newname" is ignored and name will be reset to default - jid or username. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1289 |
+Optionally you can use one of --jid, --group or --name to select object, different from current. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1290 |
diff -r 7a77fde8f7ee mcabber/doc/help/pl/hlp_del.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1291 |
--- a/mcabber/doc/help/pl/hlp_del.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1292 |
+++ b/mcabber/doc/help/pl/hlp_del.txt Thu Aug 22 00:44:41 2013 +0300 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1293 |
@@ -1,4 +1,4 @@ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1294 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1295 |
- /DEL |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1296 |
+ /DEL [-n|--dryrun] [jid] |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1297 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1298 |
Usuwa aktualnie zaznaczoną osobę z rostera, usuwa subskrypcję powiadomienia dostępności u danej osoby oraz u nas. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1299 |
diff -r 7a77fde8f7ee mcabber/doc/help/pl/hlp_move.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1300 |
--- a/mcabber/doc/help/pl/hlp_move.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1301 |
+++ b/mcabber/doc/help/pl/hlp_move.txt Thu Aug 22 00:44:41 2013 +0300 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1302 |
@@ -1,5 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1303 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1304 |
- /MOVE [nazwa grupy] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1305 |
+ /MOVE [-j|--jid jid] [-n|--name name] [nazwa grupy] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1306 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1307 |
Przenosi aktualną osobę do grupy "nazwa grupy". Jeśli nie podano nazwy grupy, wtedy osoba jest przenoszona do grupy domyślnej. Jeśli grupa "nazwa grupy" nie istnieje, zostaje utworzona. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1308 |
+You can select other buddy that current using options --jid and --name. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1309 |
Podpowiedź: jeśli jest włączony tryb czatu, możesz użyć "/roster alternate" aby skoczyć do przeniesionej osoby. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1310 |
diff -r 7a77fde8f7ee mcabber/doc/help/pl/hlp_rename.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1311 |
--- a/mcabber/doc/help/pl/hlp_rename.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1312 |
+++ b/mcabber/doc/help/pl/hlp_rename.txt Thu Aug 22 00:44:41 2013 +0300 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1313 |
@@ -1,4 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1314 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1315 |
- /RENAME nazwa |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1316 |
+ /RENAME [-r|--reset] [-j|--jid jid] [-g|--group name] [-n|--name name] nazwa |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1317 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1318 |
-Zmienia nazwę aktualnej osoby lub grupy na "nazwa". Jeżeli jako argument polecenia zostanie podany "-" wcześniejsza nazwa zostanie usunięta z listy kontaktów (mcabber będzie wyświetlał JID lub nazwę użytkownika). |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1319 |
+Zmienia nazwę aktualnej osoby lub grupy na "nazwa". |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1320 |
+If --reset is specified, "newname" is ignored and name will be reset to default - jid or username. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1321 |
+Optionally you can use one of --jid, --group or --name to select object, different from current. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1322 |
diff -r 7a77fde8f7ee mcabber/doc/help/ru/hlp_buffer.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1323 |
--- a/mcabber/doc/help/ru/hlp_buffer.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1324 |
+++ b/mcabber/doc/help/ru/hlp_buffer.txt Thu Aug 22 00:44:41 2013 +0300 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1325 |
@@ -25,7 +25,7 @@ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1326 |
Перемещает на [n] строк вверх в буфере (истории переписки) (по умолчанию: половина экрана) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1327 |
/buffer down [n] |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1328 |
Перемещает на [n] строк вниз в буфере (истории переписки) (по умолчанию: половина экрана) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1329 |
-/buffer date [date] |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1330 |
+/buffer date date |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1331 |
Перемещает в первой строке после определенной даты [date] в буфере (истории переписки) (формат даты: "год-месяц-день", для примера "2006-01-01") |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1332 |
/buffer % n |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1333 |
Перемещает на позицию %n в текущем буфере (истории переписки) |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1334 |
diff -r 7a77fde8f7ee mcabber/doc/help/ru/hlp_del.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1335 |
--- a/mcabber/doc/help/ru/hlp_del.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1336 |
+++ b/mcabber/doc/help/ru/hlp_del.txt Thu Aug 22 00:44:41 2013 +0300 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1337 |
@@ -1,4 +1,4 @@ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1338 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1339 |
- /DEL |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1340 |
+ /DEL [-n|--dryrun] [jid] |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1341 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1342 |
-Удаляет текущего пользователя из списка контактов, отключает уведомления о его статусе и отключает уведомления пользователя о вашем статусе. |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1343 |
+Удаляет текущего пользователя (или указанного с помощью jid) из списка контактов, отключает уведомления о его статусе и отключает уведомление пользователя о вашем статусе. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1344 |
diff -r 7a77fde8f7ee mcabber/doc/help/ru/hlp_move.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1345 |
--- a/mcabber/doc/help/ru/hlp_move.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1346 |
+++ b/mcabber/doc/help/ru/hlp_move.txt Thu Aug 22 00:44:41 2013 +0300 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1347 |
@@ -1,6 +1,7 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1348 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1349 |
- /MOVE [groupname] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1350 |
+ /MOVE [-j|--jid jid] [-n|--name name] [groupname] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1351 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1352 |
Перемещает пользователя в определенную группу. Если группа не указана, пользователь перещается в группу по умолчанию (default group). Если группа "groupname" не создана, она автоматически создается. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1353 |
+С помощью параметров --jid и --name можно перемещать контакты, отличные от текущего. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1354 |
Полезно: Если включен режим чата (chatmode), Вы можете использовать "/roster alternate" для перехода к перемещенному пользователю. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1355 |
|
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1356 |
diff -r 7a77fde8f7ee mcabber/doc/help/ru/hlp_rename.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1357 |
--- a/mcabber/doc/help/ru/hlp_rename.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1358 |
+++ b/mcabber/doc/help/ru/hlp_rename.txt Thu Aug 22 00:44:41 2013 +0300 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1359 |
@@ -1,4 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1360 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1361 |
- /RENAME name |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1362 |
+ /RENAME [-r|--reset] [-j|--jid jid] [-g|--group name] [-n|--name name] newname |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1363 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1364 |
- Переименовывает текущего пользователя или группу в заданное имя "name". Если заданное имя имеет значение "-", то заданное ранее имя текущего пользователя или группы удаляется из списка контактов (mcabber будет отображать JID или имя пользователя по умолчанию). |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1365 |
+Переименовывает текущего пользователя или группу в заданное имя "newname". |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1366 |
+Если указан параметр --reset, "newname" игнорируется, а имя сбрасывается (mcabber будет отображать JID или имя пользователя по умолчанию). |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1367 |
+Для указания обьекта, отличного от текущего, можно использовать опции --jid, --group и --name. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1368 |
diff -r 7a77fde8f7ee mcabber/doc/help/uk/hlp_buffer.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1369 |
--- a/mcabber/doc/help/uk/hlp_buffer.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1370 |
+++ b/mcabber/doc/help/uk/hlp_buffer.txt Thu Aug 22 00:44:41 2013 +0300 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1371 |
@@ -25,7 +25,7 @@ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1372 |
Посунути буфер вверх на n рядків (якщо не вказано - пів екрану). |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1373 |
/buffer down [n] |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1374 |
Посунути буфер вниз на n рядків (якщо не вказано - пів екрану). |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1375 |
-/buffer date [дата] |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1376 |
+/buffer date дата |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1377 |
Перейти до першого повідомлення після дати (дата вигляду РРРР-ММ-ДД). |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1378 |
/buffer % процент |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1379 |
Перейти до вказаної у процентах позиції. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1380 |
diff -r 7a77fde8f7ee mcabber/doc/help/uk/hlp_del.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1381 |
--- a/mcabber/doc/help/uk/hlp_del.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1382 |
+++ b/mcabber/doc/help/uk/hlp_del.txt Thu Aug 22 00:44:41 2013 +0300 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1383 |
@@ -1,4 +1,4 @@ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1384 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1385 |
- /DEL |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1386 |
+ /DEL [-n|--dryrun] [jid] |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1387 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1388 |
-Потерти поточний контакт зі списку. На додачу відписатися від його повідомлень про статус і відписати його від ваших. |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
1389 |
+Потерти поточний контакт (або контакт, що має вказаний jid) зі списку. Також відписатися від його сповіщень про статус і відписати його від ваших. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1390 |
diff -r 7a77fde8f7ee mcabber/doc/help/uk/hlp_move.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1391 |
--- a/mcabber/doc/help/uk/hlp_move.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1392 |
+++ b/mcabber/doc/help/uk/hlp_move.txt Thu Aug 22 00:44:41 2013 +0300 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1393 |
@@ -1,5 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1394 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1395 |
- /MOVE [група] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1396 |
+ /MOVE [-j|--jid jid] [-n|--name ім’я] [група] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1397 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1398 |
-Переносить поточний контакт до вказаної групи. Якщо групу не вказати контакт опиниться у головній групі. Якщо група не існує, її буде створено. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1399 |
+Переносить поточний контакт до вказаної групи. Якщо групу не вказати контакт опиниться у головній групі. Якщо групи не існує, її буде створено. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1400 |
+За допомогою опцій --jid та --name можна перемістити контакт, відмінний від поточного. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1401 |
Примітка: в режимі розмови можна використати "/roster alternate", щоб перейти до нового місця контакту контакту. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1402 |
diff -r 7a77fde8f7ee mcabber/doc/help/uk/hlp_rename.txt |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1403 |
--- a/mcabber/doc/help/uk/hlp_rename.txt Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1404 |
+++ b/mcabber/doc/help/uk/hlp_rename.txt Thu Aug 22 00:44:41 2013 +0300 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1405 |
@@ -1,4 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1406 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1407 |
- /RENAME ім'я |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1408 |
+ /RENAME [-r|--reset] [-j|--jid jid] [-g|--group ім’я] [-n|--name ім’я] нове ім’я |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1409 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1410 |
Змінює прізвисько поточного контакту або назву групи. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1411 |
+За допомогою параметра --reset можна повернути контакту типову назву. При цьому нове ім’я (якщо вказане) ігнорується. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
1412 |
+Опції --jid, --group та --name дозволяють перейменовувати об’єкти, відмінні від поточного. |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1413 |
diff -r 7a77fde8f7ee mcabber/mcabber/commands.c |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1414 |
--- a/mcabber/mcabber/commands.c Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1415 |
+++ b/mcabber/mcabber/commands.c Thu Aug 22 00:44:41 2013 +0300 |
74 | 1416 |
@@ -19,7 +19,7 @@ |
1417 |
* USA |
|
1418 |
*/ |
|
1419 |
||
1420 |
-#include <string.h> |
|
1421 |
+#include <string.h> // g_memmove |
|
1422 |
#include <stdlib.h> |
|
1423 |
#include <sys/types.h> |
|
1424 |
#include <sys/stat.h> |
|
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
1425 |
@@ -43,512 +43,680 @@ |
74 | 1426 |
#include "xmpp.h" |
1427 |
#include "main.h" |
|
1428 |
||
1429 |
-#define IMSTATUS_AWAY "away" |
|
1430 |
-#define IMSTATUS_ONLINE "online" |
|
1431 |
-#define IMSTATUS_OFFLINE "offline" |
|
1432 |
-#define IMSTATUS_FREE4CHAT "free" |
|
1433 |
-#define IMSTATUS_AVAILABLE "avail" |
|
1434 |
-#define IMSTATUS_NOTAVAILABLE "notavail" |
|
1435 |
-#define IMSTATUS_DONOTDISTURB "dnd" |
|
1436 |
-#ifdef WITH_DEPRECATED_STATUS_INVISIBLE |
|
1437 |
-# define IMSTATUS_INVISIBLE "invisible" |
|
1438 |
+// |
|
1439 |
+// Pre-declarations |
|
1440 |
+// |
|
1441 |
+ |
|
1442 |
+// for process_line() |
|
1443 |
+typedef enum { |
|
1444 |
+ scmd_group_unfold = 0, |
|
1445 |
+ scmd_group_fold = 1, |
|
1446 |
+ scmd_group_toggle = -1, |
|
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1447 |
+} scmd_group_t; |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1448 |
+typedef enum { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1449 |
+ msgtype_not_set, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1450 |
+ msgtype_normal, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1451 |
+ msgtype_headline, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1452 |
+} msgtype_t; |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1453 |
+ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1454 |
+static void group_cmd (gpointer group, scmd_group_t action); |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1455 |
+static void say_cmd (char *arg, msgtype_t msgtype); |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
1456 |
+static void room_bookmark (gpointer bud, char *arg); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
1457 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
1458 |
+#define BUILTIN_COUNT 18 |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
1459 |
+static cmdopts_t def_roster, // 1 |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1460 |
+ def_color, |
74 | 1461 |
+ def_status, |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1462 |
+ def_status_to, |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
1463 |
+ def_add, // 5 |
74 | 1464 |
+ def_del, |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1465 |
+ def_group, |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1466 |
+ def_say, |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
1467 |
+ def_msay, |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
1468 |
+ def_say_to, // 10 |
74 | 1469 |
+ def_buffer, |
1470 |
+ def_clear, |
|
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
1471 |
+ def_info, |
74 | 1472 |
+ def_rename, |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1473 |
+ def_move, // 15 |
74 | 1474 |
+ def_set, |
1475 |
+ def_alias, |
|
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
1476 |
+ def_bind; |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
1477 |
+#if 0 |
74 | 1478 |
+ def_connect, |
1479 |
+ def_disconnect, |
|
1480 |
+ def_rawxml, |
|
1481 |
+ def_room, |
|
1482 |
+ def_authorization, |
|
1483 |
+ def_version, |
|
1484 |
+ def_request, |
|
1485 |
+ def_event, |
|
1486 |
+ def_help, |
|
1487 |
+ def_pgp, |
|
1488 |
+ def_iline, |
|
1489 |
+ def_screen_refresh, |
|
1490 |
+ def_chat_disable, |
|
1491 |
+ def_source, |
|
1492 |
+ def_otr, |
|
1493 |
+ def_otrpolicy, |
|
1494 |
+ def_echo, |
|
1495 |
+ def_module, |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1496 |
+ def_exit; |
74 | 1497 |
#endif |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1498 |
|
74 | 1499 |
-// Return value container for the following functions |
1500 |
-static int retval_for_cmds; |
|
1501 |
- |
|
1502 |
-// Commands callbacks |
|
1503 |
-static void do_roster(char *arg); |
|
1504 |
-static void do_status(char *arg); |
|
1505 |
-static void do_status_to(char *arg); |
|
1506 |
-static void do_add(char *arg); |
|
1507 |
-static void do_del(char *arg); |
|
1508 |
-static void do_group(char *arg); |
|
1509 |
-static void do_say(char *arg); |
|
1510 |
-static void do_msay(char *arg); |
|
1511 |
-static void do_say_to(char *arg); |
|
1512 |
-static void do_buffer(char *arg); |
|
1513 |
-static void do_clear(char *arg); |
|
1514 |
-static void do_info(char *arg); |
|
1515 |
-static void do_rename(char *arg); |
|
1516 |
-static void do_move(char *arg); |
|
1517 |
-static void do_set(char *arg); |
|
1518 |
-static void do_alias(char *arg); |
|
1519 |
-static void do_bind(char *arg); |
|
1520 |
-static void do_connect(char *arg); |
|
1521 |
-static void do_disconnect(char *arg); |
|
1522 |
-static void do_rawxml(char *arg); |
|
1523 |
-static void do_room(char *arg); |
|
1524 |
-static void do_authorization(char *arg); |
|
1525 |
-static void do_version(char *arg); |
|
1526 |
-static void do_request(char *arg); |
|
1527 |
-static void do_event(char *arg); |
|
1528 |
-static void do_help(char *arg); |
|
1529 |
-static void do_pgp(char *arg); |
|
1530 |
-static void do_iline(char *arg); |
|
1531 |
-static void do_screen_refresh(char *arg); |
|
1532 |
-static void do_chat_disable(char *arg); |
|
1533 |
-static void do_source(char *arg); |
|
1534 |
-static void do_color(char *arg); |
|
1535 |
-static void do_otr(char *arg); |
|
1536 |
-static void do_otrpolicy(char *arg); |
|
1537 |
-static void do_echo(char *arg); |
|
1538 |
-static void do_module(char *arg); |
|
1539 |
-static void do_exit(char *arg); |
|
1540 |
- |
|
1541 |
-static void room_bookmark(gpointer bud, char *arg); |
|
1542 |
- |
|
1543 |
-// Global variable for the commands list |
|
1544 |
-static GSList *Commands; |
|
1545 |
-static GSList *safe_commands; |
|
1546 |
- |
|
1547 |
-#ifdef MODULES_ENABLE |
|
1548 |
-#include "modules.h" |
|
1549 |
- |
|
1550 |
-gpointer cmd_del(gpointer id) |
|
1551 |
+// |
|
1552 |
+// Main commands mechanics |
|
1553 |
+// |
|
1554 |
+// Functions to parse mcabber command line and execute commands accordingly. |
|
1555 |
+// Allows to define commands and remove definitions. |
|
1556 |
+ |
|
1557 |
+cmdopts_t **cmd_list = NULL; // command structs list |
|
1558 |
+gsize cmd_count = 0; // number of commands (one less than memory allocated) |
|
1559 |
+ |
|
1560 |
+// private |
|
1561 |
+void cmd_init (void) |
|
1562 |
{ |
|
1563 |
- GSList *sl_cmd; |
|
1564 |
- if (!id) return NULL; |
|
1565 |
- for (sl_cmd = Commands; sl_cmd; sl_cmd = sl_cmd->next) |
|
1566 |
- if (sl_cmd -> data == id) { |
|
1567 |
- cmd *command = (cmd *) sl_cmd->data; |
|
1568 |
- gpointer userdata = command->userdata; |
|
1569 |
- Commands = g_slist_delete_link(Commands, sl_cmd); |
|
1570 |
- compl_del_category_word(COMPL_CMD, command->name); |
|
1571 |
- g_slice_free(cmd, command); |
|
1572 |
- return userdata; |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1573 |
+ cmd_list = g_new (cmdopts_t *, BUILTIN_COUNT+1); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1574 |
+ |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1575 |
+ cmd_list[0] = &def_roster; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1576 |
+ cmd_list[1] = &def_color; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1577 |
+ cmd_list[2] = &def_status; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1578 |
+ cmd_list[3] = &def_status_to; |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1579 |
+ cmd_list[4] = &def_add; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1580 |
+ cmd_list[5] = &def_del; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1581 |
+ cmd_list[6] = &def_group; |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1582 |
+ cmd_list[7] = &def_say; |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
1583 |
+ cmd_list[8] = &def_msay; |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1584 |
+ cmd_list[9] = &def_say_to; |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1585 |
+ cmd_list[10] = &def_buffer; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1586 |
+ cmd_list[11] = &def_clear; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1587 |
+ cmd_list[12] = &def_info; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1588 |
+ cmd_list[13] = &def_rename; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1589 |
+ cmd_list[14] = &def_move; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1590 |
+ cmd_list[15] = &def_set; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1591 |
+ cmd_list[16] = &def_alias; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1592 |
+ cmd_list[17] = &def_bind; |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
1593 |
+#if 0 |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1594 |
+ cmd_list[18] = &def_connect; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1595 |
+ cmd_list[19] = &def_disconnect; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1596 |
+ cmd_list[20] = &def_rawxml; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1597 |
+ cmd_list[21] = &def_room; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1598 |
+ cmd_list[22] = &def_authorization; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1599 |
+ cmd_list[23] = &def_version; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1600 |
+ cmd_list[24] = &def_request; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1601 |
+ cmd_list[25] = &def_event; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1602 |
+ cmd_list[26] = &def_help; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1603 |
+ cmd_list[27] = &def_pgp; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1604 |
+ cmd_list[28] = &def_iline; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1605 |
+ cmd_list[29] = &def_screen_refresh; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1606 |
+ cmd_list[30] = &def_chat_disable; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1607 |
+ cmd_list[31] = &def_source; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1608 |
+ cmd_list[32] = &def_otr; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1609 |
+ cmd_list[33] = &def_otrpolicy; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1610 |
+ cmd_list[34] = &def_echo; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1611 |
+ cmd_list[35] = &def_module; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
1612 |
+ cmd_list[36] = &def_exit; |
74 | 1613 |
+#endif |
1614 |
+ cmd_list[BUILTIN_COUNT] = NULL; |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1615 |
+ |
74 | 1616 |
+ cmd_count = BUILTIN_COUNT; |
1617 |
+} |
|
1618 |
+ |
|
1619 |
+// private |
|
1620 |
+void cmd_uninit (void) |
|
1621 |
+{ |
|
1622 |
+ g_free (cmd_list); |
|
1623 |
+ cmd_list = NULL; |
|
1624 |
+ cmd_count = 0; |
|
1625 |
+} |
|
1626 |
+ |
|
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1627 |
+static size_t cmdopts_count_values (const cmdopts_t *command) |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1628 |
+{ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1629 |
+ size_t max = -1; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1630 |
+ if (command -> opts) { |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1631 |
+ const cmdopt_t *opt; |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1632 |
+ for (opt = command -> opts; opt -> shortopt != 0; opt ++) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1633 |
+ if (opt -> arg.pos > max) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1634 |
+ max = opt -> arg.pos; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1635 |
+ } |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1636 |
+ if (command -> args) { |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1637 |
+ const cmdarg_t *arg; |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1638 |
+ for (arg = command -> args; arg -> name != NULL; arg ++) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1639 |
+ if (arg -> pos > max) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1640 |
+ max = arg -> pos; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1641 |
+ } |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1642 |
+ if (command -> cmds) { |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1643 |
+ const cmdopts_t *scmd; |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1644 |
+ for (scmd = command -> cmds; scmd -> name != NULL; scmd ++) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1645 |
+ size_t cnt = cmdopts_count_values (scmd); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1646 |
+ if (cnt > max) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1647 |
+ max = cnt; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1648 |
} |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1649 |
+ } |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1650 |
+ return max; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1651 |
+} |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1652 |
+ |
74 | 1653 |
+void cmd_define (cmdopts_t *command) |
1654 |
+{ |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1655 |
+ size_t n; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1656 |
+ // we update value count even for existing commands - user may |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1657 |
+ // have screwed something up in struct. |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1658 |
+ command -> valno = cmdopts_count_values (command) + 1; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1659 |
+ // check if command already exists |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1660 |
+ for (n = cmd_count; n > 0; n --) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1661 |
+ if (cmd_list[n-1] == command) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1662 |
+ // raise it's priority |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1663 |
+ g_memmove(cmd_list+n-1, cmd_list+n, sizeof(cmdopts_t *) * (cmd_count-n-1)); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1664 |
+ cmd_list[cmd_count-1] = command; |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1665 |
+ return; |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1666 |
+ } |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1667 |
+ // register new command |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1668 |
+ cmd_list = g_renew (cmdopts_t *, cmd_list, cmd_count+2); |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1669 |
+ cmd_list[cmd_count] = command; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1670 |
+ cmd_list[cmd_count+1] = NULL; |
74 | 1671 |
+ cmd_count ++; |
1672 |
+} |
|
1673 |
+ |
|
1674 |
+void cmd_undef (cmdopts_t *command) |
|
1675 |
+{ |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1676 |
+ size_t num = 0; |
74 | 1677 |
+ while (num < cmd_count) { |
1678 |
+ if (cmd_list[num] == command) { |
|
1679 |
+ g_memmove (cmd_list+num, cmd_list+num+1, sizeof(cmdopts_t *) * (cmd_count-num)); |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1680 |
+ cmd_list = g_renew (cmdopts_t *, cmd_list, cmd_count); |
74 | 1681 |
+ cmd_count --; |
1682 |
+ return; |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1683 |
+ } |
74 | 1684 |
+ num ++; |
1685 |
+ } |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1686 |
+} |
74 | 1687 |
+ |
1688 |
+// error cmdopts_parse_argument ( startptr, endptr, flags ) |
|
1689 |
+// Parses next argument according to flags and finishes it with zero. |
|
1690 |
+// Updates current/end pointers. Parsed string MUST be writable. |
|
1691 |
+// String may shrink in size (quotation/escapes), thus endpointer is also |
|
1692 |
+// updated. |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1693 |
+const char *cmdopts_parse_argument(gchar **pr, gchar **er, cmdarg_flags_t flags) |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1694 |
+{ |
74 | 1695 |
+ gchar *p = *pr; |
1696 |
+ gchar *e = *er; |
|
1697 |
+ const char *error = NULL; |
|
1698 |
+ gboolean quotes = FALSE; |
|
1699 |
+ |
|
1700 |
+ if ((flags & cmdarg_catchall) && (flags & cmdarg_plain)) { |
|
1701 |
+ *pr = e; |
|
1702 |
+ return NULL; |
|
1703 |
+ } |
|
1704 |
+ |
|
1705 |
+ while (p <= e && error != NULL) { |
|
1706 |
+ if (p == e && quotes) { // end of line in quotes |
|
1707 |
+ error = "Unfinished quoted argument."; |
|
1708 |
+ } else if ((*p == ' ' && (!quotes) && !(flags & cmdarg_catchall)) || p == e) { // argument ended |
|
1709 |
+ if (*p != '\0') { |
|
1710 |
+ *p = '\0'; |
|
1711 |
+ p ++; |
|
1712 |
+ } |
|
1713 |
+ break; |
|
1714 |
+ } else if (*p == '\\' && !(flags & cmdarg_plain)) { // next char escape |
|
1715 |
+ g_memmove(p, p+1, e-(p+1)+1); |
|
1716 |
+ e --; |
|
1717 |
+ if (p == e) { |
|
1718 |
+ error = "Escape at the end of line."; |
|
1719 |
+ } else { |
|
1720 |
+ p ++; |
|
1721 |
+ } |
|
1722 |
+ } else if (*p == '"' && !(flags & cmdarg_plain)) { // quotation start/end |
|
1723 |
+ g_memmove(p, p+1, e-(p+1)+1); |
|
1724 |
+ e --; |
|
1725 |
+ quotes = !quotes; |
|
1726 |
+ } else { // still argument |
|
1727 |
+ p ++; |
|
1728 |
+ } |
|
1729 |
+ } |
|
1730 |
+ |
|
1731 |
+ *pr = p; |
|
1732 |
+ *er = e; |
|
1733 |
+ return error; |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1734 |
+} |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1735 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1736 |
+static cmdarg_value_t *cmdopts_allocate_values (const cmdopts_t *command) |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1737 |
+{ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1738 |
+ cmdarg_value_t *values; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1739 |
+ size_t n = command -> valno; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1740 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1741 |
+ if (n == 0) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1742 |
+ return NULL; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1743 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1744 |
+ values = g_slice_alloc (sizeof(cmdarg_value_t) * n); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1745 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1746 |
+ while (n > 0) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1747 |
+ n --; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1748 |
+ values[n].src = NULL; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1749 |
+ values[n].flags = cmdval_default; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1750 |
+ values[n].value.arg = NULL; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1751 |
+ } |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1752 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1753 |
+ return values; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1754 |
+} |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1755 |
+ |
74 | 1756 |
+// error cmdopts_parse_internal ( startptr, endptr, commanddef ) |
1757 |
+// Parses command arguments according to command definition. |
|
1758 |
+// Parsed string MUST be writable. Regardless of success or error, input |
|
1759 |
+// string should be considered corrupted by parsing process. |
|
1760 |
+// Even in case of error, commanddef should be passed to cmdopts_free(). |
|
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1761 |
+static gchar *cmdopts_parse_internal(gchar **pr, gchar **er, const cmdopts_t *command, cmdarg_value_t *values) |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1762 |
+{ |
74 | 1763 |
+ enum { // Parser state transitions: |
1764 |
+ in_space, // -> in_space, in_optstart, in_argstart |
|
1765 |
+ in_optstart, // -> in_shortoptend, in_longoptstart, in_argstart ("-") |
|
1766 |
+ in_shortoptend, // -> in_space, in_argstart, error |
|
1767 |
+ in_longoptstart, // -> in_longopt, in_space, in_argstart ("---") |
|
1768 |
+ in_longopt, // -> in_longopt, in_space, error |
|
1769 |
+ in_argstart, // -> in_space, error |
|
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1770 |
+ } state = in_argstart; // current parser state |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1771 |
+ gchar *p = *pr; // current pointer |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1772 |
+ gchar *e = *er; // end of line pointer |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1773 |
+ gchar *s; // start of current object pointer |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1774 |
+ gboolean opts_ended = FALSE; // don't allow options any more |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1775 |
+ const cmdopt_t *option = NULL; // option, for which argument is currently parsed |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1776 |
+ size_t argno = 0; // number of current positional argument |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1777 |
+ gchar *error = NULL; // error message to return |
74 | 1778 |
+ |
1779 |
+ // prepare: set default values for arguments and unset some fields |
|
1780 |
+ if (error == NULL) { |
|
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1781 |
+ size_t n; |
74 | 1782 |
+ if (command -> opts) { |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
1783 |
+ for (n = 0; command -> opts[n].shortopt != 0; n ++) { |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1784 |
+ const cmdopt_t *opt = command -> opts + n; |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1785 |
+ cmdarg_value_t *val = values + opt -> arg.pos; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1786 |
+ // do not overwrite already specified values |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1787 |
+ if (val -> src == NULL || !(val -> flags & cmdval_visited)) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1788 |
+ if (opt -> arg.flags & cmdarg_switch) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1789 |
+ val -> value.swc = 0; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1790 |
+ } else { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1791 |
+ val -> value.roarg = opt -> arg.defval; // XXX ro |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1792 |
+ } |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1793 |
+ val -> src = &(opt -> arg); |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1794 |
+ } |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1795 |
+ } |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1796 |
+ } |
74 | 1797 |
+ if (command -> args) { |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
1798 |
+ for (n = 0; command -> args[n].name != NULL; n ++) { |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1799 |
+ const cmdarg_t *arg = command -> args + n; |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1800 |
+ cmdarg_value_t *val = values + arg -> pos; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1801 |
+ // do not overwrite already specified values |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1802 |
+ if (val -> src == NULL || !(val -> flags & cmdval_visited)) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1803 |
+ val -> value.roarg = arg -> defval; // XXX ro |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1804 |
+ val -> src = arg; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1805 |
+ } |
74 | 1806 |
+ } |
1807 |
+ } |
|
1808 |
+ } |
|
1809 |
+ |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1810 |
+ // general environment checking |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1811 |
+ if (command -> check) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1812 |
+ if ((error = command -> check (command, values))) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1813 |
+ gchar *err = error; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1814 |
+ error = g_strdup_printf("%s: %s", command -> name, err); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1815 |
+ g_free (err); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1816 |
+ } |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1817 |
+ } |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1818 |
+ |
74 | 1819 |
+ // we allow parser to do one extra run on final '\0' |
1820 |
+ while (p <= e && error == NULL) { |
|
1821 |
+ if (state == in_space) { // space between args/options |
|
1822 |
+ if (*p == ' ' || p == e) { // still space |
|
1823 |
+ p ++; |
|
1824 |
+ } else if (*p == '-' && !opts_ended) { // option |
|
1825 |
+ state = in_optstart; |
|
1826 |
+ p ++; |
|
1827 |
+ } else { // argument |
|
1828 |
+ if (!option) { |
|
1829 |
+ opts_ended = TRUE; |
|
1830 |
+ } |
|
1831 |
+ s = p; |
|
1832 |
+ state = in_argstart; |
|
1833 |
+ } |
|
1834 |
+ } else if (state == in_optstart) { // long/short option |
|
1835 |
+ if (*p == ' ' || p == e) { // argument '-' |
|
1836 |
+ opts_ended = TRUE; |
|
1837 |
+ s = p = p - 1; |
|
1838 |
+ state = in_argstart; |
|
1839 |
+ } else if (*p == '-') { // long option |
|
1840 |
+ state = in_longoptstart; |
|
1841 |
+ p ++; |
|
1842 |
+ } else { // short option |
|
1843 |
+ s = p; |
|
1844 |
+ state = in_shortoptend; |
|
1845 |
+ p ++; |
|
1846 |
+ } |
|
1847 |
+ } else if (state == in_shortoptend) { // short option |
|
1848 |
+ if (*p == ' ' || p == e) { // option really ended |
|
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
1849 |
+ size_t n; |
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
1850 |
+ for (n = 0; command -> opts[n].shortopt != 0; n ++) { |
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
1851 |
+ if (command -> opts[n].shortopt == *s) { |
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
1852 |
+ option = command -> opts + n; |
74 | 1853 |
+ break; |
1854 |
+ } |
|
1855 |
+ } |
|
1856 |
+ if (option != NULL) { // option is known |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1857 |
+ if (option -> arg.flags & cmdarg_switch) { // it is switch |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1858 |
+ cmdarg_value_t *val = values + option -> arg.pos; |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1859 |
+ if (val -> src != &(option -> arg)) { |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1860 |
+ val -> value.swc = 1; |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1861 |
+ val -> src = &(option -> arg); |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1862 |
+ } else { |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1863 |
+ val -> value.swc ++; |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1864 |
+ } |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1865 |
+ val -> flags |= cmdval_visited; |
74 | 1866 |
+ option = NULL; |
1867 |
+ } else if (p == e) { |
|
1868 |
+ error = g_strdup_printf ("%s: Option -%c needs an argument.", command -> name, option -> shortopt); |
|
1869 |
+ } |
|
1870 |
+ state = in_space; |
|
1871 |
+ p ++; |
|
1872 |
+ } else { // option is unknown |
|
1873 |
+ error = g_strdup_printf ("%s: Unknown option -%c.", command -> name, *s); |
|
1874 |
+ } |
|
1875 |
+ } else { // short option not ended |
|
1876 |
+ // consider it argument (to allow -autojoin) |
|
1877 |
+ opts_ended = TRUE; |
|
1878 |
+ s = p = p - 2; |
|
1879 |
+ state = in_argstart; |
|
1880 |
+ } |
|
1881 |
+ } else if (state == in_longoptstart) { // long option initialization |
|
1882 |
+ if (*p == ' ' || p == e) { // end of options '--' |
|
1883 |
+ opts_ended = TRUE; |
|
1884 |
+ state = in_space; |
|
1885 |
+ p ++; |
|
1886 |
+ } else if (*p == '-') { // argument, starting with '---' |
|
1887 |
+ opts_ended = TRUE; |
|
1888 |
+ s = p = p - 2; |
|
1889 |
+ state = in_argstart; |
|
1890 |
+ } else { // it is long option |
|
1891 |
+ s = p; |
|
1892 |
+ state = in_longopt; |
|
1893 |
+ p ++; |
|
1894 |
+ } |
|
1895 |
+ } else if (state == in_longopt) { // long option name |
|
1896 |
+ if (*p == ' ' || p == e) { // long option ended |
|
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
1897 |
+ size_t n; |
74 | 1898 |
+ *p = '\0'; |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
1899 |
+ for (n = 0; command -> opts[n].shortopt != 0; n ++) { |
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
1900 |
+ if (!g_strcmp0(command -> opts[n].longopt, s)) { |
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
1901 |
+ option = command -> opts + n; |
74 | 1902 |
+ break; |
1903 |
+ } |
|
1904 |
+ } |
|
1905 |
+ if (option != NULL) { // option is known |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1906 |
+ if (option -> arg.flags & cmdarg_switch) { // it is switch |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1907 |
+ cmdarg_value_t *val = values + option -> arg.pos; |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1908 |
+ if (val -> src != &(option -> arg)) { |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1909 |
+ val -> value.swc = 1; |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1910 |
+ val -> src = &(option -> arg); |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1911 |
+ } else { |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1912 |
+ val -> value.swc ++; |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1913 |
+ } |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1914 |
+ val -> flags |= cmdval_visited; |
74 | 1915 |
+ option = NULL; |
1916 |
+ } else if (p == e) { |
|
1917 |
+ error = g_strdup_printf ("%s: Option --%s needs an argument.", command -> name, option -> longopt); |
|
1918 |
+ } |
|
1919 |
+ state = in_space; |
|
1920 |
+ p ++; |
|
1921 |
+ } else { // option is unknown |
|
1922 |
+ error = g_strdup_printf ("%s: Unknown option --%s.", command -> name, option -> longopt); |
|
1923 |
+ } |
|
1924 |
+ } else { // still long option |
|
1925 |
+ p ++; |
|
1926 |
+ } |
|
1927 |
+ } else if (state == in_argstart) { // option/command argument initialization |
|
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1928 |
+ const char *err; |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1929 |
+ const cmdarg_t *arg; |
74 | 1930 |
+ |
1931 |
+ if (option) { // option argument |
|
1932 |
+ arg = &(option -> arg); |
|
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
1933 |
+ } else if (!command -> args || !command -> args[argno].name) { // no need to parse arguments any further |
74 | 1934 |
+ break; |
1935 |
+ } else { // normal aurgument |
|
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
1936 |
+ arg = command -> args + argno; |
74 | 1937 |
+ } |
1938 |
+ |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1939 |
+ if ((err = cmdopts_parse_argument (&p, &e, arg -> flags))) { // get argument value |
74 | 1940 |
+ if (!option) { |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1941 |
+ error = g_strdup_printf ("%s: Can't parse argument %s (%lu): %s", command -> name, arg -> name, argno + 1, err); |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1942 |
+ } else if (option -> longopt) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1943 |
+ error = g_strdup_printf ("%s: Can't parse argument for option --%s: %s", command -> name, option -> longopt, err); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1944 |
+ } else { |
74 | 1945 |
+ error = g_strdup_printf ("%s: Can't parse argument for option -%c: %s", command -> name, option -> shortopt, err); |
1946 |
+ } |
|
1947 |
+ } else { |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1948 |
+ cmdarg_value_t *val = values + arg -> pos; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1949 |
+ val -> value.arg = s; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1950 |
+ val -> src = arg; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1951 |
+ val -> flags |= cmdval_visited; |
74 | 1952 |
+ if (option) { // option argument |
1953 |
+ option = NULL; |
|
1954 |
+ } else { // normal argument |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1955 |
+ if (arg -> flags & cmdarg_subcmd) { // subcommand |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1956 |
+ const cmdopts_t *subcmd; |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1957 |
+ for (subcmd = command -> cmds; subcmd -> name != NULL; subcmd ++) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1958 |
+ if (!strcmp (s, subcmd -> name)) |
74 | 1959 |
+ break; |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1960 |
+ if (subcmd -> name != NULL) { // found subcommand |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1961 |
+ gchar *err; |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1962 |
+ val -> value.cmd = subcmd; |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1963 |
+ if ((err = cmdopts_parse_internal (&p, &e, subcmd, values))) { |
74 | 1964 |
+ error = g_strdup_printf("%s %s", command -> name, err); |
1965 |
+ g_free (err); |
|
1966 |
+ } |
|
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1967 |
+ } else if (arg -> flags & cmdarg_required) { // unknown subcommand |
74 | 1968 |
+ error = g_strdup_printf("%s: Unable to find subcommand \"%s\".", command -> name, s); |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1969 |
+ } else { // XXX warning message? |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1970 |
+ val -> value.cmd = NULL; |
74 | 1971 |
+ } |
1972 |
+ } |
|
1973 |
+ argno ++; |
|
1974 |
+ } |
|
1975 |
+ } |
|
1976 |
+ state = in_space; |
|
1977 |
+ } |
|
1978 |
+ } |
|
1979 |
+ |
|
1980 |
+ *pr = p; |
|
1981 |
+ *er = e; |
|
1982 |
+ |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1983 |
+ return error; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1984 |
+} |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1985 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1986 |
+// value types: type check required |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1987 |
+// - switch no effect toboolean() no effect? |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1988 |
+// - option check call checker fatal check error |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1989 |
+// - argument check call checker fatal check error |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1990 |
+// - subcommand no effect check for required fail if missing |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
1991 |
+static gchar *cmdopts_check_values (const cmdopts_t *command, cmdarg_value_t *values) |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1992 |
+{ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1993 |
+ size_t n = command -> valno; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1994 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1995 |
+ if (n == 0) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1996 |
+ return NULL; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1997 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1998 |
+ // XXX reverse order? |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
1999 |
+ while (n > 0) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2000 |
+ cmdarg_value_t *val = values + n - 1; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2001 |
+ n --; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2002 |
+ if ((val -> flags & cmdval_visited) || ((val -> src != NULL) && (val -> src -> flags & cmdarg_check))) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2003 |
+ if (val -> src -> flags & cmdarg_subcmd) { // subcommand - fail if required and missing |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2004 |
+ if ((val -> src -> flags & cmdarg_required) && (val -> value.cmd == NULL)) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2005 |
+ return g_strdup_printf ("%s: Not specified %s.", command -> name, val -> src -> name); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2006 |
+ } else if (val -> src -> flags & cmdarg_switch) { // switch - toboolean if check |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2007 |
+ if (val -> src -> flags & cmdarg_check) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2008 |
+ val -> value.swc %= 2; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2009 |
+ } else if (val -> src -> type && val -> src -> type -> check) { // typed argument |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2010 |
+ gchar *err; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2011 |
+ if ((err = val -> src -> type -> check (val))) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2012 |
+ // FIXME option name |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2013 |
+ if (val -> src -> flags & cmdarg_required) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2014 |
+ gchar *error = g_strdup_printf ("Error in argument value \"%s\": %s", val -> src -> name, err); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2015 |
+ g_free (err); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2016 |
+ return error; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2017 |
+ } else { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2018 |
+ scr_log_print (LPRINT_NORMAL, "Warning: %s: Error in argument value \"%s\": %s", command -> name, val -> src -> name, err); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2019 |
+ g_free (err); |
74 | 2020 |
+ } |
2021 |
+ } |
|
2022 |
+ } |
|
2023 |
+ } |
|
2024 |
+ } |
|
2025 |
+ |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2026 |
return NULL; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2027 |
} |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2028 |
-#endif |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2029 |
- |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2030 |
-// cmd_add() |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2031 |
-// Adds a command to the commands list and to the CMD completion list |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2032 |
-gpointer cmd_add(const char *name, const char *help, guint flags_row1, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2033 |
- guint flags_row2, void (*f)(char*), gpointer userdata) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2034 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2035 |
+// cmdopts_free ( commanddef ) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2036 |
+// Free various parser data, used in parsing process |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
2037 |
+static void cmdopts_free_values (const cmdopts_t *command, cmdarg_value_t *values) |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2038 |
{ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2039 |
- cmd *n_cmd = g_slice_new0(cmd); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2040 |
- strncpy(n_cmd->name, name, 32-1); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2041 |
- n_cmd->help = help; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2042 |
- n_cmd->completion_flags[0] = flags_row1; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2043 |
- n_cmd->completion_flags[1] = flags_row2; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2044 |
- n_cmd->func = f; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2045 |
- n_cmd->userdata = userdata; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2046 |
- Commands = g_slist_prepend(Commands, n_cmd); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2047 |
- // Add to completion CMD category |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2048 |
- compl_add_category_word(COMPL_CMD, name); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2049 |
- return n_cmd; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2050 |
+ size_t n = command -> valno; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2051 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2052 |
+ if (n == 0) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2053 |
+ return; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2054 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2055 |
+ while (n > 0) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2056 |
+ cmdarg_value_t *val = values + n - 1; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2057 |
+ n --; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2058 |
+ if ((val -> flags & cmdval_freeme) && |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2059 |
+ val -> src && val -> src -> type && |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2060 |
+ val -> src -> type -> free) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2061 |
+ val -> src -> type -> free (val); |
74 | 2062 |
+ } |
2063 |
+ } |
|
2064 |
+ |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2065 |
+ g_slice_free1 (sizeof(cmdarg_value_t) * n, values); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2066 |
} |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2067 |
|
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2068 |
-// cmd_set_safe(name, safe) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2069 |
-// Sets if command can be used in startup configuration file. |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2070 |
-gboolean cmd_set_safe(const gchar *name, gboolean safe) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2071 |
+cmd_result_t cmd_execute (gchar *commandline, cmdexe_flags_t flags) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2072 |
{ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2073 |
- GSList *sel; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2074 |
- if (!name) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2075 |
- return FALSE; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2076 |
- for (sel = safe_commands; sel; sel = sel->next) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2077 |
- if (!strcmp((const char *)sel->data, name)) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2078 |
- if (safe) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2079 |
- return FALSE; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2080 |
- else { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2081 |
- g_free(sel->data); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2082 |
- safe_commands = g_slist_delete_link(safe_commands, sel); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2083 |
- } |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2084 |
+ gchar *s = commandline; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2085 |
+ gchar *p, *e; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2086 |
+ gchar *freeme = NULL; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2087 |
+ const char *err; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2088 |
+ gchar *error; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2089 |
+ cmdopts_t *command = NULL; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2090 |
+ const char *alias = NULL; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2091 |
+ cmdarg_value_t *values; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2092 |
+ size_t n; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2093 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2094 |
+ // skip command indicator and spaces at the beginning |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2095 |
+ while (*s == COMMAND_CHAR || *s == ' ') |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2096 |
+ s ++; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2097 |
+ p = s; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2098 |
+ e = s + strlen (s); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2099 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2100 |
+ // separate first word - command name |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2101 |
+ if ((err = cmdopts_parse_argument (&p, &e, cmdarg_default))) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2102 |
+ scr_log_print (LPRINT_NORMAL, "error: Can't comprehend command name: %s.", err); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2103 |
+ return cmd_result_syntax_error; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2104 |
+ } |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2105 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2106 |
+ // check for quit command |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2107 |
+ if (!strcmp (s, "quit")) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2108 |
+ return cmd_result_quit; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2109 |
+ } |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2110 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2111 |
+ // check if we're in verbatim mode |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2112 |
+ if ((flags & cmdexe_check_verbatim) && scr_get_multimode () == 2) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2113 |
+ if (strcmp (s, "msay")) { // it is not msay |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2114 |
+ return cmd_result_verbatim; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2115 |
} |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2116 |
- if (safe) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2117 |
- safe_commands = g_slist_append(safe_commands, g_strdup(name)); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2118 |
- else |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2119 |
- return FALSE; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2120 |
- return TRUE; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2121 |
+ } |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2122 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2123 |
+ // check and expand alias |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2124 |
+ if ((alias = settings_get (SETTINGS_TYPE_ALIAS, s))) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2125 |
+ freeme = s = g_strdup_printf ("%s %s", alias, p); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2126 |
+ p = s; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2127 |
+ e = s + strlen (s); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2128 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2129 |
+ if ((err = cmdopts_parse_argument (&p, &e, cmdarg_default))) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2130 |
+ scr_log_print (LPRINT_NORMAL, "error: Can't comprehend command name: %s.", err); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2131 |
+ g_free (freeme); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2132 |
+ return cmd_result_syntax_error; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2133 |
+ } |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2134 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2135 |
+ // check for quit command again |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2136 |
+ if (!strcmp (s, "quit")) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2137 |
+ g_free (freeme); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2138 |
+ return cmd_result_quit; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2139 |
+ } |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2140 |
+ } |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2141 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2142 |
+ // find command with this name (reverse - see cmd_define()) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2143 |
+ for (n = cmd_count; n > 0; n --) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2144 |
+ if (!strcmp (s, cmd_list[n-1] -> name)) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2145 |
+ command = cmd_list[n-1]; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2146 |
+ break; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2147 |
+ } |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2148 |
+ } |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2149 |
+ if (command == NULL) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2150 |
+ scr_log_print (LPRINT_NORMAL, "error: Unable to find command \"%s\".", s); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2151 |
+ g_free (freeme); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2152 |
+ return cmd_result_not_found; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2153 |
+ } |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2154 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2155 |
+ // check safety |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2156 |
+ if ((flags & cmdexe_check_safe) && !(command -> flags & cmd_safe)) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2157 |
+ scr_log_print (LPRINT_NORMAL, "error: Command \"%s\" is not safe to execute here.", command -> name); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2158 |
+ g_free (freeme); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2159 |
+ return cmd_result_not_found; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2160 |
+ } |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2161 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2162 |
+ // allocate dynamic storage for arguments |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2163 |
+ values = cmdopts_allocate_values (command); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2164 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2165 |
+ // parse command line |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2166 |
+ if ((error = cmdopts_parse_internal (&p, &e, command, values))) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2167 |
+ scr_log_print (LPRINT_NORMAL, "%s", error); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2168 |
+ g_free (error); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2169 |
+ cmdopts_free_values (command, values); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2170 |
+ g_free (freeme); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2171 |
+ return cmd_result_syntax_error; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2172 |
+ } |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2173 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2174 |
+ // do type checking on arguments |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2175 |
+ if ((error = cmdopts_check_values (command, values))) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2176 |
+ scr_log_print (LPRINT_NORMAL, "%s: %s", command -> name, error); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2177 |
+ g_free (error); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2178 |
+ cmdopts_free_values (command, values); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2179 |
+ g_free (freeme); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2180 |
+ return cmd_result_value_error; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2181 |
+ } |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2182 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2183 |
+ // execute command handler |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2184 |
+ if (command -> handle) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2185 |
+ if ((error = command -> handle (command, values))) { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2186 |
+ scr_log_print (LPRINT_NORMAL, "%s: %s", command -> name, error); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2187 |
+ g_free (error); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2188 |
+ cmdopts_free_values (command, values); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2189 |
+ g_free (freeme); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2190 |
+ return cmd_result_runtime_error; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2191 |
+ } |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2192 |
+ } |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2193 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2194 |
+ // free resources |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2195 |
+ cmdopts_free_values (command, values); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2196 |
+ g_free (freeme); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2197 |
+ return cmd_result_ok; |
74 | 2198 |
} |
2199 |
||
2200 |
-// cmd_is_safe(name) |
|
2201 |
-// Returns if command is safe or not |
|
2202 |
-gboolean cmd_is_safe(const gchar *name) |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2203 |
+// process_line(line) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2204 |
+// Process a command/message line. If this isn't a command, this is a message |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2205 |
+// and it is sent to the currently selected buddy. |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2206 |
+// Returns 255 if the line is the /quit command, 0 on success and some other |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2207 |
+// error codes. |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2208 |
+cmd_result_t process_line(const char *line) |
74 | 2209 |
{ |
2210 |
- GSList *sel; |
|
2211 |
- if (!name) |
|
2212 |
- return FALSE; |
|
2213 |
- for (sel = safe_commands; sel; sel = sel->next) |
|
2214 |
- if (!strcmp((const char *)sel->data, name)) |
|
2215 |
- return TRUE; |
|
2216 |
- return FALSE; |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2217 |
-} |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2218 |
- |
74 | 2219 |
-// cmd_init() |
2220 |
-// Commands table initialization |
|
2221 |
-// !!! |
|
2222 |
-// After changing commands names and it arguments names here, you must change |
|
2223 |
-// ones in init_bindings()! |
|
2224 |
-// |
|
2225 |
-void cmd_init(void) |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2226 |
-{ |
74 | 2227 |
- cmd_add("add", "Add a jabber user", COMPL_JID, 0, &do_add, NULL); |
2228 |
- cmd_add("alias", "Add an alias", 0, 0, &do_alias, NULL); |
|
2229 |
- cmd_add("authorization", "Manage subscription authorizations", |
|
2230 |
- COMPL_AUTH, COMPL_JID, &do_authorization, NULL); |
|
2231 |
- cmd_add("bind", "Add an key binding", 0, 0, &do_bind, NULL); |
|
2232 |
- cmd_add("buffer", "Manipulate current buddy's buffer (chat window)", |
|
2233 |
- COMPL_BUFFER, 0, &do_buffer, NULL); |
|
2234 |
- cmd_add("chat_disable", "Disable chat mode", 0, 0, &do_chat_disable, NULL); |
|
2235 |
- cmd_add("clear", "Clear the dialog window", 0, 0, &do_clear, NULL); |
|
2236 |
- cmd_add("color", "Set coloring options", COMPL_COLOR, 0, &do_color, NULL); |
|
2237 |
- cmd_add("connect", "Connect to the server", 0, 0, &do_connect, NULL); |
|
2238 |
- cmd_add("del", "Delete the current buddy", 0, 0, &do_del, NULL); |
|
2239 |
- cmd_add("disconnect", "Disconnect from server", 0, 0, &do_disconnect, NULL); |
|
2240 |
- cmd_add("echo", "Display a string in the log window", 0, 0, &do_echo, NULL); |
|
2241 |
- cmd_add("event", "Process an event", COMPL_EVENTSID, COMPL_EVENTS, &do_event, |
|
2242 |
- NULL); |
|
2243 |
- cmd_add("exit", "Exit mcabber", 0, 0, &do_exit, NULL); |
|
2244 |
- cmd_add("group", "Change group display settings", |
|
2245 |
- COMPL_GROUP, COMPL_GROUPNAME, &do_group, NULL); |
|
2246 |
- cmd_add("help", "Display some help", COMPL_CMD, 0, &do_help, NULL); |
|
2247 |
- cmd_add("iline", "Manipulate input buffer", 0, 0, &do_iline, NULL); |
|
2248 |
- cmd_add("info", "Show basic info on current buddy", 0, 0, &do_info, NULL); |
|
2249 |
- cmd_add("module", "Manipulations with modules", COMPL_MODULE, 0, &do_module, |
|
2250 |
- NULL); |
|
2251 |
- cmd_add("move", "Move the current buddy to another group", COMPL_GROUPNAME, |
|
2252 |
- 0, &do_move, NULL); |
|
2253 |
- cmd_add("msay", "Send a multi-lines message to the selected buddy", |
|
2254 |
- COMPL_MULTILINE, 0, &do_msay, NULL); |
|
2255 |
- cmd_add("otr", "Manage OTR settings", COMPL_OTR, COMPL_JID, &do_otr, NULL); |
|
2256 |
- cmd_add("otrpolicy", "Manage OTR policies", COMPL_JID, COMPL_OTRPOLICY, |
|
2257 |
- &do_otrpolicy, NULL); |
|
2258 |
- cmd_add("pgp", "Manage PGP settings", COMPL_PGP, COMPL_JID, &do_pgp, NULL); |
|
2259 |
- cmd_add("quit", "Exit the software", 0, 0, NULL, NULL); |
|
2260 |
- cmd_add("rawxml", "Send a raw XML string", 0, 0, &do_rawxml, NULL); |
|
2261 |
- cmd_add("rename", "Rename the current buddy", 0, 0, &do_rename, NULL); |
|
2262 |
- cmd_add("request", "Send a Jabber IQ request", COMPL_REQUEST, COMPL_JID, |
|
2263 |
- &do_request, NULL); |
|
2264 |
- cmd_add("room", "MUC actions command", COMPL_ROOM, 0, &do_room, NULL); |
|
2265 |
- cmd_add("roster", "Manipulate the roster/buddylist", COMPL_ROSTER, 0, |
|
2266 |
- &do_roster, NULL); |
|
2267 |
- cmd_add("say", "Say something to the selected buddy", 0, 0, &do_say, NULL); |
|
2268 |
- cmd_add("say_to", "Say something to a specific buddy", COMPL_JID, 0, |
|
2269 |
- &do_say_to, NULL); |
|
2270 |
- cmd_add("screen_refresh", "Redraw mcabber screen", 0, 0, &do_screen_refresh, |
|
2271 |
- NULL); |
|
2272 |
- cmd_add("set", "Set/query an option value", 0, 0, &do_set, NULL); |
|
2273 |
- cmd_add("source", "Read a configuration file", 0, 0, &do_source, NULL); |
|
2274 |
- cmd_add("status", "Show or set your status", COMPL_STATUS, 0, &do_status, |
|
2275 |
- NULL); |
|
2276 |
- cmd_add("status_to", "Show or set your status for one recipient", |
|
2277 |
- COMPL_JID, COMPL_STATUS, &do_status_to, NULL); |
|
2278 |
- cmd_add("version", "Show mcabber version", 0, 0, &do_version, NULL); |
|
2279 |
- |
|
2280 |
- cmd_set_safe("set", TRUE); |
|
2281 |
- cmd_set_safe("bind", TRUE); |
|
2282 |
- cmd_set_safe("alias", TRUE); |
|
2283 |
- cmd_set_safe("pgp", TRUE); |
|
2284 |
- cmd_set_safe("source", TRUE); |
|
2285 |
- cmd_set_safe("status", TRUE); |
|
2286 |
- cmd_set_safe("color", TRUE); |
|
2287 |
- cmd_set_safe("otrpolicy", TRUE); |
|
2288 |
- cmd_set_safe("module", TRUE); |
|
2289 |
- |
|
2290 |
- // Status category |
|
2291 |
- compl_add_category_word(COMPL_STATUS, "online"); |
|
2292 |
- compl_add_category_word(COMPL_STATUS, "avail"); |
|
2293 |
-#ifdef WITH_DEPRECATED_STATUS_INVISIBLE |
|
2294 |
- compl_add_category_word(COMPL_STATUS, "invisible"); |
|
2295 |
-#endif |
|
2296 |
- compl_add_category_word(COMPL_STATUS, "free"); |
|
2297 |
- compl_add_category_word(COMPL_STATUS, "dnd"); |
|
2298 |
- compl_add_category_word(COMPL_STATUS, "notavail"); |
|
2299 |
- compl_add_category_word(COMPL_STATUS, "away"); |
|
2300 |
- compl_add_category_word(COMPL_STATUS, "offline"); |
|
2301 |
- compl_add_category_word(COMPL_STATUS, "message"); |
|
2302 |
- |
|
2303 |
- // Roster category |
|
2304 |
- compl_add_category_word(COMPL_ROSTER, "bottom"); |
|
2305 |
- compl_add_category_word(COMPL_ROSTER, "top"); |
|
2306 |
- compl_add_category_word(COMPL_ROSTER, "up"); |
|
2307 |
- compl_add_category_word(COMPL_ROSTER, "down"); |
|
2308 |
- compl_add_category_word(COMPL_ROSTER, "group_prev"); |
|
2309 |
- compl_add_category_word(COMPL_ROSTER, "group_next"); |
|
2310 |
- compl_add_category_word(COMPL_ROSTER, "hide"); |
|
2311 |
- compl_add_category_word(COMPL_ROSTER, "show"); |
|
2312 |
- compl_add_category_word(COMPL_ROSTER, "toggle"); |
|
2313 |
- compl_add_category_word(COMPL_ROSTER, "display"); |
|
2314 |
- compl_add_category_word(COMPL_ROSTER, "hide_offline"); |
|
2315 |
- compl_add_category_word(COMPL_ROSTER, "show_offline"); |
|
2316 |
- compl_add_category_word(COMPL_ROSTER, "toggle_offline"); |
|
2317 |
- compl_add_category_word(COMPL_ROSTER, "item_lock"); |
|
2318 |
- compl_add_category_word(COMPL_ROSTER, "item_unlock"); |
|
2319 |
- compl_add_category_word(COMPL_ROSTER, "item_toggle_lock"); |
|
2320 |
- compl_add_category_word(COMPL_ROSTER, "alternate"); |
|
2321 |
- compl_add_category_word(COMPL_ROSTER, "search"); |
|
2322 |
- compl_add_category_word(COMPL_ROSTER, "unread_first"); |
|
2323 |
- compl_add_category_word(COMPL_ROSTER, "unread_next"); |
|
2324 |
- compl_add_category_word(COMPL_ROSTER, "note"); |
|
2325 |
- compl_add_category_word(COMPL_ROSTER, "resource_lock"); |
|
2326 |
- compl_add_category_word(COMPL_ROSTER, "resource_unlock"); |
|
2327 |
- |
|
2328 |
- // Buffer category |
|
2329 |
- compl_add_category_word(COMPL_BUFFER, "clear"); |
|
2330 |
- compl_add_category_word(COMPL_BUFFER, "bottom"); |
|
2331 |
- compl_add_category_word(COMPL_BUFFER, "top"); |
|
2332 |
- compl_add_category_word(COMPL_BUFFER, "up"); |
|
2333 |
- compl_add_category_word(COMPL_BUFFER, "down"); |
|
2334 |
- compl_add_category_word(COMPL_BUFFER, "search_backward"); |
|
2335 |
- compl_add_category_word(COMPL_BUFFER, "search_forward"); |
|
2336 |
- compl_add_category_word(COMPL_BUFFER, "readmark"); |
|
2337 |
- compl_add_category_word(COMPL_BUFFER, "date"); |
|
2338 |
- compl_add_category_word(COMPL_BUFFER, "%"); |
|
2339 |
- compl_add_category_word(COMPL_BUFFER, "purge"); |
|
2340 |
- compl_add_category_word(COMPL_BUFFER, "close"); |
|
2341 |
- compl_add_category_word(COMPL_BUFFER, "close_all"); |
|
2342 |
- compl_add_category_word(COMPL_BUFFER, "scroll_lock"); |
|
2343 |
- compl_add_category_word(COMPL_BUFFER, "scroll_unlock"); |
|
2344 |
- compl_add_category_word(COMPL_BUFFER, "scroll_toggle"); |
|
2345 |
- compl_add_category_word(COMPL_BUFFER, "list"); |
|
2346 |
- compl_add_category_word(COMPL_BUFFER, "save"); |
|
2347 |
- |
|
2348 |
- // Group category |
|
2349 |
- compl_add_category_word(COMPL_GROUP, "fold"); |
|
2350 |
- compl_add_category_word(COMPL_GROUP, "unfold"); |
|
2351 |
- compl_add_category_word(COMPL_GROUP, "toggle"); |
|
2352 |
- |
|
2353 |
- // Multi-line (msay) category |
|
2354 |
- compl_add_category_word(COMPL_MULTILINE, "abort"); |
|
2355 |
- compl_add_category_word(COMPL_MULTILINE, "begin"); |
|
2356 |
- compl_add_category_word(COMPL_MULTILINE, "send"); |
|
2357 |
- compl_add_category_word(COMPL_MULTILINE, "send_to"); |
|
2358 |
- compl_add_category_word(COMPL_MULTILINE, "toggle"); |
|
2359 |
- compl_add_category_word(COMPL_MULTILINE, "toggle_verbatim"); |
|
2360 |
- compl_add_category_word(COMPL_MULTILINE, "verbatim"); |
|
2361 |
- |
|
2362 |
- // Room category |
|
2363 |
- compl_add_category_word(COMPL_ROOM, "affil"); |
|
2364 |
- compl_add_category_word(COMPL_ROOM, "ban"); |
|
2365 |
- compl_add_category_word(COMPL_ROOM, "bookmark"); |
|
2366 |
- compl_add_category_word(COMPL_ROOM, "destroy"); |
|
2367 |
- compl_add_category_word(COMPL_ROOM, "invite"); |
|
2368 |
- compl_add_category_word(COMPL_ROOM, "join"); |
|
2369 |
- compl_add_category_word(COMPL_ROOM, "kick"); |
|
2370 |
- compl_add_category_word(COMPL_ROOM, "leave"); |
|
2371 |
- compl_add_category_word(COMPL_ROOM, "names"); |
|
2372 |
- compl_add_category_word(COMPL_ROOM, "nick"); |
|
2373 |
- compl_add_category_word(COMPL_ROOM, "privmsg"); |
|
2374 |
- compl_add_category_word(COMPL_ROOM, "remove"); |
|
2375 |
- compl_add_category_word(COMPL_ROOM, "role"); |
|
2376 |
- compl_add_category_word(COMPL_ROOM, "setopt"); |
|
2377 |
- compl_add_category_word(COMPL_ROOM, "topic"); |
|
2378 |
- compl_add_category_word(COMPL_ROOM, "unban"); |
|
2379 |
- compl_add_category_word(COMPL_ROOM, "unlock"); |
|
2380 |
- compl_add_category_word(COMPL_ROOM, "whois"); |
|
2381 |
- |
|
2382 |
- // Authorization category |
|
2383 |
- compl_add_category_word(COMPL_AUTH, "allow"); |
|
2384 |
- compl_add_category_word(COMPL_AUTH, "cancel"); |
|
2385 |
- compl_add_category_word(COMPL_AUTH, "request"); |
|
2386 |
- compl_add_category_word(COMPL_AUTH, "request_unsubscribe"); |
|
2387 |
- |
|
2388 |
- // Request (query) category |
|
2389 |
- compl_add_category_word(COMPL_REQUEST, "last"); |
|
2390 |
- compl_add_category_word(COMPL_REQUEST, "ping"); |
|
2391 |
- compl_add_category_word(COMPL_REQUEST, "time"); |
|
2392 |
- compl_add_category_word(COMPL_REQUEST, "vcard"); |
|
2393 |
- compl_add_category_word(COMPL_REQUEST, "version"); |
|
2394 |
- |
|
2395 |
- // Events category |
|
2396 |
- compl_add_category_word(COMPL_EVENTS, "accept"); |
|
2397 |
- compl_add_category_word(COMPL_EVENTS, "ignore"); |
|
2398 |
- compl_add_category_word(COMPL_EVENTS, "reject"); |
|
2399 |
- |
|
2400 |
- // PGP category |
|
2401 |
- compl_add_category_word(COMPL_PGP, "disable"); |
|
2402 |
- compl_add_category_word(COMPL_PGP, "enable"); |
|
2403 |
- compl_add_category_word(COMPL_PGP, "force"); |
|
2404 |
- compl_add_category_word(COMPL_PGP, "info"); |
|
2405 |
- compl_add_category_word(COMPL_PGP, "setkey"); |
|
2406 |
- |
|
2407 |
- // OTR category |
|
2408 |
- compl_add_category_word(COMPL_OTR, "start"); |
|
2409 |
- compl_add_category_word(COMPL_OTR, "stop"); |
|
2410 |
- compl_add_category_word(COMPL_OTR, "fingerprint"); |
|
2411 |
- compl_add_category_word(COMPL_OTR, "smpq"); |
|
2412 |
- compl_add_category_word(COMPL_OTR, "smpr"); |
|
2413 |
- compl_add_category_word(COMPL_OTR, "smpa"); |
|
2414 |
- compl_add_category_word(COMPL_OTR, "info"); |
|
2415 |
- compl_add_category_word(COMPL_OTR, "key"); |
|
2416 |
- |
|
2417 |
- // OTR Policy category |
|
2418 |
- compl_add_category_word(COMPL_OTRPOLICY, "plain"); |
|
2419 |
- compl_add_category_word(COMPL_OTRPOLICY, "manual"); |
|
2420 |
- compl_add_category_word(COMPL_OTRPOLICY, "opportunistic"); |
|
2421 |
- compl_add_category_word(COMPL_OTRPOLICY, "always"); |
|
2422 |
- |
|
2423 |
- // Color category |
|
2424 |
- compl_add_category_word(COMPL_COLOR, "roster"); |
|
2425 |
- compl_add_category_word(COMPL_COLOR, "muc"); |
|
2426 |
- compl_add_category_word(COMPL_COLOR, "mucnick"); |
|
2427 |
- |
|
2428 |
-#ifdef MODULES_ENABLE |
|
2429 |
- // Module category |
|
2430 |
- compl_add_category_word(COMPL_MODULE, "info"); |
|
2431 |
- compl_add_category_word(COMPL_MODULE, "list"); |
|
2432 |
- compl_add_category_word(COMPL_MODULE, "load"); |
|
2433 |
- compl_add_category_word(COMPL_MODULE, "unload"); |
|
2434 |
-#endif |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2435 |
-} |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2436 |
- |
74 | 2437 |
-// expandalias(line) |
2438 |
-// If there is one, expand the alias in line and returns a new allocated line |
|
2439 |
-// If no alias is found, returns line |
|
2440 |
-// Note: if the returned pointer is different from line, the caller should |
|
2441 |
-// g_free() the pointer after use |
|
2442 |
-char *expandalias(const char *line) |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2443 |
-{ |
74 | 2444 |
- const char *p1, *p2; |
2445 |
- char *word; |
|
2446 |
- const gchar *value; |
|
2447 |
- char *newline = (char*)line; |
|
2448 |
- |
|
2449 |
- // Ignore leading COMMAND_CHAR |
|
2450 |
- for (p1 = line ; *p1 == COMMAND_CHAR ; p1++) |
|
2451 |
- ; |
|
2452 |
- // Locate the end of the word |
|
2453 |
- for (p2 = p1 ; *p2 && (*p2 != ' ') ; p2++) |
|
2454 |
- ; |
|
2455 |
- // Extract the word and look for an alias in the list |
|
2456 |
- word = g_strndup(p1, p2-p1); |
|
2457 |
- value = settings_get(SETTINGS_TYPE_ALIAS, (const char*)word); |
|
2458 |
- g_free(word); |
|
2459 |
- |
|
2460 |
- if (value) |
|
2461 |
- newline = g_strdup_printf("%c%s%s", COMMAND_CHAR, value, p2); |
|
2462 |
- |
|
2463 |
- return newline; |
|
2464 |
-} |
|
2465 |
- |
|
2466 |
-// cmd_get |
|
2467 |
-// Finds command in the command list structure. |
|
2468 |
-// Returns a pointer to the cmd entry, or NULL if command not found. |
|
2469 |
-cmd *cmd_get(const char *command) |
|
2470 |
-{ |
|
2471 |
- const char *p1, *p2; |
|
2472 |
- char *com; |
|
2473 |
- GSList *sl_com; |
|
2474 |
- |
|
2475 |
- // Ignore leading COMMAND_CHAR |
|
2476 |
- for (p1 = command ; *p1 == COMMAND_CHAR ; p1++) |
|
2477 |
- ; |
|
2478 |
- // Locate the end of the command |
|
2479 |
- for (p2 = p1 ; *p2 && (*p2 != ' ') ; p2++) |
|
2480 |
- ; |
|
2481 |
- // Copy the clean command |
|
2482 |
- com = g_strndup(p1, p2-p1); |
|
2483 |
- |
|
2484 |
- // Look for command in the list |
|
2485 |
- for (sl_com=Commands; sl_com; sl_com = g_slist_next(sl_com)) { |
|
2486 |
- if (!strcasecmp(com, ((cmd*)sl_com->data)->name)) |
|
2487 |
- break; |
|
2488 |
- } |
|
2489 |
- g_free(com); |
|
2490 |
- |
|
2491 |
- if (sl_com) // Command has been found. |
|
2492 |
- return (cmd*)sl_com->data; |
|
2493 |
- return NULL; |
|
2494 |
-} |
|
2495 |
- |
|
2496 |
-// process_command(line, iscmd) |
|
2497 |
-// Process a command line. |
|
2498 |
-// If iscmd is TRUE, process the command even if verbatim mmode is set; |
|
2499 |
-// it is intended to be used for key bindings. |
|
2500 |
-// Return 255 if this is the /quit command, and 0 for the other commands. |
|
2501 |
-int process_command(const char *line, guint iscmd) |
|
2502 |
-{ |
|
2503 |
- char *p; |
|
2504 |
- char *xpline; |
|
2505 |
- cmd *curcmd; |
|
2506 |
- |
|
2507 |
- if (!line) |
|
2508 |
- return 0; |
|
2509 |
- |
|
2510 |
- // We do alias expansion here |
|
2511 |
- if (iscmd || scr_get_multimode() != 2) |
|
2512 |
- xpline = expandalias(line); |
|
2513 |
- else |
|
2514 |
- xpline = (char*)line; // No expansion in verbatim multi-line mode |
|
2515 |
- |
|
2516 |
- // We want to use a copy |
|
2517 |
- if (xpline == line) |
|
2518 |
- xpline = g_strdup(line); |
|
2519 |
- |
|
2520 |
- // Remove trailing spaces: |
|
2521 |
- for (p=xpline ; *p ; p++) |
|
2522 |
- ; |
|
2523 |
- for (p-- ; p>xpline && (*p == ' ') ; p--) |
|
2524 |
- *p = 0; |
|
2525 |
- |
|
2526 |
- // Command "quit"? |
|
2527 |
- if ((iscmd || scr_get_multimode() != 2) |
|
2528 |
- && (!strncasecmp(xpline, mkcmdstr("quit"), strlen(mkcmdstr("quit"))))) { |
|
2529 |
- if (!xpline[5] || xpline[5] == ' ') { |
|
2530 |
- g_free(xpline); |
|
2531 |
- return 255; |
|
2532 |
- } |
|
2533 |
- } else if (iscmd && !strncasecmp(xpline, "quit", 4) && |
|
2534 |
- (!xpline[4] || xpline[4] == ' ')) { |
|
2535 |
- // If iscmd is true we can have the command without the command prefix |
|
2536 |
- // character (usually '/'). |
|
2537 |
- g_free(xpline); |
|
2538 |
- return 255; |
|
2539 |
- } |
|
2540 |
- |
|
2541 |
- // If verbatim multi-line mode, we check if another /msay command is typed |
|
2542 |
- if (!iscmd && scr_get_multimode() == 2 |
|
2543 |
- && (strncasecmp(xpline, mkcmdstr("msay "), strlen(mkcmdstr("msay "))))) { |
|
2544 |
- // It isn't an /msay command |
|
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
2545 |
- scr_append_multiline(xpline); |
74 | 2546 |
- g_free(xpline); |
2547 |
- return 0; |
|
2548 |
- } |
|
2549 |
- |
|
2550 |
- // Commands handling |
|
2551 |
- curcmd = cmd_get(xpline); |
|
2552 |
- |
|
2553 |
- if (!curcmd) { |
|
2554 |
- scr_LogPrint(LPRINT_NORMAL, "Unrecognized command. " |
|
2555 |
- "Please see the manual for a list of known commands."); |
|
2556 |
- g_free(xpline); |
|
2557 |
- return 0; |
|
2558 |
- } |
|
2559 |
- if (!curcmd->func) { |
|
2560 |
- scr_LogPrint(LPRINT_NORMAL, |
|
2561 |
- "This functionality is not yet implemented, sorry."); |
|
2562 |
- g_free(xpline); |
|
2563 |
- return 0; |
|
2564 |
- } |
|
2565 |
- // Lets go to the command parameters |
|
2566 |
- for (p = xpline+1; *p && (*p != ' ') ; p++) |
|
2567 |
- ; |
|
2568 |
- // Skip spaces |
|
2569 |
- while (*p && (*p == ' ')) |
|
2570 |
- p++; |
|
2571 |
- // Call command-specific function |
|
2572 |
- retval_for_cmds = 0; |
|
2573 |
-#ifdef MODULES_ENABLE |
|
2574 |
- if (curcmd->userdata) |
|
2575 |
- (*(void (*)(char *p, gpointer u))curcmd->func)(p, curcmd->userdata); |
|
2576 |
- else |
|
2577 |
- (*curcmd->func)(p); |
|
2578 |
-#else |
|
2579 |
- (*curcmd->func)(p); |
|
2580 |
-#endif |
|
2581 |
- g_free(xpline); |
|
2582 |
- return retval_for_cmds; |
|
2583 |
-} |
|
2584 |
- |
|
2585 |
-// process_line(line) |
|
2586 |
-// Process a command/message line. |
|
2587 |
-// If this isn't a command, this is a message and it is sent to the |
|
2588 |
-// currently selected buddy. |
|
2589 |
-// Return 255 if the line is the /quit command, or 0. |
|
2590 |
-int process_line(const char *line) |
|
2591 |
-{ |
|
2592 |
+ gchar *utf8; |
|
2593 |
+ int retval; |
|
2594 |
+ |
|
2595 |
if (!*line) { // User only pressed enter |
|
2596 |
if (scr_get_multimode()) { |
|
2597 |
scr_append_multiline(""); |
|
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2598 |
@@ -556,141 +724,706 @@ |
74 | 2599 |
} |
2600 |
if (current_buddy) { |
|
2601 |
if (buddy_gettype(BUDDATA(current_buddy)) & ROSTER_TYPE_GROUP) |
|
2602 |
- do_group("toggle"); |
|
2603 |
+ group_cmd (BUDDATA(current_buddy), scmd_group_toggle); |
|
2604 |
else { |
|
2605 |
// Enter chat mode |
|
2606 |
scr_set_chatmode(TRUE); |
|
2607 |
scr_show_buddy_window(); |
|
2608 |
} |
|
2609 |
} |
|
2610 |
- return 0; |
|
2611 |
+ return cmd_result_input; |
|
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
2612 |
} |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
2613 |
|
74 | 2614 |
- if (*line != COMMAND_CHAR) { |
2615 |
- // This isn't a command |
|
2616 |
+ utf8 = to_utf8(line); |
|
2617 |
+ if (*line != COMMAND_CHAR) { // input line |
|
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
2618 |
if (scr_get_multimode()) |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
2619 |
- scr_append_multiline(line); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
2620 |
+ scr_append_multiline(utf8); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
2621 |
else |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
2622 |
- say_cmd((char*)line, 0); |
74 | 2623 |
- return 0; |
2624 |
- } |
|
2625 |
- |
|
2626 |
- /* It is _probably_ a command -- except for verbatim multi-line mode */ |
|
2627 |
- return process_command(line, FALSE); |
|
2628 |
-} |
|
2629 |
- |
|
2630 |
-// Helper routine for buffer item_{lock,unlock,toggle_lock} |
|
2631 |
-// "lock" values: 1=lock 0=unlock -1=invert |
|
2632 |
-static void roster_buddylock(char *bjid, int lock) |
|
2633 |
-{ |
|
2634 |
- gpointer bud = NULL; |
|
2635 |
- bool may_need_refresh = FALSE; |
|
2636 |
- |
|
2637 |
- // Allow special jid "" or "." (current buddy) |
|
2638 |
- if (bjid && (!*bjid || !strcmp(bjid, "."))) |
|
2639 |
- bjid = NULL; |
|
2640 |
- |
|
2641 |
- if (bjid) { |
|
2642 |
- // The JID has been specified. Quick check... |
|
2643 |
- if (check_jid_syntax(bjid)) { |
|
2644 |
- scr_LogPrint(LPRINT_NORMAL|LPRINT_NOTUTF8, |
|
2645 |
- "<%s> is not a valid Jabber ID.", bjid); |
|
2646 |
- } else { |
|
2647 |
- // Find the buddy |
|
2648 |
- GSList *roster_elt; |
|
2649 |
- roster_elt = roster_find(bjid, jidsearch, |
|
2650 |
- ROSTER_TYPE_USER|ROSTER_TYPE_ROOM); |
|
2651 |
- if (roster_elt) |
|
2652 |
- bud = roster_elt->data; |
|
2653 |
- else |
|
2654 |
- scr_LogPrint(LPRINT_NORMAL, "This jid isn't in the roster."); |
|
2655 |
- may_need_refresh = TRUE; |
|
2656 |
- } |
|
2657 |
- } else { |
|
2658 |
- // Use the current buddy |
|
2659 |
- if (current_buddy) |
|
2660 |
- bud = BUDDATA(current_buddy); |
|
2661 |
- } |
|
2662 |
- |
|
2663 |
- // Update the ROSTER_FLAG_USRLOCK flag |
|
2664 |
- if (bud) { |
|
2665 |
- if (lock == -1) |
|
2666 |
- lock = !(buddy_getflags(bud) & ROSTER_FLAG_USRLOCK); |
|
2667 |
- buddy_setflags(bud, ROSTER_FLAG_USRLOCK, lock); |
|
2668 |
- if (may_need_refresh) { |
|
2669 |
- buddylist_build(); |
|
2670 |
- update_roster = TRUE; |
|
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
2671 |
+ say_cmd(utf8, msgtype_not_set); |
74 | 2672 |
+ retval = 0; |
2673 |
+ } else { // command or verbatim multiline message |
|
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
2674 |
+ retval = cmd_execute (utf8, cmdexe_check_verbatim); |
74 | 2675 |
+ if (retval == cmd_result_verbatim) { |
2676 |
+ g_free(utf8); // buffer has been corrupted by parser |
|
2677 |
+ utf8 = to_utf8(line); |
|
2678 |
+ scr_append_multiline(utf8); |
|
2679 |
+ retval = cmd_result_input; |
|
2680 |
} |
|
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
2681 |
} |
74 | 2682 |
+ g_free(utf8); |
2683 |
+ |
|
2684 |
+ return retval; |
|
2685 |
} |
|
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
2686 |
|
74 | 2687 |
-static void roster_resourcelock(char *jidres, gboolean lock) { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2688 |
- gpointer bud = NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2689 |
- char *resource = NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2690 |
- |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2691 |
- if (!jidres) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2692 |
- if (lock) return; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2693 |
- jidres = "."; |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2694 |
- } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2695 |
- |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2696 |
- if (jidres[0] == '.' && |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2697 |
- (jidres[1] == '\0' || jidres[1] == JID_RESOURCE_SEPARATOR)) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2698 |
- //Special jid: . or ./resource |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2699 |
- switch (jidres[1]) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2700 |
- case JID_RESOURCE_SEPARATOR: |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2701 |
- resource = jidres+2; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2702 |
- case '\0': |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2703 |
- if (current_buddy) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2704 |
- bud = BUDDATA(current_buddy); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2705 |
- } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2706 |
- } else { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2707 |
- char *tmp; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2708 |
- if (!check_jid_syntax(jidres) && |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2709 |
- (tmp = strchr(jidres, JID_RESOURCE_SEPARATOR))) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2710 |
- //Any other valid full jid |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2711 |
- *tmp = '\0'; // for roster search by bare jid; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2712 |
- resource = tmp+1; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2713 |
- GSList *roster_elt; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2714 |
- roster_elt = roster_find(jidres, jidsearch, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2715 |
- ROSTER_TYPE_USER|ROSTER_TYPE_AGENT); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2716 |
- if (roster_elt) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2717 |
- bud = roster_elt->data; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2718 |
- *tmp = JID_RESOURCE_SEPARATOR; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2719 |
- } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2720 |
- if (!bud) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2721 |
- //Resource for current buddy |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2722 |
- if (current_buddy) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2723 |
- bud = BUDDATA(current_buddy); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2724 |
- resource = jidres; |
74 | 2725 |
+// |
2726 |
+// Standard types |
|
2727 |
+// |
|
2728 |
+// This section contains standard argument type definitions, used in built-in |
|
2729 |
+// mcabber commands. |
|
2730 |
+// |
|
2731 |
+ |
|
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
2732 |
+// TODO: move to separate file? (and variations with 'required') |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2733 |
+// + cmdarg_type_buddy - in roster, with specified types, resource/activeresource/group -> bud + (resource) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2734 |
+// + cmdarg_type_resource - in roster, with specified types, have resource -> bud + resource |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
2735 |
+// + cmdarg_type_bjid - any bjid -> bjid |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2736 |
+// + cmdarg_type_fjid - any fjid -> fjid |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2737 |
+// + cmdarg_type_charset - string -> string |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2738 |
+// + cmdarg_type_uint - string -> unsigned long |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2739 |
+// + cmdarg_type_sint - string -> signed long (unused) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2740 |
+// + cmdarg_type_nonspace - strip, space only -> null |
74 | 2741 |
+// * cmdarg_type_bjidmask |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2742 |
+// + cmdarg_type_color |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2743 |
+// + cmdarg_type_string2enum |
74 | 2744 |
+// * cmdarg_type_nick - provide completions first from current room, then from all other, nonspace, do not restrict |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
2745 |
+// + cmdarg_type_filename - expand, convert encoding |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
2746 |
+// + cmdarg_type_date - YYYYMMDDTHHMMSS -> time_t |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2747 |
+// * cmdarg_type_assignment - string -> key + value |
74 | 2748 |
+ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2749 |
+// |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
2750 |
+// command environment checkers |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
2751 |
+// |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
2752 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
2753 |
+gchar *cmd_check_online (const cmdopts_t *command, cmdarg_value_t *values) |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
2754 |
+{ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
2755 |
+ if (!xmpp_is_online()) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
2756 |
+ return g_strdup ("You are not connected!"); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
2757 |
+ return NULL; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
2758 |
+} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
2759 |
+ |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
2760 |
+gchar *cmd_check_current_buddy (const cmdopts_t *command, cmdarg_value_t *values) |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
2761 |
+{ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
2762 |
+ if (!current_buddy) |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
2763 |
+ return g_strdup ("No selected buddy!"); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
2764 |
+ return NULL; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
2765 |
+} |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
2766 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
2767 |
+// |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
2768 |
+// generic value destructors |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
2769 |
+// |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
2770 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
2771 |
+void cmdarg_free_gfree (cmdarg_value_t *arg) |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
2772 |
+{ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
2773 |
+ g_free (arg -> value.arg); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
2774 |
+} |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
2775 |
+ |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
2776 |
+// |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2777 |
+// string -> stripspace string |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2778 |
+// |
74 | 2779 |
+ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2780 |
+// Strips leading and trailing spaces, checks if anything left. |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2781 |
+// defvalue: no trailing spaces. |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2782 |
+gchar *cmdarg_check_nonspace (cmdarg_value_t *arg) |
74 | 2783 |
+{ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2784 |
+ gchar *val = arg -> value.arg; |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2785 |
+ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2786 |
+ if (val) { |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2787 |
+ while (isspace (*val)) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2788 |
+ val ++; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2789 |
+ if (*val) { // valid arg |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2790 |
+ arg -> value.arg = val; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2791 |
+ while (*val) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2792 |
+ val ++; |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2793 |
+ while (isspace (*val)) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2794 |
+ val --; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2795 |
+ val ++; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2796 |
+ if (*val) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2797 |
+ *val = '\0'; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2798 |
+ return NULL; |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2799 |
} |
74 | 2800 |
} |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2801 |
- |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2802 |
- if (bud && buddy_gettype(bud) & (ROSTER_TYPE_USER|ROSTER_TYPE_AGENT)) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2803 |
- if (lock) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2804 |
- GSList *resources, *p_res; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2805 |
- gboolean found = FALSE; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2806 |
- resources = buddy_getresources(bud); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2807 |
- for (p_res = resources ; p_res ; p_res = g_slist_next(p_res)) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2808 |
- if (!g_strcmp0((char*)p_res->data, resource)) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2809 |
- found = TRUE; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2810 |
- g_free(p_res->data); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2811 |
+ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2812 |
+ // error |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2813 |
+ arg -> value.arg = NULL; |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2814 |
+ return g_strdup ("Non-space value required."); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2815 |
+} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2816 |
+ |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
2817 |
+const cmdarg_type_t cmdarg_type_nonspace = { |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2818 |
+ cmdarg_check_nonspace, |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2819 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2820 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2821 |
+}; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2822 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2823 |
+// |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2824 |
+// roster name/jid -> bud + resource |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2825 |
+// |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2826 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2827 |
+// chkdata: cmdarg_roster_t |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2828 |
+// returns: value.rjid |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2829 |
+// defvalue: no "user@[/res]", no "jid/resource" |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2830 |
+// XXX: activeres/group stuff can easily go to separate checkers |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2831 |
+// |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2832 |
+// Flags: |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2833 |
+// - name |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2834 |
+// - activeres |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2835 |
+// - getgroup |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2836 |
+// |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2837 |
+// name: |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2838 |
+// 1. . -> bud |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2839 |
+// 1. name -> bud |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2840 |
+// 2. bud -> bud/activeres |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2841 |
+// 2. bud -> groupbud |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2842 |
+// jid: |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2843 |
+// 1. user@[/res] -> jid[/res] |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2844 |
+// 2. jid[/res] -> checkjid[/res] |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2845 |
+// 3. checkjid[/res] -> bud[/res] |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2846 |
+// 3. .[/res] -> bud[/res] |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2847 |
+// 4. bud -> groupbud |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2848 |
+// 4. bud -> bud/activeres |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2849 |
+// 4. bud/res -> bud/checkres |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2850 |
+gchar *cmdarg_check_buddy (cmdarg_value_t *arg) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2851 |
+{ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2852 |
+ gchar *error = NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2853 |
+ gpointer bud = NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2854 |
+ char *resource = NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2855 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2856 |
+ if (!(error = cmdarg_check_nonspace(arg))) { |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
2857 |
+ char *fjid = arg -> value.arg; |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2858 |
+ const cmdarg_roster_t flags = (guint) arg -> src -> chkdata; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2859 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2860 |
+ // it is name |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2861 |
+ if (flags & cmdarg_roster_name) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2862 |
+ if (!(fjid[0] == '.' && fjid[1] == '\0')) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2863 |
+ GSList *found = roster_find (fjid, namesearch, flags & cmdarg_roster_mask); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2864 |
+ if (found) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2865 |
+ bud = found->data; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2866 |
+ } else { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2867 |
+ error = g_strdup_printf ("Name \"%s\" is not in the roster.", fjid); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2868 |
+ } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2869 |
} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2870 |
- g_slist_free(resources); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2871 |
- if (!found) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2872 |
- scr_LogPrint(LPRINT_NORMAL, "No such resource <%s>...", jidres); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2873 |
- return; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2874 |
+ } else if (fjid[0] == '.' && (fjid[1] == JID_RESOURCE_SEPARATOR || fjid[1] == '\0')) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2875 |
+ // current buddy/jid |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2876 |
+ if (fjid[1] == JID_RESOURCE_SEPARATOR) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2877 |
+ resource = fjid+2; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2878 |
+ } else { // plain jid |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2879 |
+ const char *server = settings_opt_get ("default_server"); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2880 |
+ gchar *freeme = NULL; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2881 |
+ // exand @-expression |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2882 |
+ if (server != NULL) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2883 |
+ char *domain = strchr (fjid, JID_DOMAIN_SEPARATOR); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2884 |
+ if (domain && (domain[1] == JID_RESOURCE_SEPARATOR || domain[1] == '\0')) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2885 |
+ if (domain[1] == JID_RESOURCE_SEPARATOR) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2886 |
+ // use resource from original value |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2887 |
+ resource = domain + 2; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2888 |
+ *domain = '\0'; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2889 |
+ freeme = fjid = g_strdup_printf ("%s" JID_DOMAIN_SEPARATORSTR "%s%s", fjid, server, domain + 1); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2890 |
+ } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2891 |
+ } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2892 |
+ if (!check_jid_syntax (fjid)) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2893 |
+ // jid is valid - search for buddy |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2894 |
+ GSList *found; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2895 |
+ char *res = strchr (fjid, JID_RESOURCE_SEPARATOR); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2896 |
+ if (res != NULL) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2897 |
+ *res = '\0'; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2898 |
+ if (resource == NULL) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2899 |
+ resource = res + 1; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2900 |
+ } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2901 |
+ } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2902 |
+ found = roster_find (fjid, jidsearch, flags & cmdarg_roster_mask); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2903 |
+ if (found) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2904 |
+ bud = found->data; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2905 |
+ } else { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2906 |
+ error = g_strdup_printf ("Jid <%s> is not in the roster.", fjid); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2907 |
+ } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2908 |
+ } else { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2909 |
+ error = g_strdup_printf ("<%s> is not a valid jid.", fjid); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2910 |
+ } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2911 |
+ g_free (freeme); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2912 |
+ } |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2913 |
+ } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2914 |
+ // fjid should not be used anymore! |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2915 |
+ if (error == NULL) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2916 |
+ if (bud == NULL) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2917 |
+ // it is current buddy |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2918 |
+ if (!current_buddy) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2919 |
+ error = g_strdup ("No buddy selected."); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2920 |
+ else if (buddy_gettype (BUDDATA(current_buddy)) & (flags & cmdarg_roster_mask)) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2921 |
+ bud = BUDDATA(current_buddy); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2922 |
+ else // TODO: improve message |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2923 |
+ error = g_strdup("Currently selected buddy is of wrong type."); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2924 |
+ } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2925 |
+ if (error == NULL) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2926 |
+ if (resource == NULL) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2927 |
+ // no resource given - set active resource |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2928 |
+ if (flags & cmdarg_roster_getgroup) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2929 |
+ bud = buddy_getgroup (bud); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2930 |
+ } else if (error == NULL && (flags & cmdarg_roster_activeres)) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2931 |
+ resource = buddy_getactiveresource (bud); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2932 |
+ } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2933 |
+ } else { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2934 |
+ // check resource presence |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2935 |
+ GSList *resources, *p_res; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2936 |
+ gboolean found = FALSE; |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2937 |
+ resources = buddy_getresources (bud); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2938 |
+ for (p_res = resources; p_res; p_res = g_slist_next(p_res)) { |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2939 |
+ if (!g_strcmp0 ((char*)p_res->data, resource)) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2940 |
+ found = TRUE; |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2941 |
+ g_free (p_res->data); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2942 |
+ } |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2943 |
+ g_slist_free (resources); |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2944 |
+ if (!found) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2945 |
+ error = g_strdup_printf ("No such resource <%s" JID_RESOURCE_SEPARATORSTR "%s>...", buddy_getjid(bud), resource); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2946 |
+ } |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
2947 |
+ } |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2948 |
+ } |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2949 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2950 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2951 |
+ if (error) { |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2952 |
+ arg -> value.rjid.bud = NULL; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2953 |
+ arg -> value.rjid.resource = NULL; |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2954 |
+ } else { |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2955 |
+ arg -> value.rjid.bud = bud; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2956 |
+ arg -> value.rjid.resource = resource; |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2957 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2958 |
+ return error; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2959 |
+} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2960 |
+ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2961 |
+const cmdarg_type_t cmdarg_type_buddy = { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2962 |
+ cmdarg_check_buddy, |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
2963 |
+ NULL, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
2964 |
+ NULL, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
2965 |
+}; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
2966 |
+ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
2967 |
+// |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2968 |
+// fjid -> fjid |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2969 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2970 |
+ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2971 |
+// chkdata: 0 or types for current buddy checking. |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2972 |
+// returns: expanded fjid in value.arg. |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2973 |
+// defvalue: no "user@" or "user@/res". |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2974 |
+// freeing: sometimes g_free. |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2975 |
+// Recognizes as current "." and "./res". |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2976 |
+// Expands "user@" and "user@/res", using default_server. |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2977 |
+gchar *cmdarg_check_fjid (cmdarg_value_t *arg) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2978 |
+{ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2979 |
+ gchar *error = NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2980 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2981 |
+ if (!(error = cmdarg_check_nonspace(arg))) { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2982 |
+ const char *fjid = arg -> value.arg; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2983 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2984 |
+ if (fjid[0] == '.' && (fjid[1] == JID_RESOURCE_SEPARATOR || fjid[1] == '\0')) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2985 |
+ const char *jid; |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2986 |
+ const cmdarg_roster_t types = (cmdarg_roster_t) (arg -> src -> userdata); |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2987 |
+ if (!current_buddy) { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2988 |
+ error = g_strdup_printf ("No buddy selected."); |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2989 |
+ } else if ((types != 0) && !(buddy_gettype(BUDDATA(current_buddy)) & (types & cmdarg_roster_mask))) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2990 |
+ error = g_strdup ("Current buddy is of wrong type."); |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2991 |
+ } else if (!(jid = buddy_getjid(BUDDATA(current_buddy)))) { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2992 |
+ error = g_strdup_printf ("Current buddy have no jid."); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2993 |
+ } else if (fjid[1] == '\0') { |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2994 |
+ arg -> value.roarg = jid; |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2995 |
+ } else { |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2996 |
+ arg -> value.arg = g_strdup_printf ("%s" JID_RESOURCE_SEPARATORSTR "%s", |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
2997 |
+ jid, fjid + 2); |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
2998 |
+ arg -> flags |= cmdval_freeme; |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
2999 |
} |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3000 |
} else { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3001 |
- resource = NULL; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3002 |
+ const char *server = settings_opt_get ("default_server"); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3003 |
+ if (server != NULL) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3004 |
+ const char *end; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3005 |
+ if ((end = strchr (fjid, JID_DOMAIN_SEPARATOR))) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3006 |
+ end ++; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3007 |
+ if (*end == '\0' || *end == JID_RESOURCE_SEPARATOR) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3008 |
+ *(end - 1) = '\0'; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3009 |
+ arg -> value.arg = g_strdup_printf ("%s" JID_DOMAIN_SEPARATORSTR |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3010 |
+ "%s%s", fjid, server, end); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3011 |
+ arg -> flags |= cmdval_freeme; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3012 |
+ } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3013 |
+ } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3014 |
+ } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3015 |
+ if (check_jid_syntax(fjid)) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3016 |
+ error = g_strdup_printf ("Jid <%s> is invalid.", fjid); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3017 |
} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3018 |
- buddy_setactiveresource(bud, resource); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3019 |
- scr_update_chat_status(TRUE); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3020 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3021 |
+ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3022 |
+ if (error) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3023 |
+ if (arg -> flags & cmdval_freeme) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3024 |
+ g_free (arg -> value.arg); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3025 |
+ arg -> value.arg = NULL; |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3026 |
+ } |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3027 |
+ return error; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3028 |
+} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3029 |
+ |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3030 |
+const cmdarg_type_t cmdarg_type_fjid = { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3031 |
+ cmdarg_check_fjid, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3032 |
+ cmdarg_free_gfree, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3033 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3034 |
+}; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3035 |
+ |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3036 |
+// |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3037 |
+// fjid -> bjid |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3038 |
+// |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3039 |
+ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3040 |
+// chkdata: 0 or types for current buddy checking. |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3041 |
+// returns: expanded bjid in value.arg. |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3042 |
+// defvalue: no "user@", "user@/res" or "jid/res". |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3043 |
+// freeing: sometimes g_free. |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3044 |
+// Recognizes as current "." and "./res" (but still removes resource). |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3045 |
+// Expands "user@" and "user@/res", using default_server. |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3046 |
+gchar *cmdarg_check_bjid (cmdarg_value_t *arg) |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3047 |
+{ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3048 |
+ gchar *error = NULL; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3049 |
+ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3050 |
+ if (!(error = cmdarg_check_fjid(arg))) { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3051 |
+ gchar *res = strchr (arg -> value.arg, JID_RESOURCE_SEPARATOR); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3052 |
+ if (res != NULL) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3053 |
+ *res = '\0'; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3054 |
+ } |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3055 |
+ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3056 |
+ if (error) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3057 |
+ arg -> value.arg = NULL; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3058 |
+ return error; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3059 |
+} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3060 |
+ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3061 |
+const cmdarg_type_t cmdarg_type_bjid = { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3062 |
+ cmdarg_check_bjid, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3063 |
+ cmdarg_free_gfree, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3064 |
+ NULL, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3065 |
+}; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3066 |
+ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3067 |
+// |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3068 |
+// string -> unsigned long |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3069 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3070 |
+ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3071 |
+// chkdata: 0 or maximum value. |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3072 |
+// returns: unsigned long in value.uint. |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3073 |
+gchar *cmdarg_check_uint (cmdarg_value_t *arg) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3074 |
+{ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3075 |
+ gchar *error; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3076 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3077 |
+ if (!(error = cmdarg_check_nonspace(arg))) { |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3078 |
+ char *s = arg -> value.arg; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3079 |
+ char *e = s; |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3080 |
+ unsigned long m = (unsigned long) (arg -> src -> chkdata); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3081 |
+ unsigned long n = strtoul (s, &e, 0); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3082 |
+ if (*e != '\0') |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3083 |
+ error = g_strdup_printf ("Invalid number \"%s\".", s); |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3084 |
+ else if (m > 0 && n > m) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3085 |
+ error = g_strdup_printf ("Value %lu is too big (max %lu).", n, m); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3086 |
+ else |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3087 |
+ arg -> value.uint = n; |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3088 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3089 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3090 |
+ if (error) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3091 |
+ arg -> value.uint = 0; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3092 |
+ return error; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3093 |
+} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3094 |
+ |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3095 |
+const cmdarg_type_t cmdarg_type_uint = { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3096 |
+ cmdarg_check_uint, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3097 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3098 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3099 |
+}; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3100 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3101 |
+// |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3102 |
+// string -> signed long |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3103 |
+// |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3104 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3105 |
+// chkdata: 0 or maximum/minimum +/- value. |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3106 |
+// returns: long in value.sint. |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3107 |
+gchar *cmdarg_check_sint (cmdarg_value_t *arg) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3108 |
+{ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3109 |
+ gchar *error; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3110 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3111 |
+ if (!(error = cmdarg_check_nonspace(arg))) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3112 |
+ char *s = arg -> value.arg; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3113 |
+ char *e = s; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3114 |
+ long m = (long) (arg -> src -> chkdata); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3115 |
+ long n = strtol (s, &e, 0); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3116 |
+ if (*e != '\0') |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3117 |
+ error = g_strdup_printf ("Invalid number \"%s\".", s); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3118 |
+ else if (m > 0 && n > m) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3119 |
+ error = g_strdup_printf ("Value %lu is too big (max %lu).", n, m); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3120 |
+ else if (m > 0 && n < -m) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3121 |
+ error = g_strdup_printf ("Value %lu is too small (min %lu).", n, -m); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3122 |
+ else |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3123 |
+ arg -> value.sint = n; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3124 |
+ } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3125 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3126 |
+ if (error) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3127 |
+ arg -> value.sint = 0; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3128 |
+ return error; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3129 |
+} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3130 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3131 |
+const cmdarg_type_t cmdarg_type_sint = { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3132 |
+ cmdarg_check_sint, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3133 |
+ NULL, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3134 |
+ NULL, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3135 |
+}; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3136 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3137 |
+// |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3138 |
+// string -> set of valid chars |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3139 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3140 |
+ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3141 |
+// chkdata: string of valid characters. |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3142 |
+// returns: stripped of invalid characters value in value.arg. |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3143 |
+// Expands "*" to full set of valid characters. |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3144 |
+// defvalue: no invalid characters. |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3145 |
+// XXX: |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3146 |
+// * check duplicated characters - string2flags? |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3147 |
+// * sort & canonicalize - string2enum? |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3148 |
+gchar *cmdarg_check_charset (cmdarg_value_t *arg) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3149 |
+{ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3150 |
+ gchar *error; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3151 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3152 |
+ if (!(error = cmdarg_check_nonspace(arg)) && arg -> value.arg) { |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3153 |
+ const char *valid = arg -> src -> chkdata; |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3154 |
+ if (!strcmp(arg -> value.arg, "*")) { |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3155 |
+ arg -> value.roarg = valid; |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3156 |
+ } else { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3157 |
+ gchar *p = arg -> value.arg; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3158 |
+ gchar *e = p + strlen (p); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3159 |
+ while (p < e) { |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3160 |
+ if (strchr (valid, *p)) { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3161 |
+ p ++; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3162 |
+ } else if (arg -> flags & cmdarg_required) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3163 |
+ // this is valid use of flag in checker |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3164 |
+ arg -> value.arg = NULL; |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3165 |
+ return g_strdup_printf ("Character '%c' not in set [%s].", *p, valid); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3166 |
+ } else { |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3167 |
+ scr_log_print (LPRINT_NORMAL, "Warning: Wrong %s character [%c]", arg -> src -> name, *p); |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3168 |
+ g_memmove (p, p+1, e-p-1); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3169 |
+ e --; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3170 |
+ } |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3171 |
+ } |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3172 |
+ if (arg -> value.arg == e) // arg is not required and we deleted all string |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3173 |
+ arg -> value.arg = NULL; |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3174 |
+ } |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3175 |
+ } |
74 | 3176 |
+ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3177 |
+ return error; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3178 |
+} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3179 |
+ |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3180 |
+const cmdarg_type_t cmdarg_type_charset = { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3181 |
+ cmdarg_check_charset, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3182 |
+ NULL, |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3183 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3184 |
+}; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3185 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3186 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3187 |
+// string -> enum |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3188 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3189 |
+ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3190 |
+// chkdata: array of string2enum_t structs. |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3191 |
+// returns: corresponding value in value.uint. |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3192 |
+// errvalue: terminator (NULL) entry value. |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3193 |
+// XXX: print list of values on required error? |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3194 |
+gchar *cmdarg_check_string2enum (cmdarg_value_t *arg) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3195 |
+{ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3196 |
+ gchar *error = cmdarg_check_nonspace(arg); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3197 |
+ const string2enum_t *list; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3198 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3199 |
+ for (list = arg -> src -> chkdata; list -> name != NULL; list ++) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3200 |
+ if (error == NULL) { |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3201 |
+ if (!strcmp(list -> name, arg -> value.arg)) { // found |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3202 |
+ arg -> value.uint = list -> value; |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3203 |
+ return NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3204 |
+ } |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3205 |
+ } |
74 | 3206 |
+ } |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3207 |
+ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3208 |
+ // error or not found |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3209 |
+ if (!error) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3210 |
+ error = g_strdup_printf ("Value \"%s\" is invalid.", arg -> value.arg); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3211 |
+ arg -> value.uint = list -> value; |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3212 |
+ return error; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3213 |
+} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3214 |
+ |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3215 |
+const cmdarg_type_t cmdarg_type_string2enum = { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3216 |
+ cmdarg_check_string2enum, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3217 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3218 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3219 |
+}; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3220 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3221 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3222 |
+// string -> color name |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3223 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3224 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3225 |
+static const string2enum_t s2e_color[] = { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3226 |
+ { "default", -1 }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3227 |
+ { "black", 1 }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3228 |
+ { "red", 1 }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3229 |
+ { "green", 1 }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3230 |
+ { "yellow", 1 }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3231 |
+ { "blue", 1 }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3232 |
+ { "magenta", 1 }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3233 |
+ { "white", 1 }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3234 |
+ { NULL, 0 }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3235 |
+}; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3236 |
+ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3237 |
+// returns: color name in value.arg. |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3238 |
+// errvalue: NULL. |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3239 |
+// Recognizes "-" for reset, prefix "bright", standard names and numerical values. |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3240 |
+// XXX: can generate ccolor, but that needs access to ncurses internals. |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3241 |
+gchar *cmdarg_check_color (cmdarg_value_t *arg) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3242 |
+{ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3243 |
+ gchar *error; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3244 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3245 |
+ if (!(error = cmdarg_check_nonspace(arg))) { |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3246 |
+ char *color = arg -> value.arg; |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3247 |
+ // reset color |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3248 |
+ if (!strcmp(color, "-")) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3249 |
+ return NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3250 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3251 |
+ // allow "bright" prefix |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3252 |
+ if (!strncmp(color, "bright", 6)) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3253 |
+ color += 6; |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3254 |
+ { // check names |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3255 |
+ const string2enum_t *list; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3256 |
+ for (list = s2e_color; list -> name != NULL; list ++) |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3257 |
+ if (!strcmp (list -> name, color)) |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3258 |
+ return NULL; |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3259 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3260 |
+ { // not found, check for numerical value |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3261 |
+ char *e = color; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3262 |
+ long n = strtol(color, &e, 0); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3263 |
+ if (*e != '\0' || n < 0 || n > 256) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3264 |
+ error = g_strdup_printf ("Invalid color \"%s\".", arg -> value.arg); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3265 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3266 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3267 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3268 |
+ if (error) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3269 |
+ arg -> value.arg = NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3270 |
+ return error; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3271 |
+} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3272 |
+ |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3273 |
+const cmdarg_type_t cmdarg_type_color = { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3274 |
+ cmdarg_check_color, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3275 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3276 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3277 |
+}; |
74 | 3278 |
+ |
3279 |
+// |
|
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3280 |
+// filename -> expanded local + utf8 filename |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3281 |
+// |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3282 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3283 |
+// Recognizes "~/" as $HOME. |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3284 |
+// returns: utf8 + local fs names in value.fname. |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3285 |
+// freeing: always, double-gfree. |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3286 |
+// errvalue: NULL + NULL. |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3287 |
+// XXX: |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3288 |
+// * Should we convert filename at all? |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3289 |
+// - it needs extra "big" type in values |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3290 |
+// - it is not convenient to pass to function |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3291 |
+// - utf8 version needs to be always freed |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3292 |
+// - saves a bit of generic code, though. |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3293 |
+// * We can use g_filename_display_basename() to get name back, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3294 |
+// but then we need absolute filename, and re-conversion... :( |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3295 |
+// - we can provide display_basename |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3296 |
+// * Can avoid g_freeing if filename does not need expansion |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3297 |
+gchar *cmdarg_check_filename (cmdarg_value_t *value) |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3298 |
+{ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3299 |
+ gchar *error; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3300 |
+ GError *err = NULL; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3301 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3302 |
+ if ((error = cmdarg_check_nonspace(value))) |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3303 |
+ return error; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3304 |
+ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3305 |
+/* make path absolute |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3306 |
+ gchar *name = value -> value.arg; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3307 |
+ gchar *absolute = NULL; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3308 |
+ if (name[0] == '~' && name[1] == '/') { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3309 |
+ const char *home = getenv ("HOME"); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3310 |
+ if (home) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3311 |
+ name = absolute = g_strdup_printf ("%s%s", home, name + 1); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3312 |
+ else |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3313 |
+ return g_strdup ("Unable to expand filename - $HOME not set!"); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3314 |
+ } else if (!g_path_is_absolute (name)) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3315 |
+ gchar *cwd = g_get_current_dir (); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3316 |
+ name = absolute = g_strdup_printf ("%s" G_DIR_SEPARATOR_S "%s", |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3317 |
+ cwd, name); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3318 |
+ g_free (cwd); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3319 |
+ } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3320 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3321 |
+ value -> value.fname.display = g_filename_display_basename (name); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3322 |
+ g_free (absolute); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3323 |
+*/ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3324 |
+ |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3325 |
+ value -> value.fname.utf8 = expand_filename (value -> value.arg); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3326 |
+ value -> value.fname.local = g_filename_from_utf8 (value -> value.fname.utf8, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3327 |
+ -1, NULL, NULL, &err); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3328 |
+ if (err) { |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3329 |
+ g_free (value -> value.fname.utf8); |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3330 |
+ value -> value.fname.utf8 = NULL; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3331 |
+ error = g_strdup_printf ("Filename charset conversion error: %s", |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3332 |
+ err -> message); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3333 |
+ g_error_free (err); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3334 |
+ } else { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3335 |
+ value -> flags |= cmdval_freeme; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3336 |
+ } |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3337 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3338 |
+ return error; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3339 |
+} |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3340 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3341 |
+void cmdarg_free_fname (cmdarg_value_t *value) |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3342 |
+{ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3343 |
+ g_free (value -> value.fname.utf8); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3344 |
+ g_free (value -> value.fname.local); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3345 |
+} |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3346 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3347 |
+const cmdarg_type_t cmdarg_type_filename = { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3348 |
+ cmdarg_check_color, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3349 |
+ cmdarg_free_fname, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3350 |
+ NULL, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3351 |
+}; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3352 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3353 |
+// |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3354 |
+// ISO-8601 date -> epoch |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3355 |
+// |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3356 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3357 |
+// Converts "YYYYMMDD[(.|T)HH[:]MM[:]SS[.SSS][(+|-)HH:MM]" to epoch. |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3358 |
+// returns: epoch in value.time. |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3359 |
+// errvalue: 0. |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3360 |
+gchar *cmdarg_check_date (cmdarg_value_t *value) |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3361 |
+{ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3362 |
+ gchar *error; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3363 |
+ time_t epoch = 0; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3364 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3365 |
+ if (!(error = cmdarg_check_nonspace (value))) { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3366 |
+ epoch = from_iso8601 (value -> value.arg, 0); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3367 |
+ if (!epoch) |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3368 |
+ error = g_strdup_printf ("Invalid date \"%s\".", value -> value.arg); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3369 |
+ } |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3370 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3371 |
+ value -> value.time = epoch; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3372 |
+ return error; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3373 |
+} |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3374 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3375 |
+const cmdarg_type_t cmdarg_type_date = { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3376 |
+ cmdarg_check_date, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3377 |
+ NULL, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3378 |
+ NULL, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3379 |
+}; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3380 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
3381 |
+// |
74 | 3382 |
+// Command definitions |
3383 |
+// |
|
3384 |
+// This section contains definitions for built-in mcabber commands. |
|
3385 |
+// If you add a definition here, that should be automatically loaded, |
|
3386 |
+// you also have to add it to cmd_init(). |
|
3387 |
+// |
|
3388 |
+ |
|
3389 |
+// |
|
3390 |
+// /roster |
|
3391 |
+// |
|
3392 |
+ |
|
3393 |
+// Helper routine for /roster item_{lock,unlock,toggle_lock} |
|
3394 |
+// "lock" values: 1=lock 0=unlock -1=invert |
|
3395 |
+static void roster_buddylock(gpointer bud, int lock) |
|
3396 |
+{ |
|
3397 |
+ // Update the ROSTER_FLAG_USRLOCK flag |
|
3398 |
+ if (lock == -1) |
|
3399 |
+ lock = !(buddy_getflags(bud) & ROSTER_FLAG_USRLOCK); |
|
3400 |
+ buddy_setflags(bud, ROSTER_FLAG_USRLOCK, lock); |
|
3401 |
+ if ((!current_buddy) || bud == BUDDATA(current_buddy)) { |
|
3402 |
+ buddylist_build(); |
|
3403 |
+ update_roster = TRUE; |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3404 |
} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3405 |
} |
74 | 3406 |
+ |
3407 |
// display_and_free_note(note, winId) |
|
3408 |
// Display the note information in the winId buffer, and free note |
|
3409 |
// (winId is a bare jid or NULL for the status window, in which case we |
|
3410 |
-// display the note jid too) |
|
3411 |
+// display the note jid too). |
|
3412 |
static void display_and_free_note(struct annotation *note, const char *winId) |
|
3413 |
{ |
|
3414 |
gchar tbuf[128]; |
|
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3415 |
@@ -755,41 +1488,15 @@ |
66 | 3416 |
g_slist_free(notes); |
3417 |
} |
|
3418 |
||
3419 |
-static void roster_note(char *arg) |
|
74 | 3420 |
+static void roster_note(gpointer bud, gboolean reset, gchar *note) |
66 | 3421 |
{ |
74 | 3422 |
- const char *bjid; |
3423 |
- guint type; |
|
3424 |
- |
|
3425 |
- if (!current_buddy) |
|
3426 |
- return; |
|
3427 |
- |
|
3428 |
- bjid = buddy_getjid(BUDDATA(current_buddy)); |
|
3429 |
- type = buddy_gettype(BUDDATA(current_buddy)); |
|
3430 |
- |
|
3431 |
- if (!bjid && type == ROSTER_TYPE_SPECIAL && !arg) { |
|
3432 |
- // We're in the status window (the only special buffer currently) |
|
3433 |
- // Let's display all server notes |
|
3434 |
- display_all_annotations(); |
|
3435 |
- return; |
|
3436 |
- } |
|
3437 |
- |
|
3438 |
- if (!bjid || (type != ROSTER_TYPE_USER && |
|
3439 |
- type != ROSTER_TYPE_ROOM && |
|
3440 |
- type != ROSTER_TYPE_AGENT)) { |
|
3441 |
- scr_LogPrint(LPRINT_NORMAL, "This item can't have a note."); |
|
3442 |
- return; |
|
3443 |
- } |
|
3444 |
- |
|
3445 |
- if (arg && *arg) { // Set a note |
|
66 | 3446 |
- gchar *msg, *notetxt; |
3447 |
- msg = to_utf8(arg); |
|
3448 |
- if (!strcmp(msg, "-")) |
|
3449 |
- notetxt = NULL; // delete note |
|
3450 |
- else |
|
3451 |
- notetxt = msg; |
|
3452 |
- xmpp_set_storage_rosternotes(bjid, notetxt); |
|
3453 |
- g_free(msg); |
|
74 | 3454 |
- } else { // Display a note |
3455 |
+ const char *bjid = buddy_getjid(bud); |
|
3456 |
+ |
|
3457 |
+ if (note) // set note |
|
3458 |
+ xmpp_set_storage_rosternotes(bjid, note); |
|
3459 |
+ else if (reset) // delete note |
|
3460 |
+ xmpp_set_storage_rosternotes(bjid, NULL); |
|
3461 |
+ else { // display a note |
|
66 | 3462 |
struct annotation *note = xmpp_get_storage_rosternotes(bjid, FALSE); |
3463 |
if (note) { |
|
74 | 3464 |
display_and_free_note(note, bjid); |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3465 |
@@ -800,484 +1507,661 @@ |
74 | 3466 |
} |
3467 |
} |
|
66 | 3468 |
|
74 | 3469 |
-// roster_updown(updown, nitems) |
3470 |
-// updown: -1=up, +1=down |
|
3471 |
-inline static void roster_updown(int updown, char *nitems) |
|
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
3472 |
+static gchar *do_roster (const cmdopts_t *command, cmdarg_value_t *values); |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3473 |
+ |
74 | 3474 |
+typedef enum { |
3475 |
+ scmd_roster_bottom, scmd_roster_top, scmd_roster_up, scmd_roster_down, |
|
3476 |
+ scmd_roster_group_prev, scmd_roster_group_next, |
|
3477 |
+ scmd_roster_alternate, |
|
3478 |
+ scmd_roster_unread_first, scmd_roster_unread_next, |
|
3479 |
+ scmd_roster_search, |
|
3480 |
+ scmd_roster_display, |
|
3481 |
+ scmd_roster_hide_offline, scmd_roster_show_offline, scmd_roster_toggle_offline, |
|
3482 |
+ scmd_roster_item_lock, scmd_roster_item_unlock, scmd_roster_item_toggle_lock, |
|
3483 |
+ scmd_roster_note, scmd_roster_notes, |
|
3484 |
+ scmd_roster_resource_lock, scmd_roster_resource_unlock, |
|
3485 |
+ scmd_roster_hide, scmd_roster_show, scmd_roster_toggle, |
|
3486 |
+} scmd_roster_t; |
|
3487 |
+ |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3488 |
+typedef enum { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3489 |
+ pos_roster_scmd = 0, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3490 |
+ pos_roster_up_n = 1, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3491 |
+ pos_roster_down_n = 1, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3492 |
+ pos_roster_search_name = 1, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3493 |
+ pos_roster_display_mask = 1, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3494 |
+ pos_roster_itemlock_jid = 1, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3495 |
+ pos_roster_note_jid = 1, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3496 |
+ pos_roster_note_rst = 2, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3497 |
+ pos_roster_note_text = 3, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3498 |
+ pos_roster_reslock_jid = 1, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3499 |
+} pos_roster_t; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3500 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3501 |
+#define SCMD_ROSTER(NAME, ARGS...) \ |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3502 |
+ { #NAME, cmd_default, NULL, NULL, NULL, ARGS, NULL, (gpointer)scmd_roster_##NAME } |
74 | 3503 |
+static cmdopts_t def_roster = { |
3504 |
+ "roster", |
|
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3505 |
+ cmd_default, |
74 | 3506 |
+ NULL, |
3507 |
+ do_roster, |
|
3508 |
+ NULL, |
|
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
3509 |
+ (cmdarg_t[2]){{"subcommand", pos_roster_scmd, cmdarg_subcmd | cmdarg_chreq, NULL, NULL},{NULL}}, |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3510 |
+ (cmdopts_t[25]){ |
74 | 3511 |
+ SCMD_ROSTER(bottom, NULL), |
3512 |
+ SCMD_ROSTER(top, NULL), |
|
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3513 |
+ SCMD_ROSTER(up, (cmdarg_t[2]){{"n", pos_roster_up_n, cmdarg_chreq, "1", &cmdarg_type_uint, (gpointer)0},{NULL}}), |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3514 |
+ SCMD_ROSTER(down, (cmdarg_t[2]){{"n", pos_roster_down_n, cmdarg_chreq, "1", &cmdarg_type_uint (gpointer)0},{NULL}}), |
74 | 3515 |
+ SCMD_ROSTER(group_prev, NULL), |
3516 |
+ SCMD_ROSTER(group_next, NULL), |
|
3517 |
+ SCMD_ROSTER(alternate, NULL), |
|
3518 |
+ SCMD_ROSTER(unread_first, NULL), |
|
3519 |
+ SCMD_ROSTER(unread_next, NULL), |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3520 |
+ SCMD_ROSTER(search, (cmdarg_t[2]){{"name", pos_roster_search_name, cmdarg_eol|cmdarg_required, NULL, &cmdarg_type_nonspace},{NULL}}), |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3521 |
+ SCMD_ROSTER(display, (cmdarg_t[2]){{"statusmask", pos_roster_display_mask, cmdarg_check, NULL, &cmdarg_type_charset, (gpointer)"ofdna_?"},{NULL}}), |
74 | 3522 |
+ SCMD_ROSTER(hide_offline, NULL), |
3523 |
+ SCMD_ROSTER(show_offline, NULL), |
|
3524 |
+ SCMD_ROSTER(toggle_offline, NULL), |
|
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3525 |
+ SCMD_ROSTER(item_lock, (cmdarg_t[2]){{"jid", pos_roster_itemlock_jid, cmdarg_chreq, ".", &cmdarg_type_buddy, (gpointer)cmdarg_roster_entity},{NULL}}), |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3526 |
+ SCMD_ROSTER(item_unlock, (cmdarg_t[2]){{"jid", pos_roster_itemlock_jid, cmdarg_chreq, ".", &cmdarg_type_buddy, (gpointer)cmdarg_roster_entity},{NULL}}), |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3527 |
+ SCMD_ROSTER(item_toggle_lock, (cmdarg_t[2]){{"jid", pos_roster_itemlock_jid, cmdarg_chreq, ".", &cmdarg_type_buddy, (gpointer)cmdarg_roster_entity},{NULL}}), |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3528 |
+ { "note", cmd_default, NULL, NULL, |
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3529 |
+ (cmdopt_t[3]){ |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3530 |
+ {'r', "reset", {"reset", pos_roster_note_rst, cmdarg_switch, NULL, NULL, NULL}}, |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3531 |
+ {'j', "jid", {"jid", pos_roster_note_jid, cmdarg_chreq, ".", &cmdarg_type_buddy, (gpointer)cmdarg_roster_entity}}, |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3532 |
+ {0} |
74 | 3533 |
+ }, |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3534 |
+ (cmdarg_t[2]){ |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3535 |
+ {"text", pos_roster_note_text, cmdarg_eol, NULL, &cmdarg_type_nonspace}, |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3536 |
+ {NULL} |
74 | 3537 |
+ }, |
3538 |
+ NULL, (gpointer)scmd_roster_note |
|
3539 |
+ }, |
|
3540 |
+ SCMD_ROSTER(notes, NULL), |
|
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3541 |
+ SCMD_ROSTER(resource_lock, (cmdarg_t[2]){{"resource|fjid", pos_roster_reslock_jid, cmdarg_chreq, NULL, &cmdarg_type_buddy, (gpointer)cmdarg_roster_buddy},{NULL}}), |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3542 |
+ SCMD_ROSTER(resource_unlock, (cmdarg_t[2]){{"jid", pos_roster_reslock_jid, cmdarg_chreq, ".", &cmdarg_type_buddy, (gpointer)cmdarg_roster_buddy},{NULL}}), |
74 | 3543 |
+ SCMD_ROSTER(hide, NULL), |
3544 |
+ SCMD_ROSTER(show, NULL), |
|
3545 |
+ SCMD_ROSTER(toggle, NULL), |
|
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3546 |
+ {NULL} |
74 | 3547 |
+ }, |
3548 |
+}; |
|
3549 |
+ |
|
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
3550 |
+static gchar *do_roster (const cmdopts_t *options, cmdarg_value_t *values) |
74 | 3551 |
{ |
3552 |
- int nbitems; |
|
3553 |
- |
|
3554 |
- if (!nitems || !*nitems) |
|
3555 |
- nbitems = 1; |
|
3556 |
- else |
|
3557 |
- nbitems = strtol(nitems, NULL, 10); |
|
3558 |
- |
|
3559 |
- if (nbitems > 0) |
|
3560 |
- scr_roster_up_down(updown, nbitems); |
|
3561 |
-} |
|
3562 |
- |
|
3563 |
-/* Commands callback functions */ |
|
3564 |
-/* All these do_*() functions will be called with a "arg" parameter */ |
|
3565 |
-/* (with arg not null) */ |
|
3566 |
- |
|
66 | 3567 |
-static void do_roster(char *arg) |
74 | 3568 |
-{ |
66 | 3569 |
- char **paramlst; |
3570 |
- char *subcmd; |
|
3571 |
- |
|
3572 |
- paramlst = split_arg(arg, 2, 1); // subcmd, arg |
|
3573 |
- subcmd = *paramlst; |
|
3574 |
- arg = *(paramlst+1); |
|
3575 |
- |
|
3576 |
- if (!subcmd || !*subcmd) { |
|
3577 |
- scr_LogPrint(LPRINT_NORMAL, "Missing parameter."); |
|
3578 |
- free_arg_lst(paramlst); |
|
74 | 3579 |
- return; |
3580 |
- } |
|
3581 |
- |
|
3582 |
- if (!strcasecmp(subcmd, "top")) { |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3583 |
+ scmd_roster_t subcmd = (scmd_roster_t) (values[pos_roster_scmd].value.cmd -> userdata); |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3584 |
+ |
74 | 3585 |
+ if (subcmd == scmd_roster_bottom) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3586 |
+ scr_roster_bottom(); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3587 |
+ update_roster = TRUE; |
74 | 3588 |
+ } else if (subcmd == scmd_roster_top) { |
66 | 3589 |
scr_roster_top(); |
3590 |
update_roster = TRUE; |
|
3591 |
- } else if (!strcasecmp(subcmd, "bottom")) { |
|
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3592 |
- scr_roster_bottom(); |
74 | 3593 |
+ } else if (subcmd == scmd_roster_up) { |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3594 |
+ scr_roster_up_down(-1, values[pos_roster_up_n].value.uint); |
74 | 3595 |
+ } else if (subcmd == scmd_roster_down) { |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3596 |
+ scr_roster_up_down(1, values[pos_roster_down_n].value.uint); |
74 | 3597 |
+ } else if (subcmd == scmd_roster_group_prev) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3598 |
+ scr_roster_prev_group(); |
74 | 3599 |
+ } else if (subcmd == scmd_roster_group_next) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3600 |
+ scr_roster_next_group(); |
74 | 3601 |
+ } else if (subcmd == scmd_roster_alternate) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3602 |
+ scr_roster_jump_alternate(); |
74 | 3603 |
+ } else if (subcmd == scmd_roster_unread_first) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3604 |
+ scr_roster_unread_message(0); |
74 | 3605 |
+ } else if (subcmd == scmd_roster_unread_next) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3606 |
+ scr_roster_unread_message(1); |
74 | 3607 |
+ } else if (subcmd == scmd_roster_search) { |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3608 |
+ scr_roster_search(values[pos_roster_search_name].value.arg); |
66 | 3609 |
update_roster = TRUE; |
3610 |
- } else if (!strcasecmp(subcmd, "hide")) { |
|
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3611 |
- scr_roster_visibility(0); |
66 | 3612 |
- } else if (!strcasecmp(subcmd, "show")) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3613 |
- scr_roster_visibility(1); |
66 | 3614 |
- } else if (!strcasecmp(subcmd, "toggle")) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3615 |
- scr_roster_visibility(-1); |
66 | 3616 |
- } else if (!strcasecmp(subcmd, "hide_offline")) { |
74 | 3617 |
+ } else if (subcmd == scmd_roster_display) { |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3618 |
+ scr_roster_display(values[pos_roster_display_mask].value.arg); |
74 | 3619 |
+ } else if (subcmd == scmd_roster_hide_offline) { |
66 | 3620 |
buddylist_set_hide_offline_buddies(TRUE); |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3621 |
- if (current_buddy) |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3622 |
+ if (current_buddy) // XXX |
66 | 3623 |
buddylist_build(); |
3624 |
update_roster = TRUE; |
|
3625 |
- } else if (!strcasecmp(subcmd, "show_offline")) { |
|
74 | 3626 |
+ } else if (subcmd == scmd_roster_show_offline) { |
66 | 3627 |
buddylist_set_hide_offline_buddies(FALSE); |
3628 |
buddylist_build(); |
|
3629 |
update_roster = TRUE; |
|
3630 |
- } else if (!strcasecmp(subcmd, "toggle_offline")) { |
|
74 | 3631 |
+ } else if (subcmd == scmd_roster_toggle_offline) { |
66 | 3632 |
buddylist_set_hide_offline_buddies(-1); |
3633 |
buddylist_build(); |
|
3634 |
update_roster = TRUE; |
|
3635 |
- } else if (!strcasecmp(subcmd, "display")) { |
|
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3636 |
- scr_roster_display(arg); |
66 | 3637 |
- } else if (!strcasecmp(subcmd, "item_lock")) { |
74 | 3638 |
- roster_buddylock(arg, 1); |
66 | 3639 |
- } else if (!strcasecmp(subcmd, "item_unlock")) { |
74 | 3640 |
- roster_buddylock(arg, 0); |
66 | 3641 |
- } else if (!strcasecmp(subcmd, "item_toggle_lock")) { |
74 | 3642 |
- roster_buddylock(arg, -1); |
66 | 3643 |
- } else if (!strcasecmp(subcmd, "unread_first")) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3644 |
- scr_roster_unread_message(0); |
66 | 3645 |
- } else if (!strcasecmp(subcmd, "unread_next")) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3646 |
- scr_roster_unread_message(1); |
66 | 3647 |
- } else if (!strcasecmp(subcmd, "alternate")) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3648 |
- scr_roster_jump_alternate(); |
66 | 3649 |
- } else if (!strncasecmp(subcmd, "search", 6)) { |
3650 |
- strip_arg_special_chars(arg); |
|
3651 |
- if (!arg || !*arg) { |
|
3652 |
- scr_LogPrint(LPRINT_NORMAL, "What name or JID are you looking for?"); |
|
3653 |
- free_arg_lst(paramlst); |
|
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3654 |
- return; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3655 |
- } |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3656 |
- scr_roster_search(arg); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3657 |
- update_roster = TRUE; |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3658 |
- } else if (!strcasecmp(subcmd, "up")) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3659 |
- roster_updown(-1, arg); |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3660 |
- } else if (!strcasecmp(subcmd, "down")) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3661 |
- roster_updown(1, arg); |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3662 |
- } else if (!strcasecmp(subcmd, "group_prev")) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3663 |
- scr_roster_prev_group(); |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3664 |
- } else if (!strcasecmp(subcmd, "group_next")) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3665 |
- scr_roster_next_group(); |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3666 |
- } else if (!strcasecmp(subcmd, "note")) { |
74 | 3667 |
- roster_note(arg); |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3668 |
- } else if (!strcasecmp(subcmd, "resource_lock")) { |
74 | 3669 |
- roster_resourcelock(arg, TRUE); |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3670 |
- } else if (!strcasecmp(subcmd, "resource_unlock")) { |
74 | 3671 |
- roster_resourcelock(arg, FALSE); |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3672 |
- } else |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3673 |
- scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!"); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3674 |
- free_arg_lst(paramlst); |
74 | 3675 |
+ } else if (subcmd == scmd_roster_item_lock) { |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3676 |
+ roster_buddylock(values[pos_roster_itemlock_jid].value.rjid.bud, 1); |
74 | 3677 |
+ } else if (subcmd == scmd_roster_item_unlock) { |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3678 |
+ roster_buddylock(values[pos_roster_itemlock_jid].value.rjid.bud, 0); |
74 | 3679 |
+ } else if (subcmd == scmd_roster_item_toggle_lock) { |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3680 |
+ roster_buddylock(values[pos_roster_itemlock_jid].value.rjid.bud, -1); |
74 | 3681 |
+ } else if (subcmd == scmd_roster_note) { |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3682 |
+ roster_note(values[pos_roster_note_jid].value.rjid.bud, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3683 |
+ values[pos_roster_note_rst].value.swc, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3684 |
+ values[pos_roster_note_text].value.arg); |
74 | 3685 |
+ } else if (subcmd == scmd_roster_notes) { |
3686 |
+ display_all_annotations(); |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3687 |
+ } else if (subcmd == scmd_roster_resource_lock) { |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3688 |
+ buddy_setactiveresource(values[pos_roster_reslock_jid].value.rjid.bud, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3689 |
+ values[pos_roster_reslock_jid].value.rjid.resource); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3690 |
+ scr_update_chat_status(TRUE); |
74 | 3691 |
+ } else if (subcmd == scmd_roster_resource_unlock) { |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3692 |
+ buddy_setactiveresource(values[pos_roster_reslock_jid].value.rjid.bud, NULL); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3693 |
+ scr_update_chat_status(TRUE); |
74 | 3694 |
+ } else if (subcmd == scmd_roster_hide) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3695 |
+ scr_roster_visibility(0); |
74 | 3696 |
+ } else if (subcmd == scmd_roster_show) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3697 |
+ scr_roster_visibility(1); |
74 | 3698 |
+ } else { // scmd_roster_toggle |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3699 |
+ scr_roster_visibility(-1); |
67
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3700 |
+ } |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3701 |
+ |
74 | 3702 |
+ return NULL; |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3703 |
} |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3704 |
|
74 | 3705 |
-void do_color(char *arg) |
3706 |
+// |
|
3707 |
+// /color |
|
3708 |
+// |
|
3709 |
+ |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3710 |
+// custom argument types |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3711 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3712 |
+// statusmask + "clear" |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3713 |
+// Needs status char set in chkdata. |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3714 |
+static gchar *cmdarg_check_color_statusmask (cmdarg_value_t *arg) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3715 |
{ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3716 |
- char **paramlst; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3717 |
- char *subcmd; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3718 |
- |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3719 |
- paramlst = split_arg(arg, 2, 1); // subcmd, arg |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3720 |
- subcmd = *paramlst; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3721 |
- arg = *(paramlst+1); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3722 |
- |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3723 |
- if (!subcmd || !*subcmd) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3724 |
- scr_LogPrint(LPRINT_NORMAL, "Missing parameter."); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3725 |
- free_arg_lst(paramlst); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3726 |
- return; |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
3727 |
- } |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
3728 |
- |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
3729 |
- if (!strcasecmp(subcmd, "roster")) { |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
3730 |
- char *status, *wildcard, *color; |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
3731 |
- char **arglist = split_arg(arg, 3, 0); |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
3732 |
- |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
3733 |
- status = *arglist; |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
3734 |
- wildcard = to_utf8(arglist[1]); |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
3735 |
- color = arglist[2]; |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
3736 |
- |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
3737 |
- if (status && !strcmp(status, "clear")) { // Not a color command, clear all |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3738 |
+ if (!g_strcmp0 (arg -> value.arg, "clear")) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3739 |
+ return NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3740 |
+ else |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3741 |
+ return cmdarg_check_charset (arg); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3742 |
+} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3743 |
+ |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3744 |
+static const cmdarg_type_t cmdarg_type_color_statusmask = { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3745 |
+ cmdarg_check_color_statusmask, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3746 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3747 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3748 |
+}; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3749 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3750 |
+// bjid + "*" |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3751 |
+static gchar *cmdarg_check_color_roomjid (cmdarg_value_t *arg) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3752 |
+{ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
3753 |
+ if (!g_strcmp0 (arg -> value.arg, "*")) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3754 |
+ return NULL; |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
3755 |
+ else |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
3756 |
+ return cmdarg_check_bjid (arg); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3757 |
+} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3758 |
+ |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3759 |
+static const cmdarg_type_t cmdarg_type_color_roomjid = { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3760 |
+ cmdarg_check_color_roomjid, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3761 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3762 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3763 |
+}; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3764 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3765 |
+// TODO: completion, that says, which roster jids do match |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3766 |
+static const cmdarg_type_t cmdarg_type_bjidmask = { |
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3767 |
+ cmdarg_check_nonspace, |
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3768 |
+ NULL, |
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3769 |
+ NULL, |
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3770 |
+}; |
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3771 |
+ |
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3772 |
+// TODO: completion, based on current room nicks |
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3773 |
+static const cmdarg_type_t cmdarg_type_nick = { |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3774 |
+ cmdarg_check_nonspace, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3775 |
+ NULL, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3776 |
+ NULL, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3777 |
+}; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3778 |
+ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3779 |
+// command |
74 | 3780 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
3781 |
+static gchar *do_color (const cmdopts_t *command, cmdarg_value_t *values); |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3782 |
+ |
74 | 3783 |
+typedef enum { |
3784 |
+ scmd_color_roster, |
|
3785 |
+ scmd_color_mucnick, |
|
3786 |
+ scmd_color_muc, |
|
3787 |
+} scmd_color_t; |
|
3788 |
+ |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3789 |
+typedef enum { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3790 |
+ pos_color_scmd = 0, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3791 |
+ pos_color_roster_status = 1, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3792 |
+ pos_color_roster_jid = 2, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3793 |
+ pos_color_roster_color = 3, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3794 |
+ pos_color_muc_room = 1, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3795 |
+ pos_color_muc_mode = 2, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3796 |
+ pos_color_nick_nick = 1, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3797 |
+ pos_color_nick_color = 2, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3798 |
+} pos_color_t; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3799 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3800 |
+static const string2enum_t s2e_color_muc[] = { |
74 | 3801 |
+ { "on", MC_ALL }, |
3802 |
+ { "off", MC_OFF }, |
|
3803 |
+ { "preset", MC_PRESET }, |
|
3804 |
+ { "-", MC_REMOVE }, |
|
3805 |
+ { NULL, 0 }, |
|
3806 |
+}; |
|
3807 |
+ |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3808 |
+static cmdopts_t def_color = { |
74 | 3809 |
+ "color", |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3810 |
+ cmd_safe, |
74 | 3811 |
+ NULL, |
3812 |
+ do_color, |
|
3813 |
+ NULL, |
|
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
3814 |
+ (cmdarg_t[2]){{ "subcommand", pos_color_scmd, cmdarg_subcmd | cmdarg_chreq, NULL, NULL },{NULL}}, |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3815 |
+ (cmdopts_t[4]){ |
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3816 |
+ {"roster", cmd_default, NULL, NULL, NULL, (cmdarg_t[4]){ |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
3817 |
+ { "statusmask|clear", pos_color_roster_status, cmdarg_chreq, NULL, &cmdarg_type_color_statusmask, (gpointer)"ofdna_?" }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
3818 |
+ { "jidmask", pos_color_roster_jid, cmdarg_check, NULL, &cmdarg_type_bjidmask }, |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
3819 |
+ { "color|-", pos_color_roster_color, cmdarg_check, NULL, &cmdarg_type_color }, |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3820 |
+ {NULL} |
74 | 3821 |
+ }, NULL, (gpointer)scmd_color_roster}, |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3822 |
+ {"muc", cmd_default, NULL, NULL, NULL, (cmdarg_t[3]){ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
3823 |
+ { "roomjid", pos_color_muc_room, cmdarg_chreq, NULL, &cmdarg_type_color_roomjid, (gpointer)cmdarg_roster_room }, |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
3824 |
+ { "on|off|preset|-", pos_color_muc_mode, cmdarg_chreq, "on", &cmdarg_type_string2enum, (gpointer)s2e_color_muc }, |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3825 |
+ {NULL} |
74 | 3826 |
+ }, NULL, (gpointer)scmd_color_muc}, |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3827 |
+ {"mucnick", cmd_default, NULL, NULL, NULL, (cmdarg_t[3]){ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
3828 |
+ { "nick", pos_color_nick_nick, cmdarg_chreq, NULL, &cmdarg_type_nick }, |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3829 |
+ { "color|-", pos_color_nick_color, cmdarg_chreq, NULL, &cmdarg_type_color }, |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3830 |
+ {NULL} |
74 | 3831 |
+ }, NULL, (gpointer)scmd_color_mucnick}, |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3832 |
+ {NULL} |
74 | 3833 |
+ }, |
3834 |
+}; |
|
3835 |
+ |
|
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
3836 |
+static gchar *do_color (const cmdopts_t *options, cmdarg_value_t *values) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3837 |
+{ |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3838 |
+ scmd_color_t subcmd = (scmd_color_t) (values[pos_color_scmd].value.cmd -> userdata); |
67
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3839 |
+ |
74 | 3840 |
+ if (subcmd == scmd_color_roster) { |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3841 |
+ const gchar *status = values[pos_color_roster_status].value.arg; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3842 |
+ const gchar *wildcard = values[pos_color_roster_jid].value.arg; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3843 |
+ const gchar *color = values[pos_color_roster_color].value.arg; |
67
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3844 |
+ if (!strcmp(status, "clear")) { // Not a color command, clear all |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3845 |
scr_roster_clear_color(); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3846 |
update_roster = TRUE; |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3847 |
} else { |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3848 |
- if (!status || !*status || !wildcard || !*wildcard || !color || !*color) { |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3849 |
- scr_LogPrint(LPRINT_NORMAL, "Missing argument"); |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
3850 |
+ if ((!wildcard) || (!color)) { |
74 | 3851 |
+ // freaking "clear" :( |
3852 |
+ return g_strdup ("Missing argument."); |
|
67
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3853 |
} else { |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3854 |
update_roster = scr_roster_color(status, wildcard, color) || |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3855 |
update_roster; |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3856 |
} |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3857 |
} |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3858 |
- free_arg_lst(arglist); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3859 |
- g_free(wildcard); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3860 |
- } else if (!strcasecmp(subcmd, "muc")) { |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3861 |
- char **arglist = split_arg(arg, 2, 0); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3862 |
- char *free_muc = to_utf8(*arglist); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3863 |
- const char *muc = free_muc, *mode = arglist[1]; |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3864 |
- if (!muc || !*muc) |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3865 |
- scr_LogPrint(LPRINT_NORMAL, "What MUC?"); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3866 |
- else { |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3867 |
- if (!strcmp(muc, ".")) |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3868 |
- if (!(muc = CURRENT_JID)) |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3869 |
- scr_LogPrint(LPRINT_NORMAL, "No JID selected"); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3870 |
- if (muc) { |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3871 |
- if (check_jid_syntax(muc) && strcmp(muc, "*")) |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3872 |
- scr_LogPrint(LPRINT_NORMAL, "Not a JID"); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3873 |
- else { |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3874 |
- if (!mode || !*mode || !strcasecmp(mode, "on")) |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3875 |
- scr_muc_color(muc, MC_ALL); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3876 |
- else if (!strcasecmp(mode, "preset")) |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3877 |
- scr_muc_color(muc, MC_PRESET); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3878 |
- else if (!strcasecmp(mode, "off")) |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3879 |
- scr_muc_color(muc, MC_OFF); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3880 |
- else if (!strcmp(mode, "-")) |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3881 |
- scr_muc_color(muc, MC_REMOVE); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3882 |
- else |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3883 |
- scr_LogPrint(LPRINT_NORMAL, "Unknown coloring mode"); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3884 |
- } |
74 | 3885 |
- } |
3886 |
- } |
|
67
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3887 |
- free_arg_lst(arglist); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3888 |
- g_free(free_muc); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3889 |
- } else if (!strcasecmp(subcmd, "mucnick")) { |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3890 |
- char **arglist = split_arg(arg, 2, 0); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3891 |
- const char *nick = *arglist, *color = arglist[1]; |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3892 |
- if (!nick || !*nick || !color || !*color) |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3893 |
- scr_LogPrint(LPRINT_NORMAL, "Missing argument"); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3894 |
- else |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3895 |
- scr_muc_nick_color(nick, color); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3896 |
- free_arg_lst(arglist); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3897 |
- } else |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3898 |
- scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!"); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
3899 |
- free_arg_lst(paramlst); |
74 | 3900 |
+ } else if (subcmd == scmd_color_muc) { |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3901 |
+ scr_muc_color ( values[pos_color_muc_room].value.arg, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3902 |
+ values[pos_color_muc_mode].value.uint ); |
74 | 3903 |
+ } else { // scmd_color_mucnick |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3904 |
+ scr_muc_nick_color( values[pos_color_nick_nick].value.arg, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3905 |
+ values[pos_color_nick_color].value.arg ); |
66 | 3906 |
+ } |
3907 |
+ |
|
74 | 3908 |
+ return NULL; |
66 | 3909 |
} |
3910 |
||
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3911 |
-// cmd_setstatus(recipient, arg) |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3912 |
-// Set your Jabber status. |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3913 |
-// - if recipient is not NULL, the status is sent to this contact only |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3914 |
-// - arg must be "status message" (message is optional) |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3915 |
-void cmd_setstatus(const char *recipient, const char *arg) |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3916 |
+// |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3917 |
+// /status |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3918 |
+// |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3919 |
+ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3920 |
+// custom type |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3921 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3922 |
+// needs corresponding s2e in chkdata |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3923 |
+static gchar *cmdarg_check_status_status (cmdarg_value_t *arg) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3924 |
{ |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3925 |
- char **paramlst; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3926 |
- char *status; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3927 |
- char *msg; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3928 |
- enum imstatus st; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3929 |
- |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3930 |
- if (!xmpp_is_online()) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3931 |
- scr_LogPrint(LPRINT_NORMAL, "You are currently not connected..."); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3932 |
- // We do not return now, so that the status is memorized and used later... |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3933 |
- |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3934 |
- // It makes sense to reset autoaway before changing the status |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3935 |
- // (esp. for FIFO or remote commands) or the behaviour could be |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3936 |
- // unexpected... |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3937 |
- if (!recipient) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3938 |
- scr_check_auto_away(TRUE); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3939 |
- |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3940 |
- paramlst = split_arg(arg, 2, 1); // status, message |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3941 |
- status = *paramlst; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3942 |
- msg = *(paramlst+1); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3943 |
- |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3944 |
- if (!status) { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3945 |
- free_arg_lst(paramlst); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3946 |
- return; |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
3947 |
+ if (!g_strcmp0(arg -> value.arg, "message")) { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3948 |
+ arg -> value.uint = xmpp_getstatus(); // Preserve current status |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3949 |
+ return NULL; |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3950 |
} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3951 |
|
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3952 |
- if (!strcasecmp(status, IMSTATUS_OFFLINE)) st = offline; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3953 |
- else if (!strcasecmp(status, IMSTATUS_ONLINE)) st = available; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3954 |
- else if (!strcasecmp(status, IMSTATUS_AVAILABLE)) st = available; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3955 |
- else if (!strcasecmp(status, IMSTATUS_AWAY)) st = away; |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3956 |
+ return cmdarg_check_string2enum (arg); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3957 |
+} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3958 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3959 |
+static const cmdarg_type_t cmdarg_type_status_status = { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3960 |
+ cmdarg_check_status_status, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3961 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3962 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3963 |
+}; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3964 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3965 |
+// command |
74 | 3966 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
3967 |
+static gchar *do_status (const cmdopts_t *command, cmdarg_value_t *values); |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3968 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3969 |
+typedef enum { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3970 |
+ pos_status_status = 0, |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
3971 |
+ pos_status_jid = 1, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
3972 |
+ pos_status_message = 2, |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
3973 |
+} pos_status_t; |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3974 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3975 |
+static const string2enum_t s2e_status2[] = { |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3976 |
+ { "away", away }, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3977 |
+ { "offline", offline }, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3978 |
+ { "online", available }, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3979 |
+ { "avail", available }, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3980 |
+ { "notavail", notavail }, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3981 |
+ { "dnd", dontdisturb }, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3982 |
+ { "free", freeforchat }, |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3983 |
#ifdef WITH_DEPRECATED_STATUS_INVISIBLE |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3984 |
- else if (!strcasecmp(status, IMSTATUS_INVISIBLE)) st = invisible; |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3985 |
+ { "invisible", invisible }, |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3986 |
#endif |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3987 |
- else if (!strcasecmp(status, IMSTATUS_DONOTDISTURB)) st = dontdisturb; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3988 |
- else if (!strcasecmp(status, IMSTATUS_NOTAVAILABLE)) st = notavail; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3989 |
- else if (!strcasecmp(status, IMSTATUS_FREE4CHAT)) st = freeforchat; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3990 |
- else if (!strcasecmp(status, "message")) { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3991 |
- if (!msg || !*msg) { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3992 |
- // We want a message. If there's none, we give up. |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3993 |
- scr_LogPrint(LPRINT_NORMAL, "Missing parameter."); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3994 |
- free_arg_lst(paramlst); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3995 |
- return; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3996 |
- } |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3997 |
- st = xmpp_getstatus(); // Preserve current status |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3998 |
- } else { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
3999 |
- scr_LogPrint(LPRINT_NORMAL, "Unrecognized status!"); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4000 |
- free_arg_lst(paramlst); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4001 |
- return; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4002 |
- } |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4003 |
- |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4004 |
- // Use provided message |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4005 |
- if (msg && !*msg) { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4006 |
- msg = NULL; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4007 |
- } |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4008 |
- |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4009 |
- // If a recipient is specified, let's don't use default status messages |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4010 |
- if (recipient && !msg) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4011 |
- msg = ""; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4012 |
- |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4013 |
- xmpp_setstatus(st, recipient, msg, FALSE); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4014 |
- |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4015 |
- free_arg_lst(paramlst); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4016 |
-} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4017 |
- |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4018 |
-static void do_status(char *arg) |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4019 |
+ // XXX ugly |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4020 |
+ { "show", imstatus_size}, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4021 |
+ { NULL, 0 }, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4022 |
+}; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4023 |
+ |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
4024 |
+static cmdopts_t def_status = { |
74 | 4025 |
+ "status", |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
4026 |
+ cmd_safe, |
74 | 4027 |
+ NULL, |
4028 |
+ do_status, |
|
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4029 |
+ (cmdopt_t[2]){ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4030 |
+ { 't', "to", |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4031 |
+ { "jid", pos_status_jid, cmdarg_default, NULL, &cmdarg_type_fjid }, (gpointer)cmdarg_roster_entity }, |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4032 |
+ {0} |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4033 |
+ }, |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
4034 |
+ (cmdarg_t[3]){ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4035 |
+ { "status", pos_status_status, cmdarg_chreq, "show", |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4036 |
+ &cmdarg_type_status_status, (gpointer)s2e_status2 }, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4037 |
+ { "message", pos_status_message, cmdarg_eol, NULL, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4038 |
+ &cmdarg_type_nonspace }, |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
4039 |
+ {NULL} |
74 | 4040 |
+ }, |
4041 |
+ NULL, |
|
4042 |
+}; |
|
4043 |
+ |
|
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4044 |
+static gchar *do_status (const cmdopts_t *options, cmdarg_value_t *values) |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4045 |
{ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4046 |
- if (!*arg) { |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4047 |
+ if (values[pos_status_status].value.uint == imstatus_size) { |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4048 |
const char *sm = xmpp_getstatusmsg(); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4049 |
scr_LogPrint(LPRINT_NORMAL, "Your status is: [%c] %s", |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4050 |
imstatus2char[xmpp_getstatus()], |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4051 |
(sm ? sm : "")); |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4052 |
- return; |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4053 |
+ } else { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4054 |
+ if (!xmpp_is_online()) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4055 |
+ scr_LogPrint(LPRINT_NORMAL, "You are currently not connected..."); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4056 |
+ scr_check_auto_away(TRUE); |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4057 |
+ xmpp_setstatus(values[pos_status_status].value.uint, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4058 |
+ values[pos_status_jid].value.arg, |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4059 |
+ values[pos_status_message].value.arg, FALSE); |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4060 |
} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4061 |
- arg = to_utf8(arg); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4062 |
- cmd_setstatus(NULL, arg); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4063 |
- g_free(arg); |
74 | 4064 |
+ return NULL; |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4065 |
} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4066 |
|
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4067 |
-static void do_status_to(char *arg) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4068 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4069 |
+// /status_to |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4070 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4071 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4072 |
+static gchar *do_status_to (const cmdopts_t *command, cmdarg_value_t *values); |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4073 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4074 |
+typedef enum { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4075 |
+ pos_statusto_jid = 0, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4076 |
+ pos_statusto_status = 1, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4077 |
+ pos_statusto_message = 2, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4078 |
+} pos_statusto_t; |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4079 |
+ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4080 |
+// no "show" here |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4081 |
+static const string2enum_t s2e_status[] = { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4082 |
+ { "away", away }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4083 |
+ { "offline", offline }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4084 |
+ { "online", available }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4085 |
+ { "avail", available }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4086 |
+ { "notavail", notavail }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4087 |
+ { "dnd", dontdisturb }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4088 |
+ { "free", freeforchat }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4089 |
+#ifdef WITH_DEPRECATED_STATUS_INVISIBLE |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4090 |
+ { "invisible", invisible }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4091 |
+#endif |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4092 |
+ { NULL, 0 }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4093 |
+}; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4094 |
+ |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
4095 |
+static cmdopts_t def_status_to = { |
74 | 4096 |
+ "status_to", |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
4097 |
+ cmd_default, |
74 | 4098 |
+ NULL, |
4099 |
+ do_status_to, |
|
4100 |
+ NULL, |
|
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
4101 |
+ (cmdarg_t[4]){ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4102 |
+ {"jid", pos_statusto_jid, cmdarg_chreq, NULL, &cmdarg_type_fjid, (gpointer)cmdarg_roster_entity}, |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4103 |
+ {"status", pos_statusto_status, cmdarg_chreq, NULL, &cmdarg_type_status_status, (gpointer)s2e_status}, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4104 |
+ {"message", pos_statusto_message, cmdarg_eol, NULL, &cmdarg_type_nonspace}, |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
4105 |
+ {NULL} |
74 | 4106 |
+ }, |
4107 |
+ NULL, |
|
4108 |
+}; |
|
4109 |
+ |
|
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4110 |
+static gchar *do_status_to (const cmdopts_t *options, cmdarg_value_t *values) |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4111 |
{ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4112 |
- char **paramlst; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4113 |
- char *fjid, *st, *msg; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4114 |
- char *jid_utf8 = NULL; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4115 |
- |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4116 |
- paramlst = split_arg(arg, 3, 1); // jid, status, [message] |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4117 |
- fjid = *paramlst; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4118 |
- st = *(paramlst+1); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4119 |
- msg = *(paramlst+2); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4120 |
- |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4121 |
- if (!fjid || !st) { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4122 |
- scr_LogPrint(LPRINT_NORMAL, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4123 |
- "Please specify both a Jabber ID and a status."); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4124 |
- free_arg_lst(paramlst); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4125 |
- return; |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4126 |
+ const char *fjid, *stname, *msg; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4127 |
+ enum imstatus st; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4128 |
+ |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4129 |
+ fjid = values[pos_statusto_jid].value.arg; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4130 |
+ st = values[pos_statusto_status].value.uint; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4131 |
+ msg = values[pos_statusto_message].value.arg; |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4132 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4133 |
+ { // get status name |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4134 |
+ const string2enum_t *list; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4135 |
+ for (list = s2e_status; list -> name != NULL; list ++) |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4136 |
+ if (list -> value == st) { |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4137 |
+ stname = list -> name; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4138 |
+ break; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4139 |
+ } |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4140 |
} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4141 |
- |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4142 |
- // Allow things like /status_to "" away |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4143 |
- if (!*fjid || !strcmp(fjid, ".")) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4144 |
- fjid = NULL; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4145 |
- |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4146 |
- if (fjid) { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4147 |
- // The JID has been specified. Quick check... |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4148 |
- if (check_jid_syntax(fjid)) { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4149 |
- scr_LogPrint(LPRINT_NORMAL|LPRINT_NOTUTF8, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4150 |
- "<%s> is not a valid Jabber ID.", fjid); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4151 |
- fjid = NULL; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4152 |
- } else { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4153 |
- // Convert jid to lowercase |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4154 |
- char *p = fjid; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4155 |
- for ( ; *p && *p != JID_RESOURCE_SEPARATOR; p++) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4156 |
- *p = tolower(*p); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4157 |
- fjid = jid_utf8 = to_utf8(fjid); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4158 |
- } |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4159 |
+ // prevent default status message |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4160 |
+ msg = msg ? msg : ""; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4161 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4162 |
+ scr_log_print (LPRINT_LOGNORM, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4163 |
+ "Sending to <%s> /status %s %s", fjid, stname, msg); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4164 |
+ if (!xmpp_is_online()) |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4165 |
+ scr_log_print (LPRINT_NORMAL, "You are currently not connected..."); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4166 |
+ xmpp_setstatus(st, fjid, msg, FALSE); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4167 |
+ |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
4168 |
+ return NULL; |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4169 |
+} |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4170 |
+ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4171 |
+// |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4172 |
+// /add |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4173 |
+// |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4174 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4175 |
+static gchar *do_add (const cmdopts_t *command, cmdarg_value_t *values); |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4176 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4177 |
+typedef enum { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4178 |
+ pos_add_jid = 0, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4179 |
+ pos_add_name = 1, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4180 |
+} pos_add_t; |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4181 |
+ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4182 |
+static cmdopts_t def_add = { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4183 |
+ "add", |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4184 |
+ cmd_default, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4185 |
+ cmd_check_online, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4186 |
+ do_add, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4187 |
+ NULL, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4188 |
+ (cmdarg_t[3]){ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4189 |
+ { "jid", pos_add_jid, cmdarg_chreq, ".", &cmdarg_type_bjid, (gpointer)cmdarg_roster_entity }, |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4190 |
+ { "name", pos_add_name, cmdarg_default, NULL, &cmdarg_type_nonspace }, |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4191 |
+ {NULL} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4192 |
+ }, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4193 |
+ NULL, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4194 |
+}; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4195 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4196 |
+static gchar *do_add (const cmdopts_t *options, cmdarg_value_t *values) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4197 |
+{ |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4198 |
+ gchar *jid = values[pos_add_jid].value.arg; |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4199 |
+ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4200 |
+ // XXX |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4201 |
+ //mc_strtolower(jid); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4202 |
+ |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4203 |
+ xmpp_addbuddy(jid, values[pos_add_name].value.arg, NULL); |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4204 |
+ scr_log_print (LPRINT_LOGNORM, "Sent presence notification request to <%s>.", |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4205 |
+ jid); |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4206 |
+ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4207 |
+ return NULL; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4208 |
+} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4209 |
+ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4210 |
+// |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4211 |
+// /del |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4212 |
+// |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4213 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4214 |
+static gchar *do_del (const cmdopts_t *command, cmdarg_value_t *values); |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4215 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4216 |
+typedef enum { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4217 |
+ pos_del_jid = 0, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4218 |
+ pos_del_dryrun = 1, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4219 |
+} pos_del_t; |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4220 |
+ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4221 |
+static cmdopts_t def_del = { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4222 |
+ "del", |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4223 |
+ cmd_default, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4224 |
+ cmd_check_online, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4225 |
+ do_del, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4226 |
+ (cmdopt_t[2]){ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4227 |
+ { 'n', "dryrun", |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4228 |
+ { "dryrun", pos_del_dryrun, cmdarg_trigger, NULL, NULL } }, |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4229 |
+ {0} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4230 |
+ }, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4231 |
+ (cmdarg_t[2]){ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4232 |
+ { "jid", pos_del_jid, cmdarg_chreq, ".", &cmdarg_type_buddy, (gpointer)cmdarg_roster_entity }, |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4233 |
+ {NULL} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4234 |
+ }, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4235 |
+ NULL, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4236 |
+}; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4237 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4238 |
+static gchar *do_del (const cmdopts_t *options, cmdarg_value_t *values) |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4239 |
+{ |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4240 |
+ gpointer buddy = values[pos_del_jid].value.rjid.bud; |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4241 |
+ const char *jid = buddy_getjid (buddy); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4242 |
+ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4243 |
+ if (buddy_gettype(buddy) & ROSTER_TYPE_ROOM) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4244 |
+ // This is a chatroom |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4245 |
+ if (buddy_getinsideroom(buddy)) |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4246 |
+ return g_strdup_printf ("You have to leave room <%s> before deleting it!", |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4247 |
+ jid); |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4248 |
+ |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4249 |
+ scr_log_print (LPRINT_LOGNORM, "Removing <%s>...", jid); |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4250 |
+ |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4251 |
+ if (values[pos_del_dryrun].value.swc) { |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4252 |
+ scr_log_print (LPRINT_LOGNORM, "... not really."); |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4253 |
} else { |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4254 |
- // Add the current buddy |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4255 |
- if (current_buddy) |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4256 |
- fjid = (char*)buddy_getjid(BUDDATA(current_buddy)); |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4257 |
- if (!fjid) |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4258 |
- scr_LogPrint(LPRINT_NORMAL, "Please specify a Jabber ID."); |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4259 |
+ // Close the buffer |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4260 |
+ scr_buffer_purge(1, jid); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4261 |
+ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4262 |
+ xmpp_delbuddy(jid); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4263 |
+ scr_update_buddy_window(); |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4264 |
} |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4265 |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4266 |
- if (fjid) { |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4267 |
- char *cmdline; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4268 |
- if (!msg) |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4269 |
- msg = ""; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4270 |
- msg = to_utf8(msg); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4271 |
- cmdline = g_strdup_printf("%s %s", st, msg); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4272 |
- scr_LogPrint(LPRINT_LOGNORM, "Sending to <%s> /status %s", fjid, cmdline); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4273 |
- cmd_setstatus(fjid, cmdline); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4274 |
- g_free(msg); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4275 |
- g_free(cmdline); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4276 |
- g_free(jid_utf8); |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4277 |
- } |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4278 |
- free_arg_lst(paramlst); |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4279 |
+ return NULL; |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4280 |
} |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4281 |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4282 |
-static void do_add(char *arg) |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4283 |
+// |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4284 |
+// /group |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4285 |
+// |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4286 |
+ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4287 |
+static void group_cmd (gpointer group, scmd_group_t action) |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4288 |
{ |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4289 |
- char **paramlst; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4290 |
- char *id, *nick; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4291 |
- char *jid_utf8 = NULL; |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4292 |
- |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4293 |
- if (!xmpp_is_online()) { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4294 |
- scr_LogPrint(LPRINT_NORMAL, "You are not connected."); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4295 |
- return; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4296 |
- } |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4297 |
- |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4298 |
- paramlst = split_arg(arg, 2, 0); // jid, [nickname] |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4299 |
- id = *paramlst; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4300 |
- nick = *(paramlst+1); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4301 |
- |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4302 |
- if (!id) |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4303 |
- nick = NULL; // Allow things like: /add "" nick |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4304 |
- else if (!*id || !strcmp(id, ".")) |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4305 |
- id = NULL; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4306 |
- |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4307 |
- if (id) { |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4308 |
- // The JID has been specified. Quick check... |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4309 |
- if (check_jid_syntax(id)) { |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4310 |
- scr_LogPrint(LPRINT_NORMAL|LPRINT_NOTUTF8, |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4311 |
- "<%s> is not a valid Jabber ID.", id); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4312 |
- id = NULL; |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4313 |
- } else { |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4314 |
- mc_strtolower(id); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4315 |
- id = jid_utf8 = to_utf8(id); |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4316 |
- } |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4317 |
- } else { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4318 |
- // Add the current buddy |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4319 |
- if (current_buddy) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4320 |
- id = (char*)buddy_getjid(BUDDATA(current_buddy)); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4321 |
- if (!id) |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4322 |
- scr_LogPrint(LPRINT_NORMAL, "Please specify a Jabber ID."); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4323 |
- } |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4324 |
- |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4325 |
- if (nick) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4326 |
- nick = to_utf8(nick); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4327 |
- |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4328 |
- if (id) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4329 |
- // 2nd parameter = optional nickname |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4330 |
- xmpp_addbuddy(id, nick, NULL); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4331 |
- scr_LogPrint(LPRINT_LOGNORM, "Sent presence notification request to <%s>.", |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4332 |
- id); |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4333 |
- } |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4334 |
- |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4335 |
- g_free(jid_utf8); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4336 |
- g_free(nick); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4337 |
- free_arg_lst(paramlst); |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4338 |
-} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4339 |
- |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4340 |
-static void do_del(char *arg) |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4341 |
-{ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4342 |
- const char *bjid; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4343 |
- |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4344 |
- if (*arg) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4345 |
- scr_LogPrint(LPRINT_NORMAL, "This action does not require a parameter; " |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4346 |
- "the currently-selected buddy will be deleted."); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4347 |
- return; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4348 |
- } |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4349 |
- |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4350 |
- if (!current_buddy) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4351 |
- return; |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4352 |
- bjid = buddy_getjid(BUDDATA(current_buddy)); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4353 |
- if (!bjid) |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4354 |
- return; |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4355 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4356 |
- if (buddy_gettype(BUDDATA(current_buddy)) & ROSTER_TYPE_ROOM) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4357 |
- // This is a chatroom |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4358 |
- if (buddy_getinsideroom(BUDDATA(current_buddy))) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4359 |
- scr_LogPrint(LPRINT_NORMAL, "You haven't left this room!"); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4360 |
- return; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4361 |
- } |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4362 |
- } |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4363 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4364 |
- // Close the buffer |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4365 |
- scr_buffer_purge(1, NULL); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4366 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4367 |
- scr_LogPrint(LPRINT_LOGNORM, "Removing <%s>...", bjid); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4368 |
- xmpp_delbuddy(bjid); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4369 |
- scr_update_buddy_window(); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4370 |
-} |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4371 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4372 |
-static void do_group(char *arg) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4373 |
-{ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4374 |
- gpointer group = NULL; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4375 |
- guint leave_buddywindow; |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4376 |
- char **paramlst; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4377 |
- char *subcmd; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4378 |
- enum { group_toggle = -1, group_unfold = 0, group_fold = 1 } group_state = 0; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4379 |
- |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4380 |
- if (!*arg) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4381 |
- scr_LogPrint(LPRINT_NORMAL, "Missing parameter."); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4382 |
- return; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4383 |
- } |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4384 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4385 |
- if (!current_buddy) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4386 |
- return; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4387 |
- |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4388 |
- paramlst = split_arg(arg, 2, 0); // subcmd, [arg] |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4389 |
- subcmd = *paramlst; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4390 |
- arg = *(paramlst+1); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4391 |
- |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4392 |
- if (!subcmd || !*subcmd) |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4393 |
- goto do_group_return; // Should not happen |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4394 |
- |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4395 |
- if (!strcasecmp(subcmd, "expand") || !strcasecmp(subcmd, "unfold")) |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4396 |
- group_state = group_unfold; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4397 |
- else if (!strcasecmp(subcmd, "shrink") || !strcasecmp(subcmd, "fold")) |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4398 |
- group_state = group_fold; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4399 |
- else if (!strcasecmp(subcmd, "toggle")) |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4400 |
- group_state = group_toggle; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4401 |
- else { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4402 |
- scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!"); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4403 |
- goto do_group_return; |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4404 |
- } |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4405 |
- |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4406 |
- if (arg && *arg) { |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4407 |
- GSList *roster_elt; |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4408 |
- char *group_utf8 = to_utf8(arg); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4409 |
- roster_elt = roster_find(group_utf8, namesearch, ROSTER_TYPE_GROUP); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4410 |
- g_free(group_utf8); |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4411 |
- if (roster_elt) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4412 |
- group = buddy_getgroup(roster_elt->data); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4413 |
- } else { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4414 |
- group = buddy_getgroup(BUDDATA(current_buddy)); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4415 |
- } |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4416 |
- if (!group) { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4417 |
- scr_LogPrint(LPRINT_NORMAL, "Group not found."); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4418 |
- goto do_group_return; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4419 |
- } |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4420 |
- |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4421 |
// We'll have to redraw the chat window if we're not currently on the group |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4422 |
// entry itself, because it means we'll have to leave the current buddy |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4423 |
// chat window. |
74 | 4424 |
- leave_buddywindow = (group != BUDDATA(current_buddy) && |
4425 |
- group == buddy_getgroup(BUDDATA(current_buddy))); |
|
4426 |
- |
|
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4427 |
- if (!(buddy_gettype(group) & ROSTER_TYPE_GROUP)) { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4428 |
- scr_LogPrint(LPRINT_NORMAL, "You need to select a group."); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4429 |
- goto do_group_return; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4430 |
- } |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4431 |
- |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4432 |
- if (group_state != group_unfold && leave_buddywindow) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4433 |
+ if (action != scmd_group_unfold && |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4434 |
+ ((!current_buddy) || |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4435 |
+ (group != BUDDATA(current_buddy) && |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4436 |
+ group == buddy_getgroup(BUDDATA(current_buddy))))) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4437 |
scr_roster_prev_group(); |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4438 |
|
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4439 |
- buddy_hide_group(group, group_state); |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4440 |
+ buddy_hide_group(group, action); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4441 |
|
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4442 |
buddylist_build(); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4443 |
update_roster = TRUE; |
74 | 4444 |
- |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4445 |
-do_group_return: |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4446 |
- free_arg_lst(paramlst); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4447 |
} |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4448 |
|
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4449 |
+static gchar *do_group (const cmdopts_t *command, cmdarg_value_t *values); |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4450 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4451 |
+typedef enum { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4452 |
+ pos_group_group = 0, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4453 |
+ pos_group_action = 1, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4454 |
+} pos_group_t; |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4455 |
+ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4456 |
+static const string2enum_t s2e_group_scmd[] = { |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4457 |
+ { "expand", scmd_group_unfold }, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4458 |
+ { "unfold", scmd_group_unfold }, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4459 |
+ { "shrink", scmd_group_fold }, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4460 |
+ { "fold", scmd_group_fold }, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4461 |
+ { "toggle", scmd_group_toggle }, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4462 |
+ { NULL, 0 }, |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4463 |
+}; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4464 |
+ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4465 |
+#define SCMD_GROUP(NAME, REALNAME) \ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4466 |
+ { #NAME, cmd_default, NULL, NULL, NULL, NULL, NULL, \ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4467 |
+ (gpointer)scmd_group_##REALNAME } |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4468 |
+static cmdopts_t def_group = { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4469 |
+ "group", |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4470 |
+ cmd_default, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4471 |
+ NULL, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4472 |
+ do_group, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4473 |
+ NULL, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4474 |
+ (cmdarg_t[3]){ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4475 |
+ { "subcommand", pos_group_action, cmdarg_chreq, NULL, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4476 |
+ &cmdarg_type_string2enum, (gpointer)s2e_group_scmd }, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4477 |
+ { "group", pos_group_group, cmdarg_chreq | cmdarg_eol, ".", |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4478 |
+ &cmdarg_type_buddy, (gpointer)cmdarg_roster_grouponly }, |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4479 |
+ {NULL} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4480 |
+ }, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4481 |
+ NULL, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4482 |
+}; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4483 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4484 |
+static gchar *do_group(const cmdopts_t *options, cmdarg_value_t *values) |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4485 |
+{ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4486 |
+ //if (!current_buddy) // XXX do we need this still? |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4487 |
+ // return g_strdup("Command needs selected buddy."); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4488 |
+ |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4489 |
+ group_cmd (values[pos_group_group].value.rjid.bud, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4490 |
+ values[pos_group_action].value.uint); |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4491 |
+ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4492 |
+ return NULL; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4493 |
+} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4494 |
+ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4495 |
+// |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4496 |
+// /say |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4497 |
+// |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
4498 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4499 |
+// FIXME: remove excessive checks, simplify this all. Uses: |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4500 |
+// send_message_to(): |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4501 |
+// - send_message() |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4502 |
+// - /msay send_to |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4503 |
+// - /say_to |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4504 |
+// - /room privmsg |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4505 |
+// send_message(): |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4506 |
+// - say_cmd() |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4507 |
+// - /msay send |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4508 |
+// say_cmd(): |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4509 |
+// - process_line() |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4510 |
+// - /say |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4511 |
+// Probably at least send_message can be removed, and /msay send can use |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4512 |
+// say_cmd(). |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4513 |
+// |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4514 |
+// say_cmd() does: |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4515 |
+// - scr_set_chatmode(TRUE); |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4516 |
+// - scr_show_buddy_window(); |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4517 |
+// - check current buddy presence and type |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4518 |
+// - buddy_setflags(bud, ROSTER_FLAG_LOCK, TRUE); |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4519 |
+// send_message() does: |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4520 |
+// - check current buddy presence and jid availability (type check should ensure that, I think) |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4521 |
+// - determines active resource of current buddy |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4522 |
+// send_message_to() does: |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4523 |
+// - checks online |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4524 |
+// - checks jid presence |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4525 |
+// - checks message presence |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4526 |
+// - checks syntax of jid |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4527 |
+// - converts message type |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4528 |
+// - extracts bare jid (for hook) |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4529 |
+// - jumps to window if not quiet |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4530 |
+// - unsets resource (for hook) |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4531 |
+// - prepares message for hook |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4532 |
+// - sends message |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4533 |
+// - checks for encryption error |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4534 |
+// - calls hook |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4535 |
+// So, we can make 'activeresource' checker, that will eliminate most of the checks, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4536 |
+// we can move online check to caller space, we can do chatmode things only when not |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4537 |
+// quiet. That essentially leaves only send_message_to. However that causes mcabber |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4538 |
+// not enter chat mode, when on wrong buddy (status/group). |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4539 |
+// Add '--to' and '--subject' to commands. |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4540 |
+ |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4541 |
static int send_message_to(const char *fjid, const char *msg, const char *subj, |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4542 |
- LmMessageSubType type_overwrite, bool quiet) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4543 |
+ msgtype_t msg_type, bool quiet) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4544 |
{ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4545 |
char *bare_jid, *rp; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4546 |
char *hmsg; |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4547 |
@@ -1285,6 +2169,7 @@ |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4548 |
gint retval = 0; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4549 |
int isroom; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4550 |
gpointer xep184 = NULL; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4551 |
+ LmMessageSubType type_overwrite = LM_MESSAGE_SUB_TYPE_NOT_SET; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4552 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4553 |
if (!xmpp_is_online()) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4554 |
scr_LogPrint(LPRINT_NORMAL, "You are not connected."); |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4555 |
@@ -1299,11 +2184,15 @@ |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4556 |
return 1; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4557 |
} |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4558 |
if (check_jid_syntax((char*)fjid)) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4559 |
- scr_LogPrint(LPRINT_NORMAL|LPRINT_NOTUTF8, |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4560 |
- "<%s> is not a valid Jabber ID.", fjid); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4561 |
+ scr_LogPrint(LPRINT_NORMAL, "<%s> is not a valid Jabber ID.", fjid); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4562 |
return 1; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4563 |
} |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4564 |
|
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4565 |
+ if (msg_type == msgtype_normal) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4566 |
+ type_overwrite = LM_MESSAGE_SUB_TYPE_NORMAL; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4567 |
+ else if (msg_type == msgtype_headline) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4568 |
+ type_overwrite = LM_MESSAGE_SUB_TYPE_HEADLINE; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4569 |
+ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4570 |
// We must use the bare jid in hk_message_out() |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4571 |
rp = strchr(fjid, JID_RESOURCE_SEPARATOR); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4572 |
if (rp) |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4573 |
@@ -1351,213 +2240,221 @@ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4574 |
return retval; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4575 |
} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4576 |
|
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4577 |
-// send_message(msg, subj, type_overwrite) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4578 |
-// Write the message in the buddy's window and send the message on |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4579 |
-// the network. |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4580 |
-static void send_message(const char *msg, const char *subj, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4581 |
- LmMessageSubType type_overwrite) |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4582 |
+static void say_cmd(char *arg) |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4583 |
{ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4584 |
- const char *bjid; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4585 |
- char *jid; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4586 |
- const char *activeres; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4587 |
- |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4588 |
+ // it is current buddy |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4589 |
if (!current_buddy) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4590 |
- scr_LogPrint(LPRINT_NORMAL, "No buddy is currently selected."); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4591 |
+ scr_log_print (LPRINT_NORMAL, "No buddy selected."); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4592 |
+ return; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4593 |
+ } else if (!(buddy_gettype (BUDDATA(current_buddy)) & cmdarg_roster_entity)) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4594 |
+ scr_log_print (LPRINT_NORMAL, "Currently selected buddy is of wrong type."); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4595 |
return; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4596 |
} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4597 |
|
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4598 |
- bjid = CURRENT_JID; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4599 |
- if (!bjid) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4600 |
- scr_LogPrint(LPRINT_NORMAL, "No buddy is currently selected."); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4601 |
- return; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4602 |
- } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4603 |
- |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4604 |
- activeres = buddy_getactiveresource(BUDDATA(current_buddy)); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4605 |
- if (activeres) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4606 |
- jid = g_strdup_printf("%s/%s", bjid, activeres); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4607 |
- else |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4608 |
- jid = g_strdup(bjid); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4609 |
- |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4610 |
- send_message_to(jid, msg, subj, type_overwrite, FALSE); |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4611 |
- g_free(jid); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4612 |
-} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4613 |
- |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4614 |
-static LmMessageSubType scan_mtype(char **arg) |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4615 |
-{ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4616 |
- // Try splitting it |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4617 |
- char **parlist = split_arg(*arg, 2, 1); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4618 |
- LmMessageSubType result = LM_MESSAGE_SUB_TYPE_NOT_SET; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4619 |
- // Is it a good parameter? |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4620 |
- if (parlist && *parlist) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4621 |
- if (!strcmp("-n", *parlist)) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4622 |
- result = LM_MESSAGE_SUB_TYPE_NORMAL; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4623 |
- } else if (!strcmp("-h", *parlist)) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4624 |
- result = LM_MESSAGE_SUB_TYPE_HEADLINE; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4625 |
- } |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4626 |
- if (result != LM_MESSAGE_SUB_TYPE_NOT_SET || (!strcmp("--", *parlist))) |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4627 |
- *arg += strlen(*arg) - (parlist[1] ? strlen(parlist[1]) : 0); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4628 |
- } |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4629 |
- // Anything found? -> skip it |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4630 |
- free_arg_lst(parlist); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4631 |
- return result; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4632 |
-} |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4633 |
- |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4634 |
-void say_cmd(char *arg, int parse_flags) |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4635 |
-{ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4636 |
- gpointer bud; |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4637 |
- LmMessageSubType msgtype = LM_MESSAGE_SUB_TYPE_NOT_SET; |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4638 |
- |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4639 |
scr_set_chatmode(TRUE); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4640 |
scr_show_buddy_window(); |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4641 |
|
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4642 |
- if (!current_buddy) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4643 |
- scr_LogPrint(LPRINT_NORMAL, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4644 |
- "Whom are you talking to? Please select a buddy."); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4645 |
- return; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4646 |
+ buddy_setflags(bud, ROSTER_FLAG_LOCK, TRUE); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4647 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4648 |
+ const char *resource = buddy_getactiveresource (BUDDATA(current_buddy)); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4649 |
+ const char *jid = buddy_getjid (BUDDATA(current_buddy)); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4650 |
+ gchar *fjid = g_strdup_printf ("%s" JID_RESOURCE_SEPARATORSTR "%s", jid, resource); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4651 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4652 |
+ send_message_to (fjid, arg, NULL, msgtype_not_set, FALSE); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4653 |
+ g_free (fjid); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4654 |
+} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4655 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4656 |
+static gchar *do_say (const cmdopts_t *command, cmdarg_value_t *values); |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4657 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4658 |
+typedef enum { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4659 |
+ pos_say_msg = 0, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4660 |
+ pos_say_msgtype = 1, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4661 |
+} pos_say_t; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4662 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4663 |
+static cmdopts_t def_say = { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4664 |
+ "say", |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4665 |
+ cmd_default, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4666 |
+ NULL, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4667 |
+ do_say, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4668 |
+ (cmdopt_t[4]){ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4669 |
+ { 'n', "normal", { "normal", pos_say_msgtype, cmdarg_switch, NULL, NULL, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4670 |
+ NULL, (gpointer)msgtype_normal}}, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4671 |
+ { 'h', "headline", { "headline", pos_say_msgtype, cmdarg_switch, NULL, NULL, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4672 |
+ NULL, (gpointer)msgtype_headline } }, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4673 |
+ { 'd', "default", { "default", pos_say_msgtype, cmdarg_switch, NULL, NULL, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4674 |
+ NULL, (gpointer)msgtype_not_set } }, |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4675 |
+ {0} |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4676 |
+ }, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4677 |
+ (cmdarg_t[2]){ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4678 |
+ { "message", pos_say_msg, cmdarg_eol | cmdarg_chreq, NULL, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4679 |
+ &cmdarg_type_nonspace }, |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4680 |
+ {NULL} |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4681 |
+ }, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4682 |
+ NULL, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4683 |
+}; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4684 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4685 |
+static gchar *do_say (const cmdopts_t *options, cmdarg_value_t *values) |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4686 |
+{ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4687 |
+ say_cmd(values[pos_say_msg].value.arg, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4688 |
+ (msgtype_t) (values[pos_say_msgtype].src -> userdata)); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
4689 |
+ return NULL; |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4690 |
+} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4691 |
+ |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4692 |
+// |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4693 |
+// /msay |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4694 |
+// |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4695 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4696 |
+static gchar *do_msay (const cmdopts_t *command, cmdarg_value_t *values); |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4697 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4698 |
+typedef enum { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4699 |
+ scmd_msay_begin, scmd_msay_verbatim, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4700 |
+ scmd_msay_send, scmd_msay_send_to, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4701 |
+ scmd_msay_toggle, scmd_msay_toggle_verbatim, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4702 |
+ scmd_msay_abort, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4703 |
+} scmd_msay_t; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4704 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4705 |
+typedef enum { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4706 |
+ pos_msay_scmd = 0, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4707 |
+ pos_msay_subject = 1, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4708 |
+ pos_msay_jid = 1, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4709 |
+ pos_msay_msgtype = 2, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4710 |
+} pos_msay_t; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4711 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4712 |
+static cmdopts_t def_msay = { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4713 |
+ "msay", |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4714 |
+ cmd_default, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4715 |
+ NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4716 |
+ do_msay, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4717 |
+ NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4718 |
+ (cmdarg_t[2]){ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4719 |
+ { "subcommand", pos_msay_scmd, cmdarg_subcmd|cmdarg_chreq, NULL, NULL }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4720 |
+ {NULL}, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4721 |
+ }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4722 |
+ (cmdopts_t[8]){ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4723 |
+ { "begin", cmd_default, NULL, NULL, NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4724 |
+ (cmdarg_t[2]){{"subject", pos_msay_subject, cmdarg_eol, NULL, &cmdarg_type_nonspace}, {NULL}}, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4725 |
+ NULL, (gpointer)scmd_msay_begin }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4726 |
+ { "verbatim", cmd_default, NULL, NULL, NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4727 |
+ (cmdarg_t[2]){{"subject", pos_msay_subject, cmdarg_eol, NULL, &cmdarg_type_nonspace}, {NULL}}, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4728 |
+ NULL, (gpointer)scmd_msay_verbatim }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4729 |
+ { "send", cmd_default, NULL, NULL, |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4730 |
+ (cmdopt_t[4]){ |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4731 |
+ {'n', "normal", {"normal", pos_msay_msgtype, cmdarg_switch, NULL, NULL, NULL, (gpointer)msgtype_normal}}, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4732 |
+ {'h', "headline", {"headline", pos_msay_msgtype, cmdarg_switch, NULL, NULL, NULL, (gpointer)msgtype_headline}}, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4733 |
+ {'d', "default", {"default", pos_msay_msgtype, cmdarg_switch, NULL, NULL, NULL, (gpointer)msgtype_not_set}}, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4734 |
+ {0} |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4735 |
+ }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4736 |
+ NULL, NULL, (gpointer)scmd_msay_send, 0 }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4737 |
+ { "send_to", cmd_default, NULL, NULL, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4738 |
+ (cmdopt_t[4]){ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4739 |
+ {'n', "normal", {"normal", pos_msay_msgtype, cmdarg_switch, NULL, NULL, NULL, (gpointer)msgtype_normal}}, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4740 |
+ {'h', "headline", {"headline", pos_msay_msgtype, cmdarg_switch, NULL, NULL, NULL, (gpointer)msgtype_headline}}, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4741 |
+ {'d', "default", {"default", pos_msay_msgtype, cmdarg_switch, NULL, NULL, NULL, (gpointer)msgtype_not_set}}, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4742 |
+ {0} |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4743 |
+ }, |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4744 |
+ (cmdarg_t[2]){{"jid", pos_msay_jid, cmdarg_chreq, NULL, &cmdarg_type_fjid, (gpointer)cmdarg_roster_entity}, {NULL}}, |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4745 |
+ NULL, (gpointer)scmd_msay_send_to }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4746 |
+ { "toggle", cmd_default, NULL, NULL, NULL, NULL, NULL, (gpointer)scmd_msay_toggle }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4747 |
+ { "toggle_verbatim", cmd_default, NULL, NULL, NULL, NULL, NULL, (gpointer)scmd_msay_toggle_verbatim }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4748 |
+ { "abort", cmd_default, NULL, NULL, NULL, NULL, NULL, (gpointer)scmd_msay_abort }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4749 |
+ }, |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4750 |
+}; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4751 |
+ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4752 |
+static gchar *do_msay (const cmdopts_t *command, cmdarg_value_t *values) |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4753 |
+{ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4754 |
+ const char *msg; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4755 |
+ scmd_msay_t subcmd = (scmd_msay_t) (values[pos_msay_scmd].src -> userdata); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4756 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4757 |
+ if (subcmd == scmd_msay_toggle) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4758 |
+ if (scr_get_multimode()) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4759 |
+ subcmd = scmd_msay_send; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4760 |
+ else |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4761 |
+ subcmd = scmd_msay_begin; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4762 |
+ } else if (subcmd == scmd_msay_toggle_verbatim) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4763 |
+ if (scr_get_multimode()) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4764 |
+ subcmd = scmd_msay_send; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4765 |
+ else |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4766 |
+ subcmd = scmd_msay_verbatim; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4767 |
} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4768 |
|
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4769 |
- bud = BUDDATA(current_buddy); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4770 |
- if (!(buddy_gettype(bud) & |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4771 |
- (ROSTER_TYPE_USER|ROSTER_TYPE_AGENT|ROSTER_TYPE_ROOM))) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4772 |
- scr_LogPrint(LPRINT_NORMAL, "This is not a user."); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4773 |
- return; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4774 |
- } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4775 |
- |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4776 |
- buddy_setflags(bud, ROSTER_FLAG_LOCK, TRUE); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4777 |
- if (parse_flags) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4778 |
- msgtype = scan_mtype(&arg); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4779 |
- arg = to_utf8(arg); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4780 |
- send_message(arg, NULL, msgtype); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4781 |
- g_free(arg); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4782 |
-} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4783 |
- |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4784 |
-static void do_say(char *arg) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4785 |
- say_cmd(arg, 1); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4786 |
-} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4787 |
- |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4788 |
-static void do_msay(char *arg) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4789 |
-{ |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4790 |
- /* Parameters: begin verbatim abort send send_to */ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4791 |
- char **paramlst; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4792 |
- char *subcmd; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4793 |
- |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4794 |
- paramlst = split_arg(arg, 2, 1); // subcmd, arg |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4795 |
- subcmd = *paramlst; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4796 |
- arg = *(paramlst+1); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4797 |
- |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4798 |
- if (!subcmd || !*subcmd) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4799 |
- scr_LogPrint(LPRINT_NORMAL, "Missing parameter."); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4800 |
- scr_LogPrint(LPRINT_NORMAL, "Please read the manual before using " |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4801 |
- "the /msay command."); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4802 |
- scr_LogPrint(LPRINT_NORMAL, "(Use \"%s begin\" to enter " |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4803 |
- "multi-line mode...)", mkcmdstr("msay")); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4804 |
- goto do_msay_return; |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4805 |
- } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4806 |
- |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4807 |
- if (!strcasecmp(subcmd, "toggle")) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4808 |
- if (scr_get_multimode()) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4809 |
- subcmd = "send"; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4810 |
- else |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4811 |
- subcmd = "begin"; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4812 |
- } else if (!strcasecmp(subcmd, "toggle_verbatim")) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4813 |
- if (scr_get_multimode()) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4814 |
- subcmd = "send"; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4815 |
- else |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4816 |
- subcmd = "verbatim"; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4817 |
- } |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4818 |
- |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4819 |
- if (!strcasecmp(subcmd, "abort")) { |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4820 |
+ if (subcmd == scmd_msay_abort) { |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4821 |
if (scr_get_multimode()) |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4822 |
scr_LogPrint(LPRINT_NORMAL, "Leaving multi-line message mode."); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4823 |
scr_set_multimode(FALSE, NULL); |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4824 |
- goto do_msay_return; |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4825 |
- } else if ((!strcasecmp(subcmd, "begin")) || |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4826 |
- (!strcasecmp(subcmd, "verbatim"))) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4827 |
- bool verbat; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4828 |
- gchar *subj_utf8 = to_utf8(arg); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4829 |
- if (!strcasecmp(subcmd, "verbatim")) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4830 |
- scr_set_multimode(2, subj_utf8); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4831 |
- verbat = TRUE; |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4832 |
+ return NULL; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4833 |
+ } else if (subcmd == scmd_msay_begin || subcmd == scmd_msay_verbatim) { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4834 |
+ gchar *subject = values[pos_msay_subject].value.arg; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4835 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4836 |
+ if (subcmd == scmd_msay_verbatim) { |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4837 |
+ scr_set_multimode(2, subject); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4838 |
} else { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4839 |
- scr_set_multimode(1, subj_utf8); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4840 |
- verbat = FALSE; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4841 |
+ scr_set_multimode(1, subject); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4842 |
} |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4843 |
|
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4844 |
scr_LogPrint(LPRINT_NORMAL, "Entered %smulti-line message mode.", |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4845 |
- verbat ? "VERBATIM " : ""); |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4846 |
+ subcmd == scmd_msay_verbatim ? "VERBATIM " : ""); |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4847 |
scr_LogPrint(LPRINT_NORMAL, "Select a buddy and use \"%s send\" " |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4848 |
"when your message is ready.", mkcmdstr("msay")); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4849 |
- if (verbat) |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4850 |
+ if (subcmd == scmd_msay_verbatim) |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4851 |
scr_LogPrint(LPRINT_NORMAL, "Use \"%s abort\" to abort this mode.", |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4852 |
mkcmdstr("msay")); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4853 |
- g_free(subj_utf8); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4854 |
- goto do_msay_return; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4855 |
- } else if (strcasecmp(subcmd, "send") && strcasecmp(subcmd, "send_to")) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4856 |
- scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!"); |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4857 |
- goto do_msay_return; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4858 |
+ return NULL; |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4859 |
} |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4860 |
|
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4861 |
- /* send/send_to command */ |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4862 |
+ /* scmd_msay_send or scmd_msay_send_to */ |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4863 |
|
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4864 |
if (!scr_get_multimode()) { |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4865 |
- scr_LogPrint(LPRINT_NORMAL, "No message to send. " |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4866 |
+ return g_strdup_printf ("No message to send. " |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4867 |
"Use \"%s begin\" first.", mkcmdstr("msay")); |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4868 |
- goto do_msay_return; |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4869 |
} |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4870 |
|
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4871 |
scr_set_chatmode(TRUE); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4872 |
scr_show_buddy_window(); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4873 |
|
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4874 |
- if (!strcasecmp(subcmd, "send_to")) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4875 |
- int err = FALSE; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4876 |
- gchar *msg_utf8; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4877 |
- LmMessageSubType msg_type = scan_mtype(&arg); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4878 |
- // Let's send to the specified JID. We leave now if there |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4879 |
- // has been an error (so we don't leave multi-line mode). |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4880 |
- arg = to_utf8(arg); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4881 |
- msg_utf8 = to_utf8(scr_get_multiline()); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4882 |
- if (msg_utf8) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4883 |
- err = send_message_to(arg, msg_utf8, scr_get_multimode_subj(), msg_type, |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4884 |
- FALSE); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4885 |
- g_free(msg_utf8); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4886 |
- } |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4887 |
- g_free(arg); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4888 |
- if (err) |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4889 |
- goto do_msay_return; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4890 |
- } else { // Send to currently selected buddy |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4891 |
- gpointer bud; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4892 |
- gchar *msg_utf8; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4893 |
- |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4894 |
- if (!current_buddy) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4895 |
- scr_LogPrint(LPRINT_NORMAL, "Whom are you talking to?"); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4896 |
- goto do_msay_return; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4897 |
- } |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4898 |
- |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4899 |
- bud = BUDDATA(current_buddy); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4900 |
- if (!(buddy_gettype(bud) & |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4901 |
- (ROSTER_TYPE_USER|ROSTER_TYPE_AGENT|ROSTER_TYPE_ROOM))) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4902 |
- scr_LogPrint(LPRINT_NORMAL, "This is not a user."); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4903 |
- goto do_msay_return; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4904 |
- } |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4905 |
- |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4906 |
- buddy_setflags(bud, ROSTER_FLAG_LOCK, TRUE); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4907 |
- msg_utf8 = to_utf8(scr_get_multiline()); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4908 |
- if (msg_utf8) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4909 |
- send_message(msg_utf8, scr_get_multimode_subj(), scan_mtype(&arg)); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4910 |
- g_free(msg_utf8); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4911 |
+ if ((msg = scr_get_multiline())) { |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4912 |
+ msgtype_t msg_type = (msgtype_t) (values[pos_msay_msgtype].src -> userdata); |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4913 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4914 |
+ if (subcmd == scmd_msay_send_to) { |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4915 |
+ const char *jid = values[pos_msay_jid].value.arg; |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4916 |
+ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4917 |
+ // Let's send to the specified JID. We leave now if there |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4918 |
+ // has been an error (so we don't leave multi-line mode). |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4919 |
+ if (send_message_to(jid, msg, scr_get_multimode_subj(), |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4920 |
+ msg_type, FALSE)) |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4921 |
+ return NULL; |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4922 |
+ } else { // Send to currently selected buddy |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4923 |
+ gpointer bud; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4924 |
+ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4925 |
+ if (!current_buddy) { |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4926 |
+ return g_strdup ("Whom are you talking to?"); |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4927 |
+ } |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4928 |
+ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4929 |
+ bud = BUDDATA(current_buddy); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4930 |
+ if (!(buddy_gettype(bud) & |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4931 |
+ (ROSTER_TYPE_USER|ROSTER_TYPE_AGENT|ROSTER_TYPE_ROOM))) { |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4932 |
+ return g_strdup ("This is not a user."); |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4933 |
+ } |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4934 |
+ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4935 |
+ buddy_setflags(bud, ROSTER_FLAG_LOCK, TRUE); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4936 |
+ send_message(msg, scr_get_multimode_subj(), msg_type); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4937 |
} |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4938 |
} |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4939 |
+ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4940 |
scr_set_multimode(FALSE, NULL); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4941 |
scr_LogPrint(LPRINT_NORMAL, "You have left multi-line message mode."); |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4942 |
-do_msay_return: |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4943 |
- free_arg_lst(paramlst); |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4944 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4945 |
+ return NULL; |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4946 |
} |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4947 |
|
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4948 |
+// |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4949 |
+// /say_to |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4950 |
+// |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4951 |
+ |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4952 |
// load_message_from_file(filename) |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4953 |
// Read the whole content of a file. |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
4954 |
// The data are converted to UTF8, they should be freed by the caller after |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
4955 |
// use. |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
4956 |
-char *load_message_from_file(const char *filename) |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
4957 |
+char *load_message_from_file(const char *filename, const char *localfn) |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
4958 |
{ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
4959 |
FILE *fd; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
4960 |
struct stat buf; |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4961 |
@@ -1566,7 +2463,7 @@ |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4962 |
char *next_utf8_char; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4963 |
size_t len; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4964 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4965 |
- fd = fopen(filename, "r"); |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
4966 |
+ fd = fopen(localfn, "r"); |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4967 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4968 |
if (!fd || fstat(fileno(fd), &buf)) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4969 |
scr_LogPrint(LPRINT_LOGNORM, "Cannot open message file (%s)", filename); |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
4970 |
@@ -1632,273 +2529,287 @@ |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4971 |
return msgbuf_utf8; |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4972 |
} |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4973 |
|
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4974 |
-static void do_say_to(char *arg) |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4975 |
+static gchar *do_say_to (const cmdopts_t *command, cmdarg_value_t *values); |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4976 |
+ |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4977 |
+typedef enum { |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4978 |
+ pos_sayto_jid = 0, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4979 |
+ pos_sayto_msg = 1, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4980 |
+ pos_sayto_msgtype = 2, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4981 |
+ pos_sayto_quiet = 3, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4982 |
+ pos_sayto_esc = 4, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4983 |
+ pos_sayto_file = 5, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4984 |
+} pos_sayto_t; |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4985 |
+ |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
4986 |
+static cmdopts_t def_say_to = { |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4987 |
+ "say_to", |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4988 |
+ cmd_default, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4989 |
+ cmd_check_online, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4990 |
+ do_say_to, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4991 |
+ (cmdopt_t[7]){ |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4992 |
+ {'n', "normal", {"normal", pos_sayto_msgtype, cmdarg_switch, NULL, NULL, NULL, (gpointer)msgtype_normal}}, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4993 |
+ {'h', "headline", {"headline", pos_sayto_msgtype, cmdarg_switch, NULL, NULL, NULL, (gpointer)msgtype_headline}}, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4994 |
+ {'d', "default", {"default", pos_sayto_msgtype, cmdarg_switch, NULL, NULL, NULL, (gpointer)msgtype_not_set}}, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4995 |
+ {'q', "quiet", {"quiet", pos_sayto_quiet, cmdarg_trigger, NULL, NULL}}, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4996 |
+ {'e', "escapes", {"escapes", pos_sayto_esc, cmdarg_trigger, NULL, NULL}}, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4997 |
+ {'f', "file", {"filename", pos_sayto_file, cmdarg_required, NULL, &cmdarg_type_filename}}, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4998 |
+ {0} |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
4999 |
+ }, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5000 |
+ (cmdarg_t[3]){ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5001 |
+ {"jid", pos_sayto_jid, cmdarg_chreq, ".", &cmdarg_type_fjid, (gpointer)cmdarg_roster_entity}, |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5002 |
+ {"message", pos_sayto_msg, cmdarg_eol, NULL, &cmdarg_type_nonspace}, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5003 |
+ {NULL} |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5004 |
+ }, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5005 |
+ NULL, |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5006 |
+}; |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5007 |
+ |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5008 |
+static gchar *do_say_to (const cmdopts_t *command, cmdarg_value_t *values) |
65 | 5009 |
{ |
5010 |
- char **paramlst; |
|
5011 |
- char *fjid, *msg_utf8; |
|
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5012 |
- char *msg; |
65 | 5013 |
- char *unescaped_msg = NULL; |
5014 |
- char *uncompletedfjid = NULL; |
|
5015 |
- char *file = NULL; |
|
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5016 |
- LmMessageSubType msg_type = LM_MESSAGE_SUB_TYPE_NOT_SET; |
65 | 5017 |
- bool quiet = FALSE; |
5018 |
- bool eval = FALSE; |
|
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5019 |
- |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5020 |
- if (!xmpp_is_online()) { |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5021 |
- scr_LogPrint(LPRINT_NORMAL, "You are not connected."); |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5022 |
- return; |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5023 |
- } |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5024 |
- |
65 | 5025 |
- msg_type = scan_mtype(&arg); |
5026 |
- paramlst = split_arg(arg, 2, 1); // jid, message (or option, jid, message) |
|
5027 |
- |
|
5028 |
- if (!*paramlst) { // No parameter? |
|
5029 |
- scr_LogPrint(LPRINT_NORMAL, "Please specify a Jabber ID."); |
|
5030 |
- free_arg_lst(paramlst); |
|
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5031 |
- return; |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5032 |
- } |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5033 |
- |
65 | 5034 |
- // Check for an option parameter |
5035 |
- while (*paramlst) { |
|
5036 |
- if (!strcmp(*paramlst, "-q")) { |
|
5037 |
- char **oldparamlst = paramlst; |
|
5038 |
- paramlst = split_arg(*(oldparamlst+1), 2, 1); // jid, message |
|
5039 |
- free_arg_lst(oldparamlst); |
|
5040 |
- quiet = TRUE; |
|
5041 |
- } else if (!strcmp(*paramlst, "-e")) { |
|
5042 |
- char **oldparamlst = paramlst; |
|
5043 |
- paramlst = split_arg(*(oldparamlst+1), 2, 1); // jid, message |
|
5044 |
- free_arg_lst(oldparamlst); |
|
5045 |
- eval = TRUE; |
|
5046 |
- } else if (!strcmp(*paramlst, "-f")) { |
|
5047 |
- char **oldparamlst = paramlst; |
|
5048 |
- paramlst = split_arg(*(oldparamlst+1), 2, 1); // filename, jid |
|
5049 |
- free_arg_lst(oldparamlst); |
|
5050 |
- if (!*paramlst) { |
|
5051 |
- scr_LogPrint(LPRINT_NORMAL, "Wrong usage."); |
|
5052 |
- free_arg_lst(paramlst); |
|
5053 |
- return; |
|
5054 |
- } |
|
5055 |
- file = g_strdup(*paramlst); |
|
5056 |
- // One more parameter shift... |
|
5057 |
- oldparamlst = paramlst; |
|
5058 |
- paramlst = split_arg(*(oldparamlst+1), 2, 1); // jid, nothing |
|
5059 |
- free_arg_lst(oldparamlst); |
|
5060 |
- } else |
|
5061 |
- break; |
|
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
5062 |
- } |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
5063 |
- |
65 | 5064 |
- if (!*paramlst) { |
5065 |
- scr_LogPrint(LPRINT_NORMAL, "Wrong usage."); |
|
5066 |
- free_arg_lst(paramlst); |
|
5067 |
- return; |
|
5068 |
- } |
|
5069 |
- |
|
5070 |
- fjid = *paramlst; |
|
5071 |
- msg = *(paramlst+1); |
|
5072 |
- |
|
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5073 |
- if (fjid[0] == '.') { |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5074 |
- const gchar *cjid = (current_buddy ? CURRENT_JID : NULL); |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5075 |
- if (fjid[1] == '\0') { |
65 | 5076 |
- fjid = g_strdup(cjid); |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5077 |
- } else if (fjid[1] == JID_RESOURCE_SEPARATOR) { |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5078 |
- char *res_utf8 = to_utf8(fjid+2); |
65 | 5079 |
- fjid = g_strdup_printf("%s%c%s", cjid, JID_RESOURCE_SEPARATOR, res_utf8); |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5080 |
- g_free(res_utf8); |
65 | 5081 |
- } else |
5082 |
- fjid = to_utf8(fjid); |
|
5083 |
- } else |
|
5084 |
- fjid = to_utf8(fjid); |
|
5085 |
- |
|
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5086 |
+ char *fjid, *msg, *file; |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5087 |
+ gchar *freeme = NULL; // fjid |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5088 |
+ gchar *freeme2 = NULL; // msg |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5089 |
+ msgtype_t msg_type = (msgtype_t) (values[pos_sayto_msgtype].src -> userdata); |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5090 |
+ |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5091 |
+ fjid = values[pos_sayto_jid].value.arg; |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5092 |
+ msg = values[pos_sayto_msg].value.arg; |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5093 |
+ file = values[pos_sayto_file].value.fname.utf8; |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5094 |
+ |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5095 |
+ // XXX this is not yet in default fjid checker. should we add it there? |
65 | 5096 |
if (!strchr(fjid, JID_DOMAIN_SEPARATOR)) { |
5097 |
const gchar *append_server = settings_opt_get("default_server"); |
|
5098 |
if (append_server) { |
|
5099 |
gchar *res = strchr(fjid, JID_RESOURCE_SEPARATOR); |
|
5100 |
- uncompletedfjid = fjid; |
|
5101 |
if (res) { |
|
5102 |
*res++ = '\0'; |
|
5103 |
fjid = g_strdup_printf("%s%c%s%c%s", fjid, JID_DOMAIN_SEPARATOR, append_server, |
|
5104 |
JID_RESOURCE_SEPARATOR, res); |
|
5105 |
} else |
|
5106 |
fjid = g_strdup_printf("%s%c%s", fjid, JID_DOMAIN_SEPARATOR, append_server); |
|
5107 |
+ g_free(freeme); |
|
5108 |
+ freeme = fjid; |
|
5109 |
} |
|
5110 |
} |
|
5111 |
||
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5112 |
- if (check_jid_syntax(fjid)) { |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5113 |
- scr_LogPrint(LPRINT_NORMAL, "Please specify a valid Jabber ID."); |
65 | 5114 |
- free_arg_lst(paramlst); |
5115 |
- g_free(uncompletedfjid); |
|
5116 |
- g_free(fjid); |
|
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5117 |
- return; |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5118 |
- } |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5119 |
- |
65 | 5120 |
- if (!file) { |
5121 |
- msg_utf8 = to_utf8(msg); |
|
5122 |
- if (eval) { |
|
5123 |
- unescaped_msg = ut_unescape_tabs_cr(msg_utf8); |
|
5124 |
+ if (file == NULL) { |
|
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5125 |
+ if (values[pos_sayto_esc].value.swc) { |
65 | 5126 |
+ freeme2 = ut_unescape_tabs_cr(msg); |
5127 |
// We must not free() if the original string was returned |
|
5128 |
- if (unescaped_msg == msg_utf8) |
|
5129 |
- unescaped_msg = NULL; |
|
5130 |
+ if (freeme2 == msg) |
|
5131 |
+ freeme2 = NULL; |
|
5132 |
+ else |
|
5133 |
+ msg = freeme2; |
|
5134 |
} |
|
5135 |
- msg = (unescaped_msg ? unescaped_msg : msg_utf8); |
|
5136 |
} else { |
|
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5137 |
- char *filename_xp; |
65 | 5138 |
if (msg) |
5139 |
scr_LogPrint(LPRINT_NORMAL, "say_to: extra parameter ignored."); |
|
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5140 |
- filename_xp = expand_filename(file); |
65 | 5141 |
- msg = msg_utf8 = load_message_from_file(filename_xp); |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5142 |
- g_free(filename_xp); |
65 | 5143 |
- g_free(file); |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5144 |
+ freeme2 = msg = load_message_from_file(file, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5145 |
+ values[pos_sayto_file].value.fname.local); |
65 | 5146 |
} |
5147 |
||
5148 |
- send_message_to(fjid, msg, NULL, msg_type, quiet); |
|
5149 |
- |
|
5150 |
- g_free(uncompletedfjid); |
|
5151 |
- g_free(fjid); |
|
5152 |
- g_free(msg_utf8); |
|
5153 |
- g_free(unescaped_msg); |
|
5154 |
- free_arg_lst(paramlst); |
|
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5155 |
+ send_message_to(fjid, msg, NULL, msg_type, values[pos_sayto_quiet].value.swc); |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5156 |
+ |
65 | 5157 |
+ g_free(freeme); |
5158 |
+ g_free(freeme2); |
|
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5159 |
+ |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
5160 |
+ return NULL; |
65 | 5161 |
} |
5162 |
||
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5163 |
-// buffer_updown(updown, nblines) |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5164 |
-// updown: -1=up, +1=down |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5165 |
-inline static void buffer_updown(int updown, char *nlines) |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5166 |
+// |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5167 |
+// /buffer |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5168 |
+// |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5169 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5170 |
+static gchar *do_buffer (const cmdopts_t *command, cmdarg_value_t *values); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5171 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5172 |
+typedef enum { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5173 |
+ scmd_buffer_close, scmd_buffer_close_all, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5174 |
+ scmd_buffer_clear, scmd_buffer_purge, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5175 |
+ scmd_buffer_list, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5176 |
+ scmd_buffer_top, scmd_buffer_bottom, scmd_buffer_up, scmd_buffer_down, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5177 |
+ scmd_buffer_date, scmd_buffer_percent, scmd_buffer_readmark, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5178 |
+ scmd_buffer_search_backward, scmd_buffer_search_forward, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5179 |
+ scmd_buffer_scroll_lock, scmd_buffer_scroll_unlock, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5180 |
+ scmd_buffer_scroll_toggle, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5181 |
+ scmd_buffer_save, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5182 |
+} scmd_buffer_t; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5183 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5184 |
+typedef enum { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5185 |
+ pos_buffer_scmd = 0, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5186 |
+ pos_buffer_jid = 1, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5187 |
+ pos_buffer_n = 1, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5188 |
+ pos_buffer_date = 1, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5189 |
+ pos_buffer_percent = 1, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5190 |
+ pos_buffer_text = 1, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5191 |
+ pos_buffer_file = 1, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5192 |
+} pos_buffer_t; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5193 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5194 |
+static cmdopts_t def_buffer = { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5195 |
+ "buffer", |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5196 |
+ cmd_default, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5197 |
+ cmd_check_current_buddy, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5198 |
+ do_buffer, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5199 |
+ NULL, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5200 |
+ (cmdarg_t[2]){ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5201 |
+ { "subcommand", pos_buffer_scmd, cmdarg_subcmd|cmdarg_chreq, NULL, NULL }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5202 |
+ {NULL}, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5203 |
+ }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5204 |
+ (cmdopts_t[19]){ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5205 |
+ { "close", cmd_default, NULL, NULL, NULL, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5206 |
+ (cmdarg_t[2]){ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5207 |
+ { "jid", pos_buffer_jid, cmdarg_required, NULL, &cmdarg_type_roster_bjid, (gpointer)cmdarg_roster_buffer }, |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5208 |
+ {NULL} |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5209 |
+ }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5210 |
+ NULL, (gpointer)scmd_buffer_close }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5211 |
+ { "close_all", cmd_default, NULL, NULL, NULL, NULL, NULL, (gpointer)scmd_buffer_close_all }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5212 |
+ { "clear", cmd_default, NULL, NULL, NULL, NULL, NULL, (gpointer)scmd_buffer_clear }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5213 |
+ { "purge", cmd_default, NULL, NULL, NULL, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5214 |
+ (cmdarg_t[2]){ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5215 |
+ { "jid", pos_buffer_jid, cmdarg_required, NULL, &cmdarg_type_roster_bjid, (gpointer)cmdarg_roster_buffer }, |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5216 |
+ {0} |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5217 |
+ }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5218 |
+ NULL, (gpointer)scmd_buffer_purge }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5219 |
+ { "list", cmd_default, NULL, NULL, NULL, NULL, NULL, (gpointer)scmd_buffer_list }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5220 |
+ { "top", cmd_default, NULL, NULL, NULL, NULL, NULL, (gpointer)scmd_buffer_top }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5221 |
+ { "bottom", cmd_default, NULL, NULL, NULL, NULL, NULL, (gpointer)scmd_buffer_bottom }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5222 |
+ { "up", cmd_default, NULL, NULL, NULL, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5223 |
+ (cmdarg_t[2]){ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5224 |
+ { "n", pos_buffer_n, cmdarg_chreq, "0", &cmdarg_type_uint, (gpointer)0 }, |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5225 |
+ {NULL} |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5226 |
+ }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5227 |
+ NULL, (gpointer)scmd_buffer_up }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5228 |
+ { "down", cmd_default, NULL, NULL, NULL, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5229 |
+ (cmdarg_t[2]){ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5230 |
+ { "n", pos_buffer_n, cmdarg_chreq, "0", &cmdarg_type_uint, (gpointer)0 }, |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5231 |
+ {NULL} |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5232 |
+ }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5233 |
+ NULL, (gpointer)scmd_buffer_down }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5234 |
+ { "date", cmd_default, NULL, NULL, NULL, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5235 |
+ (cmdarg_t[2]){ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5236 |
+ { "date", pos_buffer_date, cmdarg_chreq, "1", &cmdarg_type_date }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5237 |
+ {NULL} |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5238 |
+ }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5239 |
+ NULL, (gpointer)scmd_buffer_date }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5240 |
+ { "%", cmd_default, NULL, NULL, NULL, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5241 |
+ (cmdarg_t[2]){ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5242 |
+ { "percent", pos_buffer_percent, cmdarg_chreq, "100", &cmdarg_type_uint, (gpointer)100 }, |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5243 |
+ {NULL} |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5244 |
+ }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5245 |
+ NULL, (gpointer)scmd_buffer_percent }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5246 |
+ { "readmark", cmd_default, NULL, NULL, NULL, NULL, NULL, (gpointer)scmd_buffer_readmark }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5247 |
+ { "search_backward", cmd_default, NULL, NULL, NULL, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5248 |
+ (cmdarg_t[2]){ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5249 |
+ { "text", pos_buffer_text, cmdarg_chreq, NULL, &cmdarg_type_nonspace }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5250 |
+ {NULL} |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5251 |
+ }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5252 |
+ NULL, (gpointer)scmd_buffer_search_backward }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5253 |
+ { "search_forward", cmd_default, NULL, NULL, NULL, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5254 |
+ (cmdarg_t[2]){ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5255 |
+ { "text", pos_buffer_text, cmdarg_chreq, NULL, &cmdarg_type_nonspace }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5256 |
+ {NULL} |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5257 |
+ }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5258 |
+ NULL, (gpointer)scmd_buffer_search_forward }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5259 |
+ { "scroll_lock", cmd_default, NULL, NULL, NULL, NULL, NULL, (gpointer)scmd_buffer_scroll_lock }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5260 |
+ { "scroll_unlock", cmd_default, NULL, NULL, NULL, NULL, NULL, (gpointer)scmd_buffer_scroll_unlock }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5261 |
+ { "scroll_toggle", cmd_default, NULL, NULL, NULL, NULL, NULL, (gpointer)scmd_buffer_scroll_toggle }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5262 |
+ { "save", cmd_default, NULL, NULL, NULL, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5263 |
+ (cmdarg_t[2]){ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5264 |
+ { "filename", pos_buffer_file, cmdarg_chreq, NULL, &cmdarg_type_filename }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5265 |
+ {NULL} |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5266 |
+ }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5267 |
+ NULL, (gpointer)scmd_buffer_save }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5268 |
+ }, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5269 |
+}; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5270 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5271 |
+// XXX % command before was able to handle %50 |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5272 |
+static gchar *do_buffer (const cmdopts_t *command, cmdarg_value_t *values) |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5273 |
{ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5274 |
- int nblines; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5275 |
- |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5276 |
- if (!nlines || !*nlines) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5277 |
- nblines = 0; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5278 |
- else |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5279 |
- nblines = strtol(nlines, NULL, 10); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5280 |
- |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5281 |
- if (nblines >= 0) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5282 |
- scr_buffer_scroll_up_down(updown, nblines); |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5283 |
+ scmd_buffer_t subcmd = (scmd_buffer_t) (values[pos_buffer_scmd].value.cmd -> userdata); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5284 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5285 |
+ if (buddy_gettype(BUDDATA(current_buddy)) & ROSTER_TYPE_GROUP && |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5286 |
+ subcmd != scmd_buffer_close_all) { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5287 |
+ return g_strdup ("Groups have no buffer."); |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5288 |
+ } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5289 |
+ |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5290 |
+ if (subcmd == scmd_buffer_close) { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5291 |
+ scr_buffer_purge(1, buddy_getjid(values[pos_buffer_jid].value.rjid.bud)); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5292 |
+ } else if (subcmd == scmd_buffer_close_all) { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5293 |
+ scr_buffer_purge_all(1); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5294 |
+ } else if (subcmd == scmd_buffer_clear) { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5295 |
+ scr_buffer_clear(); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5296 |
+ } else if (subcmd == scmd_buffer_purge) { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5297 |
+ scr_buffer_purge(0, buddy_getjid(values[pos_buffer_jid].value.rjid.bud)); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5298 |
+ } else if (subcmd == scmd_buffer_list) { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5299 |
+ scr_buffer_list(); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5300 |
+ } else if (subcmd == scmd_buffer_top) { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5301 |
+ scr_buffer_top_bottom(-1); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5302 |
+ } else if (subcmd == scmd_buffer_bottom) { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5303 |
+ scr_buffer_top_bottom(1); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5304 |
+ } else if (subcmd == scmd_buffer_up) { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5305 |
+ scr_buffer_scroll_up_down(-1, values[pos_buffer_n].value.uint); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5306 |
+ } else if (subcmd == scmd_buffer_down) { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5307 |
+ scr_buffer_scroll_up_down(1, values[pos_buffer_n].value.uint); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5308 |
+ } else if (subcmd == scmd_buffer_date) { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5309 |
+ scr_buffer_date(values[pos_buffer_date].value.time); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5310 |
+ } else if (subcmd == scmd_buffer_percent) { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5311 |
+ scr_buffer_percent(values[pos_buffer_percent].value.uint); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5312 |
+ } else if (subcmd == scmd_buffer_readmark) { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5313 |
+ scr_buffer_jump_readmark(); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5314 |
+ } else if (subcmd == scmd_buffer_search_backward) { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5315 |
+ scr_buffer_search(-1, values[pos_buffer_text].value.arg); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5316 |
+ } else if (subcmd == scmd_buffer_search_forward) { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5317 |
+ scr_buffer_search(1, values[pos_buffer_text].value.arg); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5318 |
+ } else if (subcmd == scmd_buffer_scroll_lock) { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5319 |
+ scr_buffer_scroll_lock(1); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5320 |
+ } else if (subcmd == scmd_buffer_scroll_unlock) { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5321 |
+ scr_buffer_scroll_lock(0); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5322 |
+ } else if (subcmd == scmd_buffer_scroll_toggle) { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5323 |
+ scr_buffer_scroll_lock(-1); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5324 |
+ } else { // scmd_buffer_save |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5325 |
+ scr_buffer_dump(values[pos_buffer_file].value.fname.local); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5326 |
+ } |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5327 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5328 |
+ return NULL; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5329 |
} |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5330 |
|
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5331 |
-static void buffer_search(int direction, char *arg) |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5332 |
+// |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5333 |
+// /clear |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5334 |
+// |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5335 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5336 |
+// XXX convert to real alias? |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5337 |
+static gchar *do_clear (const cmdopts_t *command, cmdarg_value_t *values); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5338 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5339 |
+static cmdopts_t def_clear = { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5340 |
+ "clear", |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5341 |
+ cmd_default, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5342 |
+ cmd_check_current_buddy, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5343 |
+ do_clear, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5344 |
+ NULL, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5345 |
+ NULL, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5346 |
+ NULL, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5347 |
+}; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5348 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5349 |
+// Alias for "buffer clear" |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5350 |
+static gchar *do_clear(const cmdopts_t *command, cmdarg_value_t *values) |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5351 |
{ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5352 |
- if (!arg || !*arg) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5353 |
- scr_LogPrint(LPRINT_NORMAL, "Missing parameter."); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5354 |
- return; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5355 |
- } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5356 |
- |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5357 |
- scr_buffer_search(direction, arg); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5358 |
+ scr_buffer_clear(); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5359 |
+ return NULL; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5360 |
} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5361 |
|
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5362 |
-static void buffer_date(char *date) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5363 |
-{ |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5364 |
- time_t t; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5365 |
- |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5366 |
- if (!date || !*date) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5367 |
- scr_LogPrint(LPRINT_NORMAL, "Missing parameter."); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5368 |
- return; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5369 |
- } |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5370 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5371 |
- strip_arg_special_chars(date); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5372 |
- |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5373 |
- t = from_iso8601(date, 0); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5374 |
- if (t) |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5375 |
- scr_buffer_date(t); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5376 |
- else |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5377 |
- scr_LogPrint(LPRINT_NORMAL, "The date you specified is " |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5378 |
- "not correctly formatted or invalid."); |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5379 |
-} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5380 |
- |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5381 |
-static void buffer_percent(char *arg1, char *arg2) |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5382 |
-{ |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5383 |
- // Basically, user has typed "%arg1 arg2" |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5384 |
- // "%50" -> arg1 = 50, arg2 null pointer |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5385 |
- // "% 50" -> arg1 = \0, arg2 = 50 |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5386 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5387 |
- if (!*arg1 && (!arg2 || !*arg2)) { // No value |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5388 |
- scr_LogPrint(LPRINT_NORMAL, "Missing parameter."); |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5389 |
- return; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5390 |
- } |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5391 |
- |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5392 |
- if (*arg1 && arg2 && *arg2) { // Two values |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5393 |
- scr_LogPrint(LPRINT_NORMAL, "Wrong parameters."); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5394 |
- return; |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5395 |
- } |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5396 |
- |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5397 |
- scr_buffer_percent(atoi((*arg1 ? arg1 : arg2))); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5398 |
-} |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5399 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5400 |
-static void do_buffer(char *arg) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5401 |
-{ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5402 |
- char **paramlst; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5403 |
- char *subcmd; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5404 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5405 |
- if (!current_buddy) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5406 |
- return; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5407 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5408 |
- paramlst = split_arg(arg, 2, 1); // subcmd, arg |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5409 |
- subcmd = *paramlst; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5410 |
- arg = *(paramlst+1); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5411 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5412 |
- if (!subcmd || !*subcmd) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5413 |
- scr_LogPrint(LPRINT_NORMAL, "Missing parameter."); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5414 |
- free_arg_lst(paramlst); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5415 |
- return; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5416 |
- } |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5417 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5418 |
- if (buddy_gettype(BUDDATA(current_buddy)) & ROSTER_TYPE_GROUP && |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5419 |
- strcasecmp(subcmd, "close_all")) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5420 |
- scr_LogPrint(LPRINT_NORMAL, "Groups have no buffer."); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5421 |
- free_arg_lst(paramlst); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5422 |
- return; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5423 |
- } |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5424 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5425 |
- if (!strcasecmp(subcmd, "top")) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5426 |
- scr_buffer_top_bottom(-1); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5427 |
- } else if (!strcasecmp(subcmd, "bottom")) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5428 |
- scr_buffer_top_bottom(1); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5429 |
- } else if (!strcasecmp(subcmd, "clear")) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5430 |
- scr_buffer_clear(); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5431 |
- } else if (!strcasecmp(subcmd, "close")) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5432 |
- scr_buffer_purge(1, arg); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5433 |
- } else if (!strcasecmp(subcmd, "close_all")) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5434 |
- scr_buffer_purge_all(1); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5435 |
- } else if (!strcasecmp(subcmd, "purge")) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5436 |
- scr_buffer_purge(0, arg); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5437 |
- } else if (!strcasecmp(subcmd, "scroll_lock")) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5438 |
- scr_buffer_scroll_lock(1); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5439 |
- } else if (!strcasecmp(subcmd, "scroll_unlock")) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5440 |
- scr_buffer_scroll_lock(0); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5441 |
- } else if (!strcasecmp(subcmd, "scroll_toggle")) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5442 |
- scr_buffer_scroll_lock(-1); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5443 |
- } else if (!strcasecmp(subcmd, "up")) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5444 |
- buffer_updown(-1, arg); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5445 |
- } else if (!strcasecmp(subcmd, "down")) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5446 |
- buffer_updown(1, arg); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5447 |
- } else if (!strcasecmp(subcmd, "search_backward")) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5448 |
- strip_arg_special_chars(arg); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5449 |
- buffer_search(-1, arg); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5450 |
- } else if (!strcasecmp(subcmd, "search_forward")) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5451 |
- strip_arg_special_chars(arg); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5452 |
- buffer_search(1, arg); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5453 |
- } else if (!strcasecmp(subcmd, "date")) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5454 |
- buffer_date(arg); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5455 |
- } else if (*subcmd == '%') { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5456 |
- buffer_percent(subcmd+1, arg); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5457 |
- } else if (!strcasecmp(subcmd, "save")) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5458 |
- scr_buffer_dump(arg); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5459 |
- } else if (!strcasecmp(subcmd, "list")) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5460 |
- scr_buffer_list(); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5461 |
- } else if (!strcasecmp(subcmd, "readmark")) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5462 |
- scr_buffer_jump_readmark(); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5463 |
- } else { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5464 |
- scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!"); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5465 |
- } |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5466 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5467 |
- free_arg_lst(paramlst); |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5468 |
-} |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5469 |
- |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5470 |
-static void do_clear(char *arg) // Alias for "buffer clear" |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5471 |
-{ |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5472 |
- do_buffer("clear"); |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5473 |
-} |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5474 |
- |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5475 |
-static void do_info(char *arg) |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5476 |
+// |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5477 |
+// /info |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5478 |
+// |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5479 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5480 |
+static gchar *do_info (const cmdopts_t *command, cmdarg_value_t *values); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5481 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5482 |
+static cmdopts_t def_info = { |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5483 |
+ "clear", |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5484 |
+ cmd_default, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5485 |
+ cmd_check_current_buddy, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5486 |
+ do_info, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5487 |
+ NULL, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5488 |
+ NULL, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5489 |
+ NULL, |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5490 |
+}; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5491 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5492 |
+static gchar *do_info (const cmdopts_t *command, cmdarg_value_t *values) |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5493 |
{ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5494 |
gpointer bud; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5495 |
const char *bjid, *name; |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5496 |
@@ -1906,9 +2817,7 @@ |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5497 |
char *buffer; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5498 |
enum subscr esub; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5499 |
|
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5500 |
- if (!current_buddy) |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5501 |
- return; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5502 |
- bud = BUDDATA(current_buddy); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5503 |
+ bud = BUDDATA(current_buddy); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5504 |
|
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5505 |
bjid = buddy_getjid(bud); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5506 |
name = buddy_getname(bud); |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5507 |
@@ -2031,95 +2940,13 @@ |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5508 |
HBB_PREFIX_INFO, 0); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5509 |
} |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5510 |
} |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5511 |
+ |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
5512 |
+ return NULL; |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5513 |
} |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5514 |
|
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5515 |
-// room_names() is a variation of do_info(), for chatrooms only |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5516 |
-static void room_names(gpointer bud, char *arg) |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5517 |
-{ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5518 |
- const char *bjid; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5519 |
- char *buffer; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5520 |
- GSList *resources, *p_res; |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5521 |
- enum { style_normal = 0, style_detail, style_short, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5522 |
- style_quiet, style_compact } style = 0; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5523 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5524 |
- if (*arg) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5525 |
- if (!strcasecmp(arg, "--short")) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5526 |
- style = style_short; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5527 |
- else if (!strcasecmp(arg, "--quiet")) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5528 |
- style = style_quiet; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5529 |
- else if (!strcasecmp(arg, "--detail")) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5530 |
- style = style_detail; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5531 |
- else if (!strcasecmp(arg, "--compact")) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5532 |
- style = style_compact; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5533 |
- else { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5534 |
- scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!"); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5535 |
- return; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5536 |
- } |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5537 |
- } |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5538 |
- |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5539 |
- // Enter chat mode |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5540 |
- scr_set_chatmode(TRUE); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5541 |
- scr_show_buddy_window(); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5542 |
- |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5543 |
- bjid = buddy_getjid(bud); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5544 |
- |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5545 |
- buffer = g_slice_alloc(4096); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5546 |
- strncpy(buffer, "Room members:", 127); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5547 |
- scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5548 |
- |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5549 |
- resources = buddy_getresources(bud); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5550 |
- for (p_res = resources ; p_res ; p_res = g_slist_next(p_res)) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5551 |
- enum imstatus rstatus; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5552 |
- const char *rst_msg; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5553 |
- |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5554 |
- rstatus = buddy_getstatus(bud, p_res->data); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5555 |
- rst_msg = buddy_getstatusmsg(bud, p_res->data); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5556 |
- |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5557 |
- if (style == style_short) { |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5558 |
- snprintf(buffer, 4095, "[%c] %s%s%s", imstatus2char[rstatus], |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5559 |
- (char*)p_res->data, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5560 |
- rst_msg ? " -- " : "", rst_msg ? rst_msg : ""); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5561 |
- scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0); |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5562 |
- } else if (style == style_compact) { |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5563 |
- enum imrole role = buddy_getrole(bud, p_res->data); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5564 |
- enum imaffiliation affil = buddy_getaffil(bud, p_res->data); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5565 |
- bool showaffil = (affil != affil_none); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5566 |
- |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5567 |
- snprintf(buffer, 4095, "[%c] %s (%s%s%s)", |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5568 |
- imstatus2char[rstatus], (char*)p_res->data, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5569 |
- showaffil ? straffil[affil] : "\0", |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5570 |
- showaffil ? "/" : "\0", |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5571 |
- strrole[role]); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5572 |
- scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5573 |
- } else { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5574 |
- // (Style "normal", "detail" or "quiet") |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5575 |
- snprintf(buffer, 4095, "[%c] %s", imstatus2char[rstatus], |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5576 |
- (char*)p_res->data); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5577 |
- scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0); |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5578 |
- if (rst_msg && style != style_quiet) { |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5579 |
- snprintf(buffer, 4095, "Status message: %s", rst_msg); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5580 |
- scr_WriteIncomingMessage(bjid, buffer, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5581 |
- 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5582 |
- } |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
5583 |
- if (style == style_detail) { |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5584 |
- enum imrole role = buddy_getrole(bud, p_res->data); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5585 |
- enum imaffiliation affil = buddy_getaffil(bud, p_res->data); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5586 |
- |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5587 |
- snprintf(buffer, 4095, "Role: %s", strrole[role]); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5588 |
- scr_WriteIncomingMessage(bjid, buffer, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5589 |
- 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5590 |
- if (affil != affil_none) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5591 |
- snprintf(buffer, 4095, "Affiliat.: %s", straffil[affil]); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5592 |
- scr_WriteIncomingMessage(bjid, buffer, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5593 |
- 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5594 |
- } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5595 |
- } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5596 |
- } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5597 |
- g_free(p_res->data); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5598 |
- } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5599 |
- g_slist_free(resources); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5600 |
- g_slice_free1(4096, buffer); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5601 |
-} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5602 |
+// |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5603 |
+// /rename |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5604 |
+// |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5605 |
|
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5606 |
static void move_group_member(gpointer bud, void *groupnamedata) |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5607 |
{ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5608 |
@@ -2128,13 +2955,13 @@ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5609 |
|
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5610 |
groupname = (char *)groupnamedata; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5611 |
|
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5612 |
- bjid = buddy_getjid(bud); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5613 |
- name = buddy_getname(bud); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5614 |
- type = buddy_gettype(bud); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5615 |
+ bjid = buddy_getjid(bud); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5616 |
+ name = buddy_getname(bud); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5617 |
+ type = buddy_gettype(bud); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5618 |
on_srv = buddy_getonserverflag(bud); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5619 |
|
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5620 |
if (on_srv) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5621 |
- xmpp_updatebuddy(bjid, name, *groupname ? groupname : NULL); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5622 |
+ xmpp_updatebuddy(bjid, name, groupname); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5623 |
else { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5624 |
buddy_setgroup(bud, (char *)groupname); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5625 |
if ((type & ROSTER_TYPE_ROOM) && xmpp_is_bookmarked(bjid) && |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5626 |
@@ -2143,32 +2970,52 @@ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5627 |
} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5628 |
} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5629 |
|
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5630 |
-static void do_rename(char *arg) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5631 |
+// command |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5632 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5633 |
+static gchar *do_rename (const cmdopts_t *command, cmdarg_value_t *values); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5634 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5635 |
+typedef enum { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5636 |
+ pos_rename_jid = 0, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5637 |
+ pos_rename_name = 1, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5638 |
+ pos_rename_reset = 2, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5639 |
+} pos_rename_t; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5640 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5641 |
+// XXX: |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5642 |
+// * custom type for completion by existing roster entry names |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5643 |
+static cmdopts_t def_rename = { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5644 |
+ "rename", |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5645 |
+ cmd_default, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5646 |
+ NULL, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5647 |
+ do_rename, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5648 |
+ (cmdopt_t[5]){ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5649 |
+ { 'r', "reset", { "reset", pos_rename_reset, cmdarg_switch, NULL, NULL } }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5650 |
+ { 'n', "name", { "name", pos_rename_jid, cmdarg_chreq, ".", &cmdarg_type_roster_name, (gpointer)cmdarg_roster_normal|cmdarg_roster_name } }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5651 |
+ { 'g', "group", { "group", pos_rename_jid, cmdarg_chreq, ".", &cmdarg_type_roster_group } }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5652 |
+ { 'j', "jid", { "jid", pos_rename_jid, cmdarg_chreq, ".", &cmdarg_type_roster_bjid, (gpointer)cmdarg_roster_entity } }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5653 |
+ {0} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5654 |
+ }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5655 |
+ (cmdarg_t[2]){ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5656 |
+ { "new name", pos_rename_name, cmdarg_chreq, NULL, &cmdarg_type_nonspace }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5657 |
+ {NULL} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5658 |
+ }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5659 |
+ NULL, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5660 |
+}; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5661 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5662 |
+static gchar *do_rename (const cmdopts_t *command, cmdarg_value_t *values) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5663 |
{ |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5664 |
gpointer bud; |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5665 |
- const char *bjid, *group; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5666 |
+ const char *bjid; |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5667 |
guint type, on_srv; |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5668 |
- char *newname, *p; |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5669 |
- char *name_utf8; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5670 |
- |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5671 |
- if (!current_buddy) |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5672 |
- return; |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5673 |
- bud = BUDDATA(current_buddy); |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5674 |
+ char *newname = NULL; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5675 |
+ gboolean reset; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5676 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5677 |
+ bud = values[pos_rename_jid].value.rjid.bud; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5678 |
+ reset = values[pos_rename_reset].value.swc; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5679 |
+ newname = values[pos_rename_name].value.arg; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5680 |
|
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5681 |
bjid = buddy_getjid(bud); |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5682 |
- group = buddy_getgroupname(bud); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5683 |
+ on_srv = buddy_getonserverflag(bud); |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5684 |
type = buddy_gettype(bud); |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5685 |
- on_srv = buddy_getonserverflag(bud); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5686 |
- |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5687 |
- if (type & ROSTER_TYPE_SPECIAL) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5688 |
- scr_LogPrint(LPRINT_NORMAL, "You can't rename this item."); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5689 |
- return; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5690 |
- } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5691 |
- |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5692 |
- if (!*arg && !(type & ROSTER_TYPE_GROUP)) { |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5693 |
- scr_LogPrint(LPRINT_NORMAL, "Please specify a new name."); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5694 |
- return; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5695 |
- } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5696 |
|
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5697 |
//if (!(type & ROSTER_TYPE_GROUP) && !on_srv) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5698 |
// scr_LogPrint(LPRINT_NORMAL, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5699 |
@@ -2181,90 +3028,88 @@ |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5700 |
// } |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5701 |
//} |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5702 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5703 |
- newname = g_strdup(arg); |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5704 |
- // Remove trailing space |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5705 |
- for (p = newname; *p; p++) ; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5706 |
- while (p > newname && *p == ' ') *p = 0; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5707 |
- |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5708 |
- strip_arg_special_chars(newname); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5709 |
- |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5710 |
- name_utf8 = to_utf8(newname); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5711 |
- |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5712 |
if (type & ROSTER_TYPE_GROUP) { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5713 |
// Rename a whole group |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5714 |
- foreach_group_member(bud, &move_group_member, name_utf8); |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5715 |
+ foreach_group_member(bud, &move_group_member, (reset ? NULL : newname)); |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5716 |
// Let's jump to the previous buddy, because this group name should |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5717 |
// disappear when we receive the server answer. |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5718 |
- scr_roster_up_down(-1, 1); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5719 |
+ // XXX: we can now "disappear" arbitrary buddy/group. |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5720 |
+ // Probably, we need some hook, when something appears/disappears, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5721 |
+ // so that ui can know and react to that when it really happens, rather |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5722 |
+ // than doing this here. |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5723 |
+ //scr_roster_up_down(-1, 1); |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5724 |
} else { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5725 |
// Rename a single buddy |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5726 |
- guint del_name = 0; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5727 |
- if (!*newname || !strcmp(arg, "-")) |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5728 |
- del_name = TRUE; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5729 |
if (on_srv) { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5730 |
- /* We do not rename the buddy right now because the server could reject |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5731 |
- * the request. Let's wait for the server answer. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5732 |
- */ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5733 |
- xmpp_updatebuddy(bjid, (del_name ? NULL : name_utf8), |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5734 |
+ const char *group = buddy_getgroupname(bud); |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5735 |
+ // We do not rename the buddy right now because the server could reject |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5736 |
+ // the request. Let's wait for the server answer. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5737 |
+ xmpp_updatebuddy(bjid, (reset ? NULL : newname), |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5738 |
group && *group ? group : NULL); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5739 |
} else { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5740 |
// This is a local item, we rename it without adding to roster. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5741 |
- buddy_setname(bud, (del_name ? (char*)bjid : name_utf8)); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5742 |
+ buddy_setname(bud, (reset ? (char*)bjid : newname)); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5743 |
if ((type & ROSTER_TYPE_ROOM) && xmpp_is_bookmarked(bjid) && |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5744 |
settings_opt_get_int("muc_bookmark_autoupdate")) |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5745 |
room_bookmark(bud, NULL); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5746 |
} |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5747 |
} |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5748 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5749 |
- g_free(name_utf8); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5750 |
- g_free(newname); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5751 |
update_roster = TRUE; |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5752 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5753 |
+ return NULL; |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5754 |
} |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5755 |
|
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5756 |
-static void do_move(char *arg) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5757 |
+static gchar *do_move (const cmdopts_t *command, cmdarg_value_t *values); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5758 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5759 |
+typedef enum { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5760 |
+ pos_move_jid = 0, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5761 |
+ pos_move_name = 1, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5762 |
+} pos_move_t; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5763 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5764 |
+// XXX: |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5765 |
+// * custom type for completion by existing roster group names |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5766 |
+// (share with rename, using types in chkdata?) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5767 |
+static cmdopts_t def_move = { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5768 |
+ "move", |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5769 |
+ cmd_default, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5770 |
+ NULL, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5771 |
+ do_move, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5772 |
+ (cmdopt_t[5]){ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5773 |
+ { 'n', "name", { "name", pos_move_jid, cmdarg_chreq, ".", &cmdarg_type_roster_name, (gpointer)cmdarg_roster_entity|cmdarg_roster_name } }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5774 |
+ { 'j', "jid", { "jid", pos_move_jid, cmdarg_chreq, ".", &cmdarg_type_roster_bjid, (gpointer)cmdarg_roster_entity } }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5775 |
+ {0} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5776 |
+ }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5777 |
+ (cmdarg_t[2]){ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5778 |
+ { "new name", pos_move_name, cmdarg_eol|cmdarg_required, NULL, &cmdarg_type_nonspace }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5779 |
+ {NULL} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5780 |
+ }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5781 |
+ NULL, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5782 |
+}; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5783 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5784 |
+static gchar *do_move (const cmdopts_t *command, cmdarg_value_t *values) |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5785 |
{ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5786 |
gpointer bud; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5787 |
const char *bjid, *name, *oldgroupname; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5788 |
guint type, on_srv; |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5789 |
- char *newgroupname, *p; |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5790 |
- char *group_utf8; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5791 |
- |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5792 |
- if (!current_buddy) |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5793 |
- return; |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5794 |
- bud = BUDDATA(current_buddy); |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5795 |
- |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5796 |
- bjid = buddy_getjid(bud); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5797 |
- name = buddy_getname(bud); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5798 |
- type = buddy_gettype(bud); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5799 |
- on_srv = buddy_getonserverflag(bud); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5800 |
- |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5801 |
+ char *newgroupname; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5802 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5803 |
+ bud = values[pos_move_jid].value.rjid.bud; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5804 |
+ newgroupname = values[pos_move_name].value.arg; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5805 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5806 |
+ bjid = buddy_getjid(bud); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5807 |
+ name = buddy_getname(bud); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5808 |
+ type = buddy_gettype(bud); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5809 |
+ on_srv = buddy_getonserverflag(bud); |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5810 |
oldgroupname = buddy_getgroupname(bud); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5811 |
|
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5812 |
- if (type & ROSTER_TYPE_GROUP) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5813 |
- scr_LogPrint(LPRINT_NORMAL, "You can't move groups!"); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5814 |
- return; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5815 |
- } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5816 |
- if (type & ROSTER_TYPE_SPECIAL) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5817 |
- scr_LogPrint(LPRINT_NORMAL, "You can't move this item."); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5818 |
- return; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5819 |
- } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5820 |
- |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5821 |
- newgroupname = g_strdup(arg); |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5822 |
- // Remove trailing space |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5823 |
- for (p = newgroupname; *p; p++) ; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5824 |
- while (p > newgroupname && *p == ' ') *p-- = 0; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5825 |
- |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5826 |
- strip_arg_special_chars(newgroupname); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5827 |
- |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5828 |
- group_utf8 = to_utf8(newgroupname); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5829 |
- if (strcmp(oldgroupname, group_utf8)) { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5830 |
+ if (strcmp(oldgroupname, newgroupname)) { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5831 |
if (on_srv) { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5832 |
- xmpp_updatebuddy(bjid, name, *group_utf8 ? group_utf8 : NULL); |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5833 |
- scr_roster_up_down(-1, 1); |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5834 |
- |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5835 |
- /* We do not move the buddy right now because the server could reject |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5836 |
- * the request. Let's wait for the server answer. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5837 |
- */ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5838 |
+ xmpp_updatebuddy(bjid, name, newgroupname); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5839 |
+ // XXX see /roster |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5840 |
+ //scr_roster_up_down(-1, 1); |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5841 |
+ // We do not move the buddy right now because the server could reject |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5842 |
+ // the request. Let's wait for the server answer. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5843 |
} else { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5844 |
// This is a local item, we move it without adding to roster. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5845 |
guint msgflag; |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5846 |
@@ -2276,7 +3121,7 @@ |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5847 |
msgflag = buddy_getflags(bud) & ROSTER_FLAG_MSG; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5848 |
if (msgflag) |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5849 |
roster_msg_setflag(bjid, FALSE, FALSE); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5850 |
- buddy_setgroup(bud, group_utf8); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5851 |
+ buddy_setgroup(bud, newgroupname); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5852 |
if (msgflag) |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5853 |
roster_msg_setflag(bjid, FALSE, TRUE); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5854 |
if ((type & ROSTER_TYPE_ROOM) && xmpp_is_bookmarked(bjid) && |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5855 |
@@ -2285,33 +3130,160 @@ |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5856 |
} |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5857 |
} |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5858 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5859 |
- g_free(group_utf8); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5860 |
- g_free(newgroupname); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5861 |
update_roster = TRUE; |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5862 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5863 |
+ return NULL; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5864 |
} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5865 |
|
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5866 |
-static void list_option_cb(char *k, char *v, void *f) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5867 |
+// |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5868 |
+// /set |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5869 |
+// |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5870 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5871 |
+static gchar *do_set (const cmdopts_t *command, cmdarg_value_t *values); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5872 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5873 |
+typedef enum { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5874 |
+ pos_set_assignment = 0, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5875 |
+ pos_set_reset = 1, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5876 |
+ pos_set_file = 2, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5877 |
+} pos_set_t; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5878 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5879 |
+static cmdopts_t *def_set = { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5880 |
+ "set", |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5881 |
+ cmd_safe, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5882 |
+ NULL, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5883 |
+ do_setting, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5884 |
+ (cmdopt_t[3]){ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5885 |
+ { 'd', "dump", { "filename", pos_set_file, cmdarg_required, NULL, &cmdarg_type_filename } }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5886 |
+ { 'r', "reset", { "reset", pos_set_reset, cmdarg_trigger, NULL, NULL } }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5887 |
+ {0} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5888 |
+ }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5889 |
+ (cmdarg_t[2]){ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5890 |
+ { "assignment", pos_set_assignment, cmdarg_eol|cmdarg_required, NULL, &cmdarg_type_assignment }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5891 |
+ {NULL} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5892 |
+ }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5893 |
+ NULL, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5894 |
+ (gpointer)SETTINGS_TYPE_OPTION |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5895 |
+}; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5896 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5897 |
+static cmdopts_t *def_alias = { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5898 |
+ "alias", |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5899 |
+ cmd_safe, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5900 |
+ NULL, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5901 |
+ do_setting, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5902 |
+ (cmdopt_t[3]){ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5903 |
+ { 'd', "dump", { "filename", pos_set_file, cmdarg_required, NULL, &cmdarg_type_filename } }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5904 |
+ { 'r', "reset", { "reset", pos_set_reset, cmdarg_trigger, NULL, NULL } }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5905 |
+ {0} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5906 |
+ }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5907 |
+ (cmdarg_t[2]){ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5908 |
+ { "assignment", pos_set_assignment, cmdarg_eol|cmdarg_required, NULL, &cmdarg_type_assignment }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5909 |
+ {NULL} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5910 |
+ }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5911 |
+ NULL, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5912 |
+ (gpointer)SETTINGS_TYPE_ALIAS |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5913 |
+}; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5914 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5915 |
+static cmdopts_t *def_bind = { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5916 |
+ "bind", |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5917 |
+ cmd_safe, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5918 |
+ NULL, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5919 |
+ do_setting, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5920 |
+ (cmdopt_t[3]){ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5921 |
+ { 'd', "dump", { "filename", pos_set_file, cmdarg_required, NULL, &cmdarg_type_filename } }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5922 |
+ { 'r', "reset", { "reset", pos_set_reset, cmdarg_trigger, NULL, NULL } }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5923 |
+ {0} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5924 |
+ }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5925 |
+ (cmdarg_t[2]){ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5926 |
+ { "assignment", pos_set_assignment, cmdarg_eol|cmdarg_required, NULL, &cmdarg_type_assignment }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5927 |
+ {NULL} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5928 |
+ }, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5929 |
+ NULL, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5930 |
+ (gpointer)SETTINGS_TYPE_BINDING |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5931 |
+}; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5932 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5933 |
+static const setting_cb_t def_set_data = { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5934 |
+ SETTINGS_TYPE_OPTION, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5935 |
+ "%%-%us = [%%s]", |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5936 |
+ "No options found", |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5937 |
+ "Option %s is not set", |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5938 |
+ "%s = [%s]", |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5939 |
+ "set %%-%us = %%s", |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5940 |
+}; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5941 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5942 |
+static void settings_build_namelist_cb (char *k, char *v, void *f) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5943 |
{ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5944 |
GSList **list = f; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5945 |
*list = g_slist_insert_sorted(*list, k, (GCompareFunc)strcmp); |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5946 |
} |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
5947 |
|
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5948 |
-static void do_set(char *arg) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5949 |
+static void setting_dump_to_file_cb (char *key, char *value, void *userdata) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5950 |
{ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5951 |
- guint assign; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5952 |
- gchar *option, *value; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5953 |
- gchar *option_utf8; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5954 |
- |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5955 |
- if (!*arg) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5956 |
- // list all set options |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5957 |
- GSList *list = NULL; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5958 |
- // Get sorted list of keys |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5959 |
- settings_foreach(SETTINGS_TYPE_OPTION, list_option_cb, &list); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5960 |
+ // foo cb = ...; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5961 |
+ GString *line = cb....; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5962 |
+ // foo file = cb....; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5963 |
+ g_string_printf (line, "%s %s = \"", command -> name, key); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5964 |
+ // unsecape value |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5965 |
+ key = value; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5966 |
+ do { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5967 |
+ if (*key == '"' || *key == '\\') { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5968 |
+ g_string_append_len (line, value, key - value); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5969 |
+ g_string_append_c (line, '\\'); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5970 |
+ value = key; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5971 |
+ key ++; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5972 |
+ } else if (*key == '\0') { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5973 |
+ g_string_append_len (line, value, key - value); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5974 |
+ } else { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5975 |
+ key ++; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5976 |
+ } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5977 |
+ } while (*key); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5978 |
+ g_string_append_c (line, '"'); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5979 |
+ // write the line here |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5980 |
+} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5981 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5982 |
+// eol = as is |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5983 |
+// plain = only one word |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5984 |
+// catchall = backescape quotes/escapes |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5985 |
+// default = quote |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5986 |
+static void cmdarg_unescape ( |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5987 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5988 |
+static gchar *do_setting (const cmdopts_t *command, cmdarg_value_t *values) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5989 |
+{ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5990 |
+ gchar *option = values[pos_set_assignment].value.assign.key; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5991 |
+ gchar *value = values[pos_set_assignment].value.assign.value; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5992 |
+ gboolean assignment = values[pos_set_assignment].value.assign.assignment; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5993 |
+ guint stype = (guint)(command -> userdata); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5994 |
+ gboolean reset = XXX; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5995 |
+ const char *template = "%%-%us = [%%s]"; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5996 |
+ const char *msg1 = "No options found."; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5997 |
+ const char *msg2 = "Option %s is not set"; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5998 |
+ const char *msg3 = "%s = [%s]"; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
5999 |
+ gchar *filename = values[pos_set_filename].value.fname.local; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6000 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6001 |
+ // open file here |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6002 |
+ GString *line = g_string_new (NULL); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6003 |
+ // foo cb = {..., line}; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6004 |
+ if (!option) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6005 |
+ settings_foreach(stype, settings_dump_to_file_cb, cb); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6006 |
+ } else { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6007 |
+ settings_dump_to_file_cb (option, settings_get (stype, option), cb); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6008 |
+ } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6009 |
+ g_string_free (line, TRUE); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6010 |
+ // close file here |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6011 |
+ } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6012 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6013 |
+ if (option == NULL) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6014 |
+ GSList *list = NULL; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6015 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6016 |
+ settings_foreach(stype, settings_build_namelist_cb, &list); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6017 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6018 |
if (list) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6019 |
- gsize max = 0; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6020 |
- gsize maxmax = scr_gettextwidth() / 3; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6021 |
+ gsize max = 0; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6022 |
+ gsize maxmax = scr_gettextwidth() / 3; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6023 |
GSList *lel; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6024 |
- gchar *format; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6025 |
+ gchar *format; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6026 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6027 |
+ // Get sorted list of keys |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6028 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6029 |
// Find out maximum key length |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6030 |
for (lel = list; lel; lel = lel->next) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6031 |
const gchar *key = lel->data; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6032 |
@@ -2324,50 +3296,39 @@ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6033 |
} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6034 |
} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6035 |
} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6036 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6037 |
// Print out list of options |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6038 |
- format = g_strdup_printf("%%-%us = [%%s]", (unsigned)max); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6039 |
+ format = g_strdup_printf(template, (unsigned)max); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6040 |
for (lel = list; lel; lel = lel->next) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6041 |
const gchar *key = lel->data; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6042 |
- scr_LogPrint(LPRINT_NORMAL, format, key, settings_opt_get(key)); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6043 |
+ scr_log_print(LPRINT_NORMAL, format, key, settings_get(stype, key)); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6044 |
} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6045 |
g_free(format); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6046 |
scr_setmsgflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6047 |
scr_setattentionflag_if_needed(SPECIAL_BUFFER_STATUS_ID, TRUE, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6048 |
ROSTER_UI_PRIO_STATUS_WIN_MESSAGE, prio_max); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6049 |
- } else |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6050 |
- scr_LogPrint(LPRINT_NORMAL, "No options found."); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6051 |
- return; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6052 |
+ } else { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6053 |
+ scr_log_print (LPRINT_NORMAL, "No options found."); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6054 |
+ } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6055 |
+ } else if (value == NULL && !reset) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6056 |
+ const char *val = settings_opt_get(option); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6057 |
+ if (val) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6058 |
+ scr_LogPrint(LPRINT_NORMAL, "%s = [%s]", option, val); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6059 |
+ else |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6060 |
+ scr_LogPrint(LPRINT_NORMAL, "Option %s is not set", option); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6061 |
+ } else { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6062 |
+ // Update the option |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6063 |
+ // Maybe some options should be protected when user is connected (server, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6064 |
+ // username, etc.). And we should catch some options here, too |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6065 |
+ // (hide_offline_buddies for ex.) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6066 |
+ if (!value) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6067 |
+ settings_del(stype, option); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6068 |
+ } else { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6069 |
+ settings_set(stype, option, value); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6070 |
+ } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6071 |
} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6072 |
|
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6073 |
- assign = parse_assigment(arg, &option, &value); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6074 |
- if (!option) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6075 |
- scr_LogPrint(LPRINT_NORMAL, "Set what option?"); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6076 |
- return; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6077 |
- } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6078 |
- option_utf8 = to_utf8(option); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6079 |
- g_free(option); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6080 |
- if (!assign) { // This is a query |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6081 |
- const char *val = settings_opt_get(option_utf8); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6082 |
- if (val) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6083 |
- scr_LogPrint(LPRINT_NORMAL, "%s = [%s]", option_utf8, val); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6084 |
- else |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6085 |
- scr_LogPrint(LPRINT_NORMAL, "Option %s is not set", option_utf8); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6086 |
- g_free(option_utf8); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6087 |
- return; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6088 |
- } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6089 |
- // Update the option |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6090 |
- // Maybe some options should be protected when user is connected (server, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6091 |
- // username, etc.). And we should catch some options here, too |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6092 |
- // (hide_offline_buddies for ex.) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6093 |
- if (!value) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6094 |
- settings_del(SETTINGS_TYPE_OPTION, option_utf8); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6095 |
- } else { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6096 |
- gchar *value_utf8 = to_utf8(value); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6097 |
- settings_set(SETTINGS_TYPE_OPTION, option_utf8, value_utf8); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6098 |
- g_free(value_utf8); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6099 |
- g_free(value); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6100 |
- } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6101 |
- g_free(option_utf8); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6102 |
+ return NULL; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6103 |
} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6104 |
|
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6105 |
static void dump_alias(char *k, char *v, void *param) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6106 |
@@ -2466,52 +3427,37 @@ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6107 |
g_free(k_code); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6108 |
} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6109 |
|
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6110 |
+#if 0 |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6111 |
+ |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6112 |
static void do_rawxml(char *arg) |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6113 |
{ |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6114 |
- char **paramlst; |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6115 |
- char *subcmd; |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6116 |
+ cmdopts_t options = { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6117 |
+ "rawxml", |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6118 |
+ NULL, |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6119 |
+ (cmdarg_t[1]){ |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6120 |
+ { CMDOPT_REQUIRED | CMDOPT_SUBCOMMAND | CMDOPT_LAST, { .cmd = NULL } }, |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6121 |
+ }, |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6122 |
+ (cmdopts_t[1]){ |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6123 |
+ { "send", NULL, |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6124 |
+ (cmdarg_t[1]){ |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6125 |
+ { CMDOPT_REQUIRED | CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6126 |
+ { .arg = NULL } }, |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6127 |
+ }, |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6128 |
+ NULL }, |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6129 |
+ }, |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6130 |
+ }; |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6131 |
|
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6132 |
if (!xmpp_is_online()) { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6133 |
scr_LogPrint(LPRINT_NORMAL, "You are not connected."); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6134 |
return; |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6135 |
} |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6136 |
|
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6137 |
- paramlst = split_arg(arg, 2, 1); // subcmd, arg |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6138 |
- subcmd = *paramlst; |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6139 |
- arg = *(paramlst+1); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6140 |
- |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6141 |
- if (!subcmd || !*subcmd) { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6142 |
- scr_LogPrint(LPRINT_NORMAL, "Please read the manual page" |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6143 |
- " before using /rawxml :-)"); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6144 |
- free_arg_lst(paramlst); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6145 |
+ if (cmdopts_parse(arg, &options)) |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6146 |
return; |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6147 |
- } |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6148 |
- |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6149 |
- if (!strcasecmp(subcmd, "send")) { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6150 |
- gchar *buffer; |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6151 |
- |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6152 |
- if (!subcmd || !*subcmd) { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6153 |
- scr_LogPrint(LPRINT_NORMAL, "Missing parameter."); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6154 |
- free_arg_lst(paramlst); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6155 |
- return; |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6156 |
- } |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6157 |
- |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6158 |
- // We don't strip_arg_special_chars() here, because it would be a pain for |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6159 |
- // the user to escape quotes in a XML stream... |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6160 |
- |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6161 |
- buffer = to_utf8(arg); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6162 |
- if (buffer) { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6163 |
- scr_LogPrint(LPRINT_NORMAL, "Sending XML string"); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6164 |
- lm_connection_send_raw(lconnection, buffer, NULL); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6165 |
- g_free(buffer); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6166 |
- } else { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6167 |
- scr_LogPrint(LPRINT_NORMAL, "Conversion error in XML string."); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6168 |
- } |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6169 |
- } else { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6170 |
- scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!"); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6171 |
- } |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6172 |
- |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6173 |
- free_arg_lst(paramlst); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6174 |
+ |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6175 |
+ scr_LogPrint(LPRINT_NORMAL, "Sending XML string"); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6176 |
+ lm_connection_send_raw(lconnection, options.cmds[0].args[0].value.arg, NULL); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6177 |
+ cmdopts_free(&options); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6178 |
} |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6179 |
|
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
6180 |
// check_room_subcommand(arg, param_needed, buddy_must_be_a_room) |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6181 |
@@ -2815,6 +3761,8 @@ |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6182 |
free_arg_lst(paramlst); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6183 |
} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6184 |
|
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6185 |
+#endif |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6186 |
+ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6187 |
void cmd_room_leave(gpointer bud, char *arg) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6188 |
{ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6189 |
gchar *roomid, *desc; |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6190 |
@@ -2833,6 +3781,8 @@ |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6191 |
g_free(roomid); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6192 |
} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6193 |
|
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6194 |
+#if 0 |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6195 |
+ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6196 |
static void room_nick(gpointer bud, char *arg) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6197 |
{ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6198 |
if (!buddy_getinsideroom(bud)) { |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6199 |
@@ -2874,7 +3824,7 @@ |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
6200 |
fjid_utf8 = g_strdup_printf("%s/%s", buddy_getjid(bud), nick_utf8); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
6201 |
g_free (nick_utf8); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
6202 |
msg = to_utf8(arg); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
6203 |
- send_message_to(fjid_utf8, msg, NULL, LM_MESSAGE_SUB_TYPE_NOT_SET, FALSE); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
6204 |
+ send_message_to(fjid_utf8, msg, NULL, msgtype_not_set, FALSE); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
6205 |
g_free(fjid_utf8); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
6206 |
g_free(msg); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
6207 |
free_arg_lst(paramlst); |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6208 |
@@ -3052,6 +4002,8 @@ |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6209 |
free_arg_lst(paramlst); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6210 |
} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6211 |
|
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6212 |
+#endif |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6213 |
+ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6214 |
// cmd_room_whois(..) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6215 |
// If interactive is TRUE, chatmode can be enabled. |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6216 |
// Please note that usernick is expected in UTF-8 locale iff interactive is |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6217 |
@@ -3209,6 +4161,8 @@ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6218 |
g_free (tmpnick); |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6219 |
} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6220 |
|
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6221 |
+#if 0 |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6222 |
+ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6223 |
static void display_all_bookmarks(void) |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6224 |
{ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6225 |
GSList *bm, *bmp; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6226 |
@@ -3288,8 +4242,288 @@ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6227 |
#endif |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6228 |
} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6229 |
|
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6230 |
+enum room_names_style_t { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6231 |
+ room_names_style_normal = 0, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6232 |
+ room_names_style_detail, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6233 |
+ room_names_style_short, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6234 |
+ room_names_style_quiet, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6235 |
+ room_names_style_compact, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6236 |
+}; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6237 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6238 |
+// room_names() is a variation of do_info(), for chatrooms only |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6239 |
+static void room_names(gpointer bud, enum room_names_style_t style) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6240 |
+{ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6241 |
+ const char *bjid; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6242 |
+ char *buffer; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6243 |
+ GSList *resources, *p_res; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6244 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6245 |
+ // Enter chat mode |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6246 |
+ scr_set_chatmode(TRUE); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6247 |
+ scr_show_buddy_window(); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6248 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6249 |
+ bjid = buddy_getjid(bud); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6250 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6251 |
+ buffer = g_slice_alloc(4096); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6252 |
+ strncpy(buffer, "Room members:", 127); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6253 |
+ scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6254 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6255 |
+ resources = buddy_getresources(bud); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6256 |
+ for (p_res = resources ; p_res ; p_res = g_slist_next(p_res)) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6257 |
+ enum imstatus rstatus; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6258 |
+ const char *rst_msg; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6259 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6260 |
+ rstatus = buddy_getstatus(bud, p_res->data); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6261 |
+ rst_msg = buddy_getstatusmsg(bud, p_res->data); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6262 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6263 |
+ if (style == room_names_style_short) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6264 |
+ snprintf(buffer, 4095, "[%c] %s%s%s", imstatus2char[rstatus], |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6265 |
+ (char*)p_res->data, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6266 |
+ rst_msg ? " -- " : "", rst_msg ? rst_msg : ""); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6267 |
+ scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6268 |
+ } else if (style == room_names_style_compact) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6269 |
+ enum imrole role = buddy_getrole(bud, p_res->data); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6270 |
+ enum imaffiliation affil = buddy_getaffil(bud, p_res->data); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6271 |
+ bool showaffil = (affil != affil_none); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6272 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6273 |
+ snprintf(buffer, 4095, "[%c] %s (%s%s%s)", |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6274 |
+ imstatus2char[rstatus], (char*)p_res->data, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6275 |
+ showaffil ? straffil[affil] : "\0", |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6276 |
+ showaffil ? "/" : "\0", |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6277 |
+ strrole[role]); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6278 |
+ scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6279 |
+ } else { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6280 |
+ // (Style "normal", "detail" or "quiet") |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6281 |
+ snprintf(buffer, 4095, "[%c] %s", imstatus2char[rstatus], |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6282 |
+ (char*)p_res->data); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6283 |
+ scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6284 |
+ if (rst_msg && style != room_names_style_quiet) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6285 |
+ snprintf(buffer, 4095, "Status message: %s", rst_msg); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6286 |
+ scr_WriteIncomingMessage(bjid, buffer, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6287 |
+ 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6288 |
+ } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6289 |
+ if (style == room_names_style_detail) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6290 |
+ enum imrole role = buddy_getrole(bud, p_res->data); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6291 |
+ enum imaffiliation affil = buddy_getaffil(bud, p_res->data); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6292 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6293 |
+ snprintf(buffer, 4095, "Role: %s", strrole[role]); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6294 |
+ scr_WriteIncomingMessage(bjid, buffer, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6295 |
+ 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6296 |
+ if (affil != affil_none) { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6297 |
+ snprintf(buffer, 4095, "Affiliat.: %s", straffil[affil]); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6298 |
+ scr_WriteIncomingMessage(bjid, buffer, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6299 |
+ 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6300 |
+ } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6301 |
+ } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6302 |
+ } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6303 |
+ g_free(p_res->data); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6304 |
+ } |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6305 |
+ g_slist_free(resources); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6306 |
+ g_slice_free1(4096, buffer); |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6307 |
+} |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6308 |
+ |
74 | 6309 |
static void do_room(char *arg) |
6310 |
{ |
|
6311 |
+ enum room_scmd_t { |
|
6312 |
+ room_scmd_join, room_scmd_leave, |
|
6313 |
+ room_scmd_names, |
|
6314 |
+ room_scmd_nick, |
|
6315 |
+ room_scmd_privmsg, |
|
6316 |
+ room_scmd_remove, |
|
6317 |
+ room_scmd_topic, |
|
6318 |
+ room_scmd_unlock, |
|
6319 |
+ room_scmd_destroy, |
|
6320 |
+ room_scmd_whois, |
|
6321 |
+ room_scmd_ban, room_scmd_unban, |
|
6322 |
+ room_scmd_invite, room_scmd_kick, |
|
6323 |
+ room_scmd_role, room_scmd_affil, |
|
6324 |
+ room_scmd_setopt, room_scmd_bookmark, |
|
6325 |
+ } subcmd; |
|
6326 |
+ cmdopts_t options = { |
|
6327 |
+ "room", |
|
6328 |
+ (cmdopt_t[1]){ |
|
6329 |
+ { CMDOPT_LAST, 'j', "jid", { .opt = NULL } }, |
|
6330 |
+ }, |
|
6331 |
+ (cmdarg_t[1]){ |
|
6332 |
+ { CMDOPT_REQUIRED | CMDOPT_SUBCOMMAND | CMDOPT_LAST, { .cmd = NULL } }, |
|
6333 |
+ }, |
|
6334 |
+ (cmdopts_t[18]){ |
|
6335 |
+ { "join", NULL, |
|
6336 |
+ (cmdarg_t[3]){ |
|
6337 |
+ { 0, { .arg = "." } }, // room jid |
|
6338 |
+ { 0, { .arg = NULL } }, // nick |
|
6339 |
+ { CMDOPT_LAST, { .arg = NULL } }, // password |
|
6340 |
+ }, |
|
6341 |
+ NULL, (gpointer)room_scmd_join, 0 }, |
|
6342 |
+ { "leave", NULL, |
|
6343 |
+ (cmdarg_t[1]){ |
|
6344 |
+ // reason |
|
6345 |
+ { CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, { .arg = NULL } }, |
|
6346 |
+ }, |
|
6347 |
+ NULL, (gpointer)room_scmd_join, 0 }, |
|
6348 |
+ { "names", |
|
6349 |
+ (cmdopt_t[4]){ |
|
6350 |
+ { CMDOPT_SWITCH, 'd', "detail", { .swc = 0 } }, |
|
6351 |
+ { CMDOPT_SWITCH, 's', "short", { .swc = 0 } }, |
|
6352 |
+ { CMDOPT_SWITCH, 'q', "quiet", { .swc = 0 } }, |
|
6353 |
+ { CMDOPT_SWITCH | CMDOPT_LAST, 'c', "compact", { .swc = 0 } }, |
|
6354 |
+ }, |
|
6355 |
+ NULL, NULL, (gpointe)room_scmd_names, 0 }, |
|
6356 |
+ { "nick", NULL, |
|
6357 |
+ (cmdarg_t[1]){ |
|
6358 |
+ // nick |
|
6359 |
+ { CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, { .arg = NULL } }, |
|
6360 |
+ }, |
|
6361 |
+ NULL, (gpointer)room_scmd_nick, 0 }, |
|
6362 |
+ { "privmsg", NULL, |
|
6363 |
+ (cmdarg_t[2]) { |
|
6364 |
+ // nick |
|
6365 |
+ { CMDOPT_REQUIRED, { .arg = NULL } }, |
|
6366 |
+ // message |
|
6367 |
+ { CMDOPT_REQUIRED | CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, |
|
6368 |
+ { .arg = NULL } }, |
|
6369 |
+ } |
|
6370 |
+ NULL, (gpointer)room_scmd_privmsg, 0 }, |
|
6371 |
+ { "remove", NULL, NULL, NULL, (gpointer)room_scmd_remove, 0 }, |
|
6372 |
+ { "topic", NULL, |
|
6373 |
+ (cmdarg_t[1]){ |
|
6374 |
+ // topic |
|
6375 |
+ { CMDOPT_REQUIRED | CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, |
|
6376 |
+ { .arg = NULL } }, |
|
6377 |
+ }, |
|
6378 |
+ NULL, (gpointer)room_scmd_topic, 0 }, |
|
6379 |
+ { "unlock", NULL, NULL, NULL, (gpointer)room_scmd_unlock, 0 }, |
|
6380 |
+ { "destroy", NULL, |
|
6381 |
+ (cmdarg_t[1]){ |
|
6382 |
+ { CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, { .arg = NULL } }, |
|
6383 |
+ }, |
|
6384 |
+ NULL, (gpointer)room_scmd_destroy, 0 }, |
|
6385 |
+ { "whois", NULL, |
|
6386 |
+ (cmdarg_t[1]){ |
|
6387 |
+ // nick |
|
6388 |
+ { CMDOPT_REQUIRED | CMDOPT_LAST, { .arg = NULL } }, |
|
6389 |
+ }, NULL, (gpointer)room_scmd_whois, 0 }, |
|
6390 |
+ { "ban", NULL, |
|
6391 |
+ (cmdarg_t[2]){ |
|
6392 |
+ // nick |
|
6393 |
+ { CMDOPT_REQUIRED, { .arg = NULL } }, |
|
6394 |
+ // reason |
|
6395 |
+ { CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, { .arg = NULL } }, |
|
6396 |
+ }, NULL, (gpointer)room_scmd_ban, 0 }, |
|
6397 |
+ { "unban", NULL, |
|
6398 |
+ (cmdarg_t[1]){ |
|
6399 |
+ // nick |
|
6400 |
+ { CMDOPT_REQUIRED | CMDOPT_LAST, { .arg = NULL } }, |
|
6401 |
+ }, NULL, (gpointer)room_scmd_unban, 0 }, |
|
6402 |
+ { "invite", NULL, // XXX [-d|direct] ? |
|
6403 |
+ (cmdarg_t[2]){ |
|
6404 |
+ // jid |
|
6405 |
+ { CMDOPT_REQUIRED, { .arg = NULL } }, |
|
6406 |
+ // reason |
|
6407 |
+ { CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, { .arg = NULL } }, |
|
6408 |
+ }, |
|
6409 |
+ NULL, (gpointer)room_scmd_invite, 0 }, |
|
6410 |
+ { "kick", NULL, |
|
6411 |
+ (cmdarg_t[2]){ |
|
6412 |
+ // jid |
|
6413 |
+ { CMDOPT_REQUIRED, { .arg = NULL } }, |
|
6414 |
+ // reason |
|
6415 |
+ { CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, { .arg = NULL } }, |
|
6416 |
+ }, |
|
6417 |
+ NULL, (gpointer)room_scmd_kick, 0 }, |
|
6418 |
+ { "role", NULL, |
|
6419 |
+ (cmdarg_t[3]){ |
|
6420 |
+ // jid |
|
6421 |
+ { CMDOPT_REQUIRED, { .arg = NULL } }, |
|
6422 |
+ // role |
|
6423 |
+ { CMDOPT_REQUIRED, { .arg = NULL } }, |
|
6424 |
+ // reason |
|
6425 |
+ { CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, { .arg = NULL } }, |
|
6426 |
+ }, NULL, (gpointer)room_scmd_role, 0 }, |
|
6427 |
+ { "affil", NULL, |
|
6428 |
+ (cmdarg_t[3]){ |
|
6429 |
+ // jid |
|
6430 |
+ { CMDOPT_REQUIRED, { .arg = NULL } }, |
|
6431 |
+ // affiliation |
|
6432 |
+ { CMDOPT_REQUIRED, { .arg = NULL } }, |
|
6433 |
+ // reason |
|
6434 |
+ { CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, { .arg = NULL } }, |
|
6435 |
+ }, NULL, (gpointer)room_scmd_affil, 0 }, |
|
6436 |
+ // XXX below goes some crazy subcommands stuff, that should be rather static lists |
|
6437 |
+ { "setopt", NULL, |
|
6438 |
+ (cmdarg_t[1]){ |
|
6439 |
+ { CMDOPT_REQUIRED | CMDOPT_SUBCOMMAND | CMDOPT_LAST, { .cmd = NULL } }, |
|
6440 |
+ }, |
|
6441 |
+ (cmdopts_t[3]){ |
|
6442 |
+ { "print_status", NULL, |
|
6443 |
+ (cmdarg_t[1]){ |
|
6444 |
+ { CMDOPT_SUBCOMMAND | CMDOPT_LAST, { .cmd = NULL } }, |
|
6445 |
+ }, |
|
6446 |
+ (cmdopts_t[4]){ |
|
6447 |
+ { "default", NULL, NULL, NULL, NULL, 0 }, |
|
6448 |
+ { "none", NULL, NULL, NULL, NULL, 0 }, |
|
6449 |
+ { "in_and_out", NULL, NULL, NULL, NULL, 0 }, |
|
6450 |
+ { "all", NULL, NULL, NULL, NULL, CMDOPT_LAST }, |
|
6451 |
+ }, NULL, 0 }, |
|
6452 |
+ { "auto_whois", NULL, |
|
6453 |
+ (cmdarg_t[1]){ |
|
6454 |
+ { CMDOPT_SUBCOMMAND | CMDOPT_LAST, { .cmd = NULL } }, |
|
6455 |
+ }, |
|
6456 |
+ (cmdopts_t[3]){ |
|
6457 |
+ { "default", NULL, NULL, NULL, NULL, 0 }, |
|
6458 |
+ { "off", NULL, NULL, NULL, NULL, 0 }, |
|
6459 |
+ { "on", NULL, NULL, NULL, NULL, CMDOPT_LAST }, |
|
6460 |
+ }, NULL, 0 }, |
|
6461 |
+ { "flag_joins", NULL, |
|
6462 |
+ (cmdarg_t[1]){ |
|
6463 |
+ { CMDOPT_SUBCOMMAND | CMDOPT_LAST, { .cmd = NULL } }, |
|
6464 |
+ }, |
|
6465 |
+ (cmdopts_t[4]){ |
|
6466 |
+ { "default", NULL, NULL, NULL, NULL, 0 }, |
|
6467 |
+ { "none", NULL, NULL, NULL, NULL, 0 }, |
|
6468 |
+ { "joins", NULL, NULL, NULL, NULL, 0 }, |
|
6469 |
+ { "all", NULL, NULL, NULL, NULL, CMDOPT_LAST }, |
|
6470 |
+ }, NULL, CMDOPT_LAST }, |
|
6471 |
+ }, (gpointer)room_scmd_setopt, 0 }, |
|
6472 |
+ { "bookmark", NULL, |
|
6473 |
+ (cmdarg_t[1]){ |
|
6474 |
+ { CMDOPT_SUBCOMMAND | CMDOPT_LAST, { .cmd = NULL } }, |
|
6475 |
+ }, |
|
6476 |
+ (cmdopts_t[2]){ |
|
6477 |
+ { "add", NULL, |
|
6478 |
+ (cmdarg_t[1]){ |
|
6479 |
+ { CMDOPT_SUBCOMMAND | CMDOPT_LAST, { .cmd = NULL } }, |
|
6480 |
+ }, |
|
6481 |
+ (cmdopts_t[2]){ |
|
6482 |
+ { "+autojoin", NULL, |
|
6483 |
+ (cmdarg_t[1]){ |
|
6484 |
+ // nick |
|
6485 |
+ { CMDARG_LAST, { .arg = NULL } }, |
|
6486 |
+ }, NULL, NULL, 0 }, |
|
6487 |
+ { "-autojoin", NULL, |
|
6488 |
+ (cmdarg_t[1]){ |
|
6489 |
+ // nick |
|
6490 |
+ { CMDARG_LAST, { .arg = NULL } }, |
|
6491 |
+ }, NULL, NULL, CMDOPT_LAST }, |
|
6492 |
+ }, NULL, 0 }, |
|
6493 |
+ { "del", NULL, |
|
6494 |
+ (cmdarg_t[1]){ |
|
6495 |
+ { CMDOPT_SUBCOMMAND | CMDOPT_LAST, { .cmd = NULL } }, |
|
6496 |
+ }, |
|
6497 |
+ (cmdopts_t[2]){ |
|
6498 |
+ { "+autojoin", NULL, |
|
6499 |
+ (cmdarg_t[1]){ |
|
6500 |
+ // nick |
|
6501 |
+ { CMDARG_LAST, { .arg = NULL } }, |
|
6502 |
+ }, NULL, NULL, 0 }, |
|
6503 |
+ { "-autojoin", NULL, |
|
6504 |
+ (cmdarg_t[1]){ |
|
6505 |
+ // nick |
|
6506 |
+ { CMDARG_LAST, { .arg = NULL } }, |
|
6507 |
+ }, NULL, NULL, CMDOPT_LAST }, |
|
6508 |
+ }, NULL, 0 }, |
|
6509 |
+ }, (gpointer)room_scmd_bookmark, CMDOPT_LAST }, |
|
6510 |
+ }, |
|
6511 |
+ }; |
|
6512 |
char **paramlst; |
|
6513 |
char *subcmd; |
|
6514 |
gpointer bud; |
|
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6515 |
@@ -3347,7 +4581,7 @@ |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
6516 |
cmd_room_leave(bud, arg); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
6517 |
} else if (!strcasecmp(subcmd, "names")) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
6518 |
if ((arg = check_room_subcommand(arg, FALSE, bud)) != NULL) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
6519 |
- room_names(bud, arg); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
6520 |
+ room_names(bud, room_names_style_normal); // FIXME |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
6521 |
} else if (!strcasecmp(subcmd, "nick")) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
6522 |
if ((arg = check_room_subcommand(arg, FALSE, bud)) != NULL) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
6523 |
room_nick(bud, arg); |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6524 |
@@ -4162,5 +5396,6 @@ |
74 | 6525 |
} |
6526 |
mcabber_set_terminate_ui(); |
|
6527 |
} |
|
6528 |
+#endif |
|
6529 |
||
6530 |
/* vim: set expandtab cindent cinoptions=>2\:2(0 sw=2 ts=2: For Vim users... */ |
|
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
6531 |
diff -r 7a77fde8f7ee mcabber/mcabber/commands.h |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
6532 |
--- a/mcabber/mcabber/commands.h Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
6533 |
+++ b/mcabber/mcabber/commands.h Thu Aug 22 00:44:41 2013 +0300 |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6534 |
@@ -5,32 +5,394 @@ |
74 | 6535 |
|
6536 |
#include <mcabber/config.h> |
|
6537 |
||
6538 |
-// Command structure |
|
6539 |
+// |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6540 |
+// DONE(?): |
74 | 6541 |
+// |
6542 |
+// * Clustering of options/switches |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6543 |
+// - with separate values - just specify the same index |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6544 |
+// - use the same flags on all of the clustered options, or result may be a bit unpredictable |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6545 |
+// * for now we'll do without multi-options. |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6546 |
+// * checks |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6547 |
+// - argument type == public struct with name and callbacks, simple! |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6548 |
+// - command checks should be just single callbacks |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6549 |
+// - argument checker needs: |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6550 |
+// - [in] value string (current or default) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6551 |
+// - [in] additional input data for some generic checkers (like string2enum wordlist) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6552 |
+// - [out] replacement value (not necessary string) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6553 |
+// - replacement value may need freeing |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6554 |
+// - [out] error string |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6555 |
+// - that may need freeing |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6556 |
+// |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6557 |
+// TODO: |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6558 |
+// |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6559 |
+// * checkers can use visited flag to check if value is rw |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6560 |
+// - but what if in-checker assigns ro value, like buddy_getjid()? |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6561 |
+// - maybe need separate flag for that |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6562 |
+// * now, that we have rjid, merge bjid/fjid checkers into one |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6563 |
+// * Usable documentation in sources/howto |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6564 |
+// * Changelog entry |
74 | 6565 |
+// * --help |
6566 |
+// - use argument type names and clarify, if needed in descriptions |
|
6567 |
+// - command/subcommand descriptions |
|
6568 |
+// - or maybe just do "/help foo" |
|
6569 |
+// * Add argument type field and subsystem to check values. Uses so far: |
|
6570 |
+// - fjid (handle . and ./resource, perform check_jid_syntax()) |
|
6571 |
+// - bjid (handle ., strip resource, perform check_jid_syntax()) |
|
6572 |
+// - bjid in roster/buddylist (result - buddy?) |
|
6573 |
+// - name in roster/buddylist (result - buddy?) |
|
6574 |
+// - group in roster (result - buddy?) |
|
6575 |
+// - other non-space string (strip trailing/starting spaces) |
|
6576 |
+// - statusmask (restrictive, check symbols) |
|
6577 |
+// - jidmask (non-restrictive, compl: inform what jids match) |
|
6578 |
+// - search string (non-restrictive, compl: inform what matches, if possible) |
|
6579 |
+// - rosternote (non-restrictive) |
|
6580 |
+// - color (restrictive, semi-defined list) |
|
6581 |
+// - nick (non-restrictive) |
|
6582 |
+// - defined lists (restrictive) |
|
6583 |
+// - date (restrictive) |
|
6584 |
+// - percent (numerical, restrictive) |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6585 |
+// - number (result - uint) |
74 | 6586 |
+// - filename (expand_filename(), g_utf8_to_filename()?) |
6587 |
+// - custom (maybe some helpers for constant stringlists) |
|
6588 |
+// - text message (compl: nicks in rooms, dictionary?) |
|
6589 |
+// * Non-argument checks for commands/subcommands: |
|
6590 |
+// - xmpp_is_online() |
|
6591 |
+// - current_buddy |
|
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
6592 |
+// * commands: |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
6593 |
+// - say/msay/say_to/room privmsg/process_line() - sort things out, maybe write special argchecker |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
6594 |
+// - buffer close now only accepts windows with jid. additional checker, that also allows current 'status' buffer? |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6595 |
+// * Usable subsystem for completion, based on user-supplied completors |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6596 |
+// * Interface to history subsystem - command should have a way to inform, that it should not be stored in history. |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6597 |
+// |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6598 |
+// XXX: |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6599 |
+// |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6600 |
+// * while escaped aliases should not be expanded, we should still unquote them for command search |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6601 |
+// * allow escaping in options? |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6602 |
+// * merge cmdopt_t and cmdarg_t? |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6603 |
+// - improve the checker error messages |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6604 |
+// - extra NULLs to specify in arg definition |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6605 |
+// - inconvenient positioning of shortopt/longopt or argname in sequence |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6606 |
+// - merge options/arguments? |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6607 |
+// - describe values, not opt/args? |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6608 |
+// * command ref and name in special value 0 and indexing starts from 1? |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6609 |
+// - requires allocation of values always |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6610 |
+// - though there's not that many commands without arguments |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6611 |
+// * command checker is not quite effective |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6612 |
+// - I'd like to run it before allocating anything |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6613 |
+// - so far only one of them |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6614 |
+// * unable to put checker before allocation because in many cases it will be in subcommand. |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6615 |
+// - separate command/subcommand values and use subcommand callbacks? |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6616 |
+// - ignore command options and always go directly to subcommand parsing if present? |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6617 |
+// (i.e. subcommand is always first argument and consumes the end of the line |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6618 |
+// * type name generator callback |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6619 |
+// for generic types to construct something like "foo|bar|baz" |
74 | 6620 |
+// * [+foo|-foo] support? |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6621 |
+// * Subcommands with fallback to argument? |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6622 |
+// * Multivalue options |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6623 |
+// - list |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6624 |
+// - special checker |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6625 |
+// - or run checker multiple times |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6626 |
+// - or run command several times |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6627 |
+// - what if there are several of such arguments? |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6628 |
+// |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6629 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6630 |
+// |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6631 |
+// Type predeclarations |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6632 |
+// |
74 | 6633 |
+ |
6634 |
+typedef struct cmdopts_struct cmdopts_t; |
|
6635 |
+typedef struct cmdopt_struct cmdopt_t; |
|
6636 |
+typedef struct cmdarg_struct cmdarg_t; |
|
6637 |
+typedef struct cmdarg_type_struct cmdarg_type_t; |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6638 |
+typedef struct cmdarg_value_struct cmdarg_value_t; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6639 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6640 |
+// |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6641 |
+// Callback type definitions |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6642 |
+// |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6643 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6644 |
+// Command execution environment check function. |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6645 |
+// Note: This is called before options are parsed, but values are already allocated. |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
6646 |
+typedef gchar *(*cmd_checker_t)(const cmdopts_t *command, cmdarg_value_t *args); |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6647 |
+// Command function itself. |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6648 |
+// Command definition is provided for userdata access, should not be modified. |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
6649 |
+typedef gchar *(*cmd_handler_t)(const cmdopts_t *command, cmdarg_value_t *args); |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6650 |
+// Should check value -> value.arg and replace, if needed. |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6651 |
+// Can set cmdarg_freeme flag to request type destructor call. |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6652 |
+// Can access argument definition via value -> src (but not modify it). |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6653 |
+typedef gchar *(*cmdarg_checker_t)(cmdarg_value_t *value); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6654 |
+// Free resources, used in value, if needed. |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6655 |
+typedef void (*cmdarg_destructor_t)(cmdarg_value_t *value); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6656 |
+// TODO Return possible completions for given argument. |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6657 |
+typedef void (*cmdarg_completor_t)(void); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6658 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6659 |
+// |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6660 |
+// Data type definitions |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6661 |
+// |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6662 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6663 |
+// command description flags |
74 | 6664 |
+typedef enum { |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6665 |
+ cmd_default = 0x0000, // no flags |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6666 |
+ cmd_safe = 0x0001, // command is safe to use in mcabberrc |
74 | 6667 |
+} cmd_flags_t; |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6668 |
+// argument description flags |
74 | 6669 |
+typedef enum { |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6670 |
+ cmdarg_default = 0x0000, // no flags |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6671 |
+ cmdarg_catchall = 0x0001, // argument consumes the end of command line |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6672 |
+ cmdarg_plain = 0x0002, // quotes and escapes are not processed |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6673 |
+ cmdarg_check = 0x0004, // forse checker call on argument |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6674 |
+ cmdarg_required = 0x0008, // checker errors are fatal (checker may use as well) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6675 |
+ cmdarg_subcmd = 0x0010, // argument is subcommand |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6676 |
+ cmdarg_switch = 0x0020, // option without argument, value is count |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6677 |
+ // shortcuts: |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
6678 |
+ cmdarg_eol = 0x0003, // catchall + plain |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6679 |
+ cmdarg_chreq = 0x000C, // check + required |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6680 |
+ cmdarg_special = 0x0030, // subcmd + switch |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
6681 |
+ cmdarg_trigger = 0x0024, // switch + check |
74 | 6682 |
+} cmdarg_flags_t; |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6683 |
+// argument value flags (internal) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6684 |
+typedef enum { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6685 |
+ cmdval_default = 0x0000, // no flags |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6686 |
+ cmdval_visited = 0x0100, // marks initialized arguments |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6687 |
+ cmdval_freeme = 0x0200, // marks argument, that needs freeing |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6688 |
+} cmdval_flags_t; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6689 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6690 |
+// command description |
74 | 6691 |
+struct cmdopts_struct { |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
6692 |
+ const char *name; // [user,req] command name (error messages, help, subcommands) |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
6693 |
+ const cmd_flags_t flags; // [user,req] safe |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
6694 |
+ const cmd_checker_t check; // [user,req] checker routine |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
6695 |
+ const cmd_handler_t handle; // [user,req] main command processing function |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
6696 |
+ const cmdopt_t *opts; // [user,req] options |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
6697 |
+ const cmdarg_t *args; // [user,req] arguments |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
6698 |
+ const cmdopts_t *cmds; // [user,req] subcommands |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
6699 |
+ gconstpointer userdata; // [user] |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
6700 |
+ size_t valno; // internal, number of values to allocate |
74 | 6701 |
+}; |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6702 |
+// positional/option argument description |
74 | 6703 |
+struct cmdarg_struct { |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6704 |
+ const char *name; // [user,req] argument name - errors, help (unused for switches, but must be initialized) |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
6705 |
+ const size_t pos; // [user,req] value positional number |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6706 |
+ const cmdarg_flags_t flags; // [user,req] catchall, plain, check, required, subcommand, switch |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6707 |
+ const char *defval; // [user,req] default value (unused for switches) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6708 |
+ const cmdarg_type_t *type; // [user,req] type cbs - checker and completor (unused for switches and subcommands) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6709 |
+ gconstpointer chkdata; // [user] instance data for type checker - eg string2enum list (unused for switches and subcommands) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6710 |
+ gconstpointer userdata; // [user] |
74 | 6711 |
+}; |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6712 |
+// option description |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6713 |
+struct cmdopt_struct { |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6714 |
+ const char shortopt; // [user,req] |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6715 |
+ const char *longopt; // [user,req] |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6716 |
+ cmdarg_t arg; // [user,req] |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6717 |
+}; |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6718 |
+// argument type description |
74 | 6719 |
+struct cmdarg_type_struct { |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6720 |
+ cmdarg_checker_t check; // [user,req] check string and set argument value |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6721 |
+ cmdarg_destructor_t free; // [user,req] free argument value |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6722 |
+ cmdarg_completor_t complete; // [user,req] |
74 | 6723 |
+}; |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6724 |
+// argument value |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6725 |
+struct cmdarg_value_struct { |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
6726 |
+ const cmdarg_t *src; // source of value |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6727 |
+ cmdval_flags_t flags; // visited, freeme |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6728 |
+ union { // value: |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6729 |
+ unsigned long uint; // - unsigned integer |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6730 |
+ long sint; // - signed integer |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
6731 |
+ guint swc; // - switch count |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
6732 |
+ const gchar *roarg; // - XXX default value |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
6733 |
+ gchar *arg; // - string argument |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
6734 |
+ const cmdopts_t *cmd; // - subcommand |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6735 |
+ struct { // - roster jid: |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
6736 |
+ gpointer bud; // - buddy struct |
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
6737 |
+ gchar *resource; // - resource (optional) |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6738 |
+ } rjid; // |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
6739 |
+ struct { // - filename |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
6740 |
+ gchar *utf8; // - in utf8 |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
6741 |
+ gchar *local; // - in local FS encoding |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
6742 |
+ } fname; // |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6743 |
+ struct { // - key [= [value]] |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6744 |
+ gchar *key; // - key |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6745 |
+ gchar *value; // - value |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6746 |
+ gboolean assignment; // - '=' was specified |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6747 |
+ } assign; // |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
6748 |
+ time_t time; // - date/time |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
6749 |
+ gpointer ptr; // - anything else |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6750 |
+ } value; // |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6751 |
+}; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6752 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6753 |
+// |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6754 |
+// Public functions |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6755 |
+// |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6756 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6757 |
+// add command definition |
74 | 6758 |
+void cmd_define (cmdopts_t *command); |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6759 |
+// remove command definition |
74 | 6760 |
+void cmd_undef (cmdopts_t *command); |
6761 |
+ |
|
6762 |
+// error cmdopts_parse_argument ( startptr, endptr, flags ) |
|
6763 |
+// Parses next argument according to flags and finishes it with zero. |
|
6764 |
+// Updates current/end pointers. Parsed string MUST be writable. |
|
6765 |
+// String may shrink in size (quotation/escapes), thus endpointer is also |
|
6766 |
+// updated. |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6767 |
+const char *cmdopts_parse_argument(gchar **pr, gchar **er, cmdarg_flags_t flags); |
74 | 6768 |
+ |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6769 |
+// flags for cmd_execute() |
74 | 6770 |
+typedef enum { |
6771 |
+ cmdexe_default = 0, // no flags |
|
6772 |
+ cmdexe_check_safe = 1<<0, // we're parsing main config file |
|
6773 |
+ cmdexe_check_verbatim = 1<<1, // check for verbatim input mode |
|
6774 |
+} cmdexe_flags_t; |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6775 |
+// return codes for cmd_execute() and process_line() |
74 | 6776 |
+typedef enum { |
6777 |
+ cmd_result_ok = 0, // all is ok |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6778 |
+ cmd_result_syntax_error, // syntax or environment check error |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6779 |
+ cmd_result_value_error, // argument value missing or type check error |
74 | 6780 |
+ cmd_result_not_found, // no such command |
6781 |
+ cmd_result_runtime_error, // error while executing command |
|
6782 |
+ cmd_result_verbatim, // we're in verbatim mode and this is not "msay" |
|
6783 |
+ cmd_result_input, // [process_line only] line was a message |
|
6784 |
+ cmd_result_quit = 255, // this is hard-coded "quit" command |
|
6785 |
+} cmd_result_t; |
|
6786 |
+ |
|
6787 |
+// error cmd_execute ( command, flags ) |
|
6788 |
+// Checks for "quit", "msay" in verbatim mode, expands aliases, checks command |
|
6789 |
+// for safety of execution, parses command's arguments according to definition, |
|
6790 |
+// executes command function. Returns cmdexe_result_ok (0) if all was ok. |
|
6791 |
+// Non-zero values mean, that command was not executed for some reason. |
|
6792 |
+// One special value is cmd_result_quit (255) - if it is "quit" command. |
|
6793 |
+cmd_result_t cmd_execute (gchar *commandline, cmdexe_flags_t flags); |
|
6794 |
+ |
|
6795 |
+// process_line(line) |
|
6796 |
+// Process a command/message line. If this isn't a command, this is a message |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6797 |
+// and it is sent to the currently selected buddy. The line is converted from |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6798 |
+// local encoding to utf8. |
74 | 6799 |
+// Returns 255 if the line is the /quit command, 0 on success and some other |
6800 |
+// error codes. |
|
6801 |
+cmd_result_t process_line(const char *line); |
|
6802 |
+ |
|
6803 |
+// |
|
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
6804 |
+// Command checkers |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
6805 |
+// |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
6806 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
6807 |
+// checks if connection is available |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
6808 |
+gchar *cmd_check_online (const cmdopts_t *command, cmdarg_value_t *values); |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6809 |
+gchar *cmd_check_current_buddy (const cmdopts_t *command, cmdarg_value_t *values); |
80
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
6810 |
+ |
93088d0c8140
Add documentation for cmdopts
Myhailo Danylenko <isbear@ukrpost.net>
parents:
79
diff
changeset
|
6811 |
+// |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6812 |
+// Standard argument types |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6813 |
+// |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6814 |
+ |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6815 |
+// enum for chkdata for roster/jid checkers |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6816 |
+typedef enum { |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6817 |
+ cmdarg_roster_notset = 0x0000, |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6818 |
+ cmdarg_roster_user = ROSTER_TYPE_USER, // 0x0001 |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6819 |
+ cmdarg_roster_group = ROSTER_TYPE_GROUP, // 0x0002 |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6820 |
+ cmdarg_roster_agent = ROSTER_TYPE_AGENT, // 0x0004 |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6821 |
+ cmdarg_roster_room = ROSTER_TYPE_ROOM, // 0x0008 |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6822 |
+ cmdarg_roster_special = ROSTER_TYPE_SPECIAL, // 0x0010 |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6823 |
+ cmdarg_roster_name = 0x0100, // namesearch |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6824 |
+ cmdarg_roster_activeres = 0x0200, // active resource |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6825 |
+ cmdarg_roster_getgroup = 0x0400, // group of buddy |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6826 |
+ // shortcuts: |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6827 |
+ cmdarg_roster_buddy = 0x0005, // user + agent (single buddy) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6828 |
+ cmdarg_roster_entity = 0x000D, // user + agent + room (xmpp entity) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6829 |
+ cmdarg_roster_buffer = 0x001D, // user + agent + room + special (have buffer) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6830 |
+ cmdarg_roster_normal = 0x000F, // user + group + agent + room (not special) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6831 |
+ cmdarg_roster_all = 0x001F, // user + group + agent + room + special |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6832 |
+ cmdarg_roster_grouponly = 0x0402, // group + getgroup (search group buddy) |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6833 |
+ cmdarg_roster_mask = 0x001F, // all |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6834 |
+} cmdarg_roster_t; |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6835 |
+ |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6836 |
+// array entry for chkdata for string2enum checker |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6837 |
typedef struct { |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6838 |
- char name[32]; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6839 |
- const char *help; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6840 |
- guint completion_flags[2]; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6841 |
- void (*func)(char *); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6842 |
- gpointer userdata; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6843 |
-} cmd; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6844 |
+ const char *name; |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6845 |
+ int value; |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6846 |
+} string2enum_t; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6847 |
|
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6848 |
-void cmd_init(void); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6849 |
-cmd *cmd_get(const char *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6850 |
-int process_line(const char *line); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6851 |
-int process_command(const char *line, guint iscmd); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6852 |
-char *expandalias(const char *line); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6853 |
-#ifdef MODULES_ENABLE |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6854 |
-gpointer cmd_del(gpointer id); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6855 |
-gpointer cmd_add(const char *name, const char *help, guint flags1, guint flags2, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6856 |
- void (*f)(char*), gpointer userdata); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6857 |
-gboolean cmd_set_safe(const gchar *name, gboolean safe); |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6858 |
+// destructor, that g_free()s value.arg |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6859 |
+void cmdarg_free_gfree (cmdarg_value_t *arg); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6860 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6861 |
+// strips space at the start/end and ensures, that string have non-zero length |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6862 |
+gchar *cmdarg_check_nonspace (cmdarg_value_t *arg); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6863 |
+// checks, that jid is in roster and returns buddy |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6864 |
+gchar *cmdarg_check_roster_bjid (cmdarg_value_t *arg); |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6865 |
+// checks, that name is in roster and returns buddy |
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6866 |
+gchar *cmdarg_check_roster_name (cmdarg_value_t *arg); |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6867 |
+// checks, that jid is in roster and have specified resource, returns buddy and resource |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6868 |
+gchar *cmdarg_check_roster_resource (cmdarg_value_t *arg); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6869 |
+// checks for group with given name and returns buddy |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6870 |
+gchar *cmdarg_check_roster_group (cmdarg_value_t *arg); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6871 |
+// checks correctness of jid syntax |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6872 |
+gchar *cmdarg_check_fjid (cmdarg_value_t *arg); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6873 |
+// checks correctness of jid syntax, strips resource |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6874 |
+gchar *cmdarg_check_bjid (cmdarg_value_t *arg); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6875 |
+// transforms to guint |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6876 |
+gchar *cmdarg_check_uint (cmdarg_value_t *arg); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6877 |
+// checks, that string consists of characters from a given set |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6878 |
+gchar *cmdarg_check_charset (cmdarg_value_t *arg); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6879 |
+// checks, that string is from the given list, and returns corresponding guint value |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6880 |
+gchar *cmdarg_check_string2enum (cmdarg_value_t *arg); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6881 |
+// checks mcabber color name syntax |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6882 |
+gchar *cmdarg_check_color (cmdarg_value_t *arg); |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
6883 |
+// expands filename and converts encoding |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
6884 |
+gchar *cmdarg_check_filename (cmdarg_value_t *arg); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
6885 |
+// destructor, frees both names |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
6886 |
+void cmdarg_free_fname (cmdarg_value_t *arg); |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
6887 |
+// converts iso-8601 date to epoch |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
6888 |
+gchar *cmdarg_check_date (cmdarg_value_t *arg); |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6889 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6890 |
+// ready for use standard type descriptions |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
6891 |
+const cmdarg_type_t cmdarg_type_nonspace; |
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
6892 |
+const cmdarg_type_t cmdarg_type_roster_bjid; |
85
93c3cc0d7891
[refresh] Add round-high-priority.diff, refresh => API 41-42
Myhailo Danylenko <isbear@ukrpost.net>
parents:
84
diff
changeset
|
6893 |
+const cmdarg_type_t cmdarg_type_roster_name; |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
6894 |
+const cmdarg_type_t cmdarg_type_roster_resource; |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6895 |
+const cmdarg_type_t cmdarg_type_roster_group; |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
6896 |
+const cmdarg_type_t cmdarg_type_fjid; |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6897 |
+const cmdarg_type_t cmdarg_type_bjid; |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
6898 |
+const cmdarg_type_t cmdarg_type_uint; |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6899 |
+const cmdarg_type_t cmdarg_type_charset; |
77
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
6900 |
+const cmdarg_type_t cmdarg_type_string2enum; |
7197414053c9
[cmdopts] Roll some things back, fix errors
Myhailo Danylenko <isbear@ukrpost.net>
parents:
76
diff
changeset
|
6901 |
+const cmdarg_type_t cmdarg_type_color; |
84
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
6902 |
+const cmdarg_type_t cmdarg_type_filename; |
6ff846816073
[cmdopts] A bit of progress
Myhailo Danylenko <isbear@ukrpost.net>
parents:
82
diff
changeset
|
6903 |
+const cmdarg_type_t cmdarg_type_date; |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6904 |
+ |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
6905 |
+// |
74 | 6906 |
+// Private |
6907 |
+// |
|
6908 |
+ |
|
6909 |
+void cmd_init (void); |
|
6910 |
+void cmd_uninit (void); |
|
6911 |
+ |
|
6912 |
+#if 0 |
|
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6913 |
+// return highest index for value, used in command |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
6914 |
+size_t cmdopts_count_values (const cmdopts_t *command); |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6915 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6916 |
+// allocate values array to store arguments |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
6917 |
+cmdarg_value_t *cmdopts_allocate_values (const cmdopts_t *command); |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6918 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6919 |
+// error cmdopts_parse_internal ( startptr, endptr, commanddef, values ) |
74 | 6920 |
+// Parses command arguments according to command definition. |
6921 |
+// Parsed string MUST be writable. Regardless of success or error, input |
|
6922 |
+// string should be considered corrupted by parsing process. |
|
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
6923 |
+gchar *cmdopts_parse_internal (gchar **pr, gchar **er, const cmdopts_t *command, cmdarg_value_t *values); |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6924 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6925 |
+// perform type checking/conversion on parsed values |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
6926 |
+gchar *cmdopts_check_values (const cmdopts_t *command, cmdarg_value_t *values); |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6927 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6928 |
+// cmdopts_free_values ( commanddef, values ) |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6929 |
+// Free allocated by checkers resources and values array. |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
6930 |
+void cmdopts_free_values (const cmdopts_t *command, cmdarg_value_t *values); |
74 | 6931 |
+ |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
6932 |
+typedef enum { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
6933 |
+ msgtype_not_set, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
6934 |
+ msgtype_normal, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
6935 |
+ msgtype_headline, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
6936 |
+} msgtype_t; |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6937 |
+ |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6938 |
+void say_cmd(char *arg, msgtype_t msgtype); |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6939 |
#endif |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
6940 |
-gboolean cmd_is_safe(const gchar *name); |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
6941 |
|
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
6942 |
void cmd_room_whois(gpointer bud, const char *nick, guint interactive); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
6943 |
void cmd_room_leave(gpointer bud, char *arg); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
6944 |
-void cmd_setstatus(const char *recipient, const char *arg); |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
6945 |
-void say_cmd(char *arg, int parse_flags); |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
6946 |
|
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
6947 |
#endif /* __MCABBER_COMMANDS_H__ */ |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
6948 |
|
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
6949 |
diff -r 7a77fde8f7ee mcabber/mcabber/hooks.c |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
6950 |
--- a/mcabber/mcabber/hooks.c Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
6951 |
+++ b/mcabber/mcabber/hooks.c Thu Aug 22 00:44:41 2013 +0300 |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6952 |
@@ -638,10 +638,9 @@ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6953 |
|
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6954 |
scr_LogPrint(LPRINT_LOGNORM, "Running hook-post-connect..."); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6955 |
|
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6956 |
- cmdline = from_utf8(hook_command); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6957 |
- if (process_command(cmdline, TRUE) == 255) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6958 |
+ cmdline = g_strdup(hook_command); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6959 |
+ if (cmd_execute(cmdline, cmd_default) == cmd_result_quit) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6960 |
mcabber_set_terminate_ui(); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6961 |
- |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6962 |
g_free(cmdline); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6963 |
} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6964 |
|
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6965 |
@@ -665,10 +664,9 @@ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6966 |
|
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6967 |
scr_LogPrint(LPRINT_LOGNORM, "Running hook-pre-disconnect..."); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6968 |
|
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6969 |
- cmdline = from_utf8(hook_command); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6970 |
- if (process_command(cmdline, TRUE) == 255) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6971 |
+ cmdline = g_strdup(hook_command); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6972 |
+ if (cmd_execute(cmdline, cmd_default) == cmd_result_quit) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6973 |
mcabber_set_terminate_ui(); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6974 |
- |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6975 |
g_free(cmdline); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6976 |
} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
6977 |
|
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
6978 |
diff -r 7a77fde8f7ee mcabber/mcabber/roster.c |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
6979 |
--- a/mcabber/mcabber/roster.c Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
6980 |
+++ b/mcabber/mcabber/roster.c Thu Aug 22 00:44:41 2013 +0300 |
66 | 6981 |
@@ -1586,13 +1586,14 @@ |
6982 |
// Look for a buddy whose name or jid contains string. |
|
6983 |
// Search begins at current_buddy; if no match is found in the the buddylist, |
|
6984 |
// return NULL; |
|
6985 |
+// Note: before this function considered its argument to be in local encoding, |
|
6986 |
+// now argument must be in utf8. |
|
6987 |
GList *buddy_search(char *string) |
|
6988 |
{ |
|
6989 |
GList *buddy = current_buddy; |
|
6990 |
roster *roster_usr; |
|
6991 |
if (!buddylist || !current_buddy) return NULL; |
|
6992 |
for (;;) { |
|
6993 |
- gchar *jid_locale, *name_locale; |
|
6994 |
char *found = NULL; |
|
6995 |
||
6996 |
buddy = g_list_next(buddy); |
|
6997 |
@@ -1601,17 +1602,13 @@ |
|
6998 |
||
6999 |
roster_usr = (roster*)buddy->data; |
|
7000 |
||
7001 |
- jid_locale = from_utf8(roster_usr->jid); |
|
7002 |
- if (jid_locale) { |
|
7003 |
- found = strcasestr(jid_locale, string); |
|
7004 |
- g_free(jid_locale); |
|
7005 |
+ if (roster_usr->jid) { |
|
7006 |
+ found = strcasestr(roster_usr->jid, string); |
|
7007 |
if (found) |
|
7008 |
return buddy; |
|
7009 |
} |
|
7010 |
- name_locale = from_utf8(roster_usr->name); |
|
7011 |
- if (name_locale) { |
|
7012 |
- found = strcasestr(name_locale, string); |
|
7013 |
- g_free(name_locale); |
|
7014 |
+ if (roster_usr->name) { |
|
7015 |
+ found = strcasestr(roster_usr->name, string); |
|
7016 |
if (found) |
|
7017 |
return buddy; |
|
7018 |
} |
|
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
7019 |
diff -r 7a77fde8f7ee mcabber/mcabber/screen.c |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
7020 |
--- a/mcabber/mcabber/screen.c Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
7021 |
+++ b/mcabber/mcabber/screen.c Thu Aug 22 00:44:41 2013 +0300 |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
7022 |
@@ -3630,7 +3630,7 @@ |
74 | 7023 |
{ |
7024 |
scr_check_auto_away(TRUE); |
|
7025 |
last_activity_buddy = current_buddy; |
|
7026 |
- if (process_line(inputLine)) |
|
7027 |
+ if (process_line(inputLine) == cmd_result_quit) |
|
7028 |
return 255; |
|
7029 |
// Add line to history |
|
7030 |
scr_cmdhisto_addline(inputLine); |
|
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7031 |
@@ -3802,8 +3802,12 @@ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7032 |
void readline_send_multiline(void) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7033 |
{ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7034 |
// Validate current multi-line |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7035 |
- if (multimode) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7036 |
- process_command(mkcmdstr("msay send"), TRUE); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7037 |
+ if (multimode) { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7038 |
+ // FIXME - do it without parsing |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7039 |
+ gchar *cmdline = g_strdup("msay send"); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7040 |
+ cmd_execute(cmdline, cmdexe_default); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7041 |
+ g_free(cmdline); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7042 |
+ } |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7043 |
} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7044 |
|
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7045 |
void readline_insert(const char *toinsert) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7046 |
@@ -3883,6 +3887,8 @@ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7047 |
// Initiate or continue a completion... |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7048 |
static void scr_handle_tab(void) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7049 |
{ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7050 |
+// FIXME completion |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7051 |
+#if 0 |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7052 |
int nrow; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7053 |
const char *row; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7054 |
const char *cchar; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7055 |
@@ -3978,6 +3984,7 @@ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7056 |
if (cchar) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7057 |
scr_insert_text(cchar); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7058 |
} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7059 |
+#endif |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7060 |
} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7061 |
|
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7062 |
static void scr_cancel_current_completion(void) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7063 |
@@ -4098,7 +4105,9 @@ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7064 |
{ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7065 |
if (!Curses) return; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7066 |
// Leave multi-line mode |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7067 |
- process_command(mkcmdstr("msay abort"), TRUE); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7068 |
+ gchar *cmdline = g_strdup("msay abort"); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7069 |
+ cmd_execute(cmdline, cmdexe_default); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7070 |
+ g_free(cmdline); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7071 |
// Same as Ctrl-g, now |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7072 |
scr_cancel_current_completion(); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7073 |
scr_end_current_completion(); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7074 |
@@ -4302,10 +4311,12 @@ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7075 |
boundcmd = settings_get(SETTINGS_TYPE_BINDING, asciikey); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7076 |
|
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7077 |
if (boundcmd) { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7078 |
- gchar *cmdline = from_utf8(boundcmd); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7079 |
+ gchar *cmdline = g_strdup(boundcmd); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7080 |
scr_check_auto_away(TRUE); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7081 |
- if (process_command(cmdline, TRUE)) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7082 |
+ if (cmd_execute(cmdline, cmdexe_default) == cmd_result_quit) { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7083 |
+ g_free(cmdline); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7084 |
return 255; // Quit |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7085 |
+ } |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7086 |
g_free(cmdline); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7087 |
return 0; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7088 |
} |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
7089 |
diff -r 7a77fde8f7ee mcabber/mcabber/settings.c |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
7090 |
--- a/mcabber/mcabber/settings.c Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
7091 |
+++ b/mcabber/mcabber/settings.c Thu Aug 22 00:44:41 2013 +0300 |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7092 |
@@ -183,28 +183,12 @@ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7093 |
if ((*line == '\n') || (*line == '\0') || (*line == '#')) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7094 |
continue; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7095 |
|
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7096 |
- // If we aren't in runtime (i.e. startup) we'll only accept "safe" commands |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7097 |
- if (!runtime) { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7098 |
- const gchar *cmdend = strchr(line, ' '); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7099 |
- gchar *cmdname = NULL; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7100 |
- gboolean safe; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7101 |
- if (cmdend) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7102 |
- cmdname = g_strndup(line, cmdend - line); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7103 |
- safe = cmd_is_safe(cmdname ? cmdname : line); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7104 |
- g_free(cmdname); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7105 |
- if (!safe) { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7106 |
- scr_log_print(LPRINT_LOGNORM, "Error in configuration file (l. %d): " |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7107 |
- "this command can't be used here", ln); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7108 |
- err++; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7109 |
- continue; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7110 |
- } |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7111 |
- } |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7112 |
- |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7113 |
- // Set the leading COMMAND_CHAR to build a command line |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7114 |
- // and process the command |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7115 |
- *(--line) = COMMAND_CHAR; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7116 |
- if (process_command(line, TRUE) == 255) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7117 |
+ // FIXME: in-buffer conversion? some glib iochannel stuff? |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7118 |
+ gchar *utf8 = to_utf8(line); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7119 |
+ if (cmd_execute(utf8, runtime ? cmdexe_default : cmdexe_check_safe) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7120 |
+ == cmd_result_quit) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7121 |
mcabber_set_terminate_ui(); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7122 |
+ g_free(utf8); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7123 |
} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7124 |
g_free(buf); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7125 |
fclose(fp); |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
7126 |
diff -r 7a77fde8f7ee mcabber/mcabber/xmpp_iq.c |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
7127 |
--- a/mcabber/mcabber/xmpp_iq.c Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
7128 |
+++ b/mcabber/mcabber/xmpp_iq.c Thu Aug 22 00:44:41 2013 +0300 |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7129 |
@@ -71,20 +71,20 @@ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7130 |
struct adhoc_status { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7131 |
char *name; // the name used by adhoc |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7132 |
char *description; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7133 |
- char *status; // the string, used by setstus |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7134 |
+ enum imstatus status; // corresponding imstatus value |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7135 |
}; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7136 |
// It has to match imstatus of roster.h! |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7137 |
const struct adhoc_status adhoc_status_list[] = { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7138 |
- {"offline", "Offline", "offline"}, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7139 |
- {"online", "Online", "avail"}, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7140 |
- {"chat", "Chat", "free"}, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7141 |
- {"dnd", "Do not disturb", "dnd"}, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7142 |
- {"xa", "Extended away", "notavail"}, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7143 |
- {"away", "Away", "away"}, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7144 |
+ {"offline", "Offline", offline}, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7145 |
+ {"online", "Online", available}, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7146 |
+ {"chat", "Chat", freeforchat}, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7147 |
+ {"dnd", "Do not disturb", dontdisturb}, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7148 |
+ {"xa", "Extended away", notavail}, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7149 |
+ {"away", "Away", away}, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7150 |
#ifdef WITH_DEPRECATED_STATUS_INVISIBLE |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7151 |
- {"invisible", "Invisible", "invisible"}, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7152 |
+ {"invisible", "Invisible", invisible}, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7153 |
#endif |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7154 |
- {NULL, NULL, NULL}, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7155 |
+ {NULL, NULL, imstatus_size}, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7156 |
}; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7157 |
|
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7158 |
static char *generate_session_id(char *prefix) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7159 |
@@ -289,10 +289,11 @@ |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
7160 |
if (value) { |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
7161 |
for (s = adhoc_status_list; !s->name || strcmp(s->name, value); s++); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
7162 |
if (s->name) { |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
7163 |
- char *status = g_strdup_printf("%s %s", s->status, |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
7164 |
- message ? message : ""); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
7165 |
- cmd_setstatus(NULL, status); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
7166 |
- g_free(status); |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7167 |
+ // It makes sense to reset autoaway before changing the status |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7168 |
+ // (esp. for FIFO or remote commands) or the behaviour could be |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7169 |
+ // unexpected... |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7170 |
+ scr_check_auto_away(TRUE); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7171 |
+ xmpp_setstatus(s->status, NULL, message ? message : "", FALSE); |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
7172 |
lm_message_node_set_attribute(command, "status", "completed"); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
7173 |
lm_message_node_add_dataform_result(command, |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
7174 |
"Status has been changed"); |
87
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
7175 |
diff -r 7a77fde8f7ee mcabber/modules/beep/beep.c |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
7176 |
--- a/mcabber/modules/beep/beep.c Sat Jul 13 21:05:39 2013 +0300 |
78238d26911a
Update series to current dev version
Myhailo Danylenko <isbear@ukrpost.net>
parents:
85
diff
changeset
|
7177 |
+++ b/mcabber/modules/beep/beep.c Thu Aug 22 00:44:41 2013 +0300 |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7178 |
@@ -31,6 +31,7 @@ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7179 |
|
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7180 |
static void beep_init (void); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7181 |
static void beep_uninit (void); |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
7182 |
+static gchar *do_beep (const cmdopts_t *command, cmdarg_value_t *values); |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7183 |
|
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7184 |
/* Module description */ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7185 |
module_info_t info_beep = { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7186 |
@@ -46,9 +47,7 @@ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7187 |
.next = NULL, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7188 |
}; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7189 |
|
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7190 |
-static guint beep_cid = 0; /* Command completion category id */ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7191 |
-static gpointer beep_cmid = 0; /* Command id */ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7192 |
-static guint beep_hid = 0; /* Hook handler id */ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7193 |
+static guint beep_hid = 0; /* Hook handler id */ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7194 |
|
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7195 |
/* Event handler */ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7196 |
static guint beep_hh(const gchar *hookname, hk_arg_t *args, gpointer userdata) |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
7197 |
@@ -61,20 +60,42 @@ |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7198 |
return HOOK_HANDLER_RESULT_ALLOW_MORE_HANDLERS; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7199 |
} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7200 |
|
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7201 |
+static const string2enum_t s2e_onoff[] = { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7202 |
+ { "on", 1 }, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7203 |
+ { "off", 0 }, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7204 |
+ { "enable", 1 }, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7205 |
+ { "disable", 0 }, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7206 |
+ { "1", 1 }, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7207 |
+ { "0", 0 }, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7208 |
+ { "show", 2 }, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7209 |
+ { NULL, 0 }, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7210 |
+}; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7211 |
+ |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
7212 |
+typedef enum { |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
7213 |
+ pos_beep_enable = 0, |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
7214 |
+} pos_beep_t; |
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
7215 |
+ |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7216 |
+static cmdopts_t def_beep = { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7217 |
+ "beep", |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7218 |
+ cmd_default, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7219 |
+ NULL, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7220 |
+ do_beep, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7221 |
+ NULL, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7222 |
+ (cmdarg_t[2]){ |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
7223 |
+ {"on|off", pos_beep_enable, cmdarg_chreq, "show", &cmdarg_type_string2enum, (gpointer)s2e_onoff}, |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7224 |
+ {NULL} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7225 |
+ }, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7226 |
+ NULL |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7227 |
+}; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7228 |
+ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7229 |
/* beep command handler */ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7230 |
-static void do_beep(char *args) |
81
8e1ccd27d60f
[cmdopts] Constantize some more fields
Myhailo Danylenko <isbear@ukrpost.net>
parents:
80
diff
changeset
|
7231 |
+static gchar *do_beep(const cmdopts_t *command, cmdarg_value_t *values) |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7232 |
{ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7233 |
/* Check arguments, and if recognized, |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7234 |
* set mcabber option accordingly */ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7235 |
- if (!strcmp(args, "enable") || |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7236 |
- !strcmp(args, "on") || |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7237 |
- !strcmp(args, "yes") || |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7238 |
- !strcmp(args, "1")) |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
7239 |
+ if (values[pos_beep_enable].value.uint == 1) |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7240 |
settings_set(SETTINGS_TYPE_OPTION, "beep_enable", "1"); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7241 |
- else if (!strcmp(args, "disable") || |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7242 |
- !strcmp(args, "off") || |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7243 |
- !strcmp(args, "no") || |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7244 |
- !strcmp(args, "0")) |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
7245 |
+ else if (values[pos_beep_enable].value.uint == 0) |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7246 |
settings_set(SETTINGS_TYPE_OPTION, "beep_enable", "0"); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7247 |
|
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7248 |
/* Output current state, either if state is |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
7249 |
@@ -83,19 +104,14 @@ |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7250 |
scr_log_print(LPRINT_NORMAL, "Beep on messages is enabled"); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7251 |
else |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7252 |
scr_log_print(LPRINT_NORMAL, "Beep on messages is disabled"); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7253 |
+ return NULL; |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7254 |
} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7255 |
|
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7256 |
/* Initialization */ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7257 |
static void beep_init(void) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7258 |
{ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7259 |
- /* Create completions */ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7260 |
- beep_cid = compl_new_category(COMPL_FLAGS_SORT); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7261 |
- if (beep_cid) { |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7262 |
- compl_add_category_word(beep_cid, "enable"); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7263 |
- compl_add_category_word(beep_cid, "disable"); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7264 |
- } |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7265 |
/* Add command */ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7266 |
- beep_cmid = cmd_add("beep", "", beep_cid, 0, do_beep, NULL); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7267 |
+ cmd_define(&def_beep); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7268 |
/* Add handler |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7269 |
* We are only interested in incoming message events |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7270 |
*/ |
79
07e696e91b6f
[cmdopts] Dynamically-allocated values
Myhailo Danylenko <isbear@ukrpost.net>
parents:
78
diff
changeset
|
7271 |
@@ -109,11 +125,7 @@ |
78
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7272 |
/* Unregister event handler */ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7273 |
hk_del_handler(HOOK_POST_MESSAGE_IN, beep_hid); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7274 |
/* Unregister command */ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7275 |
- cmd_del(beep_cmid); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7276 |
- /* Give back completion handle */ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7277 |
- if (beep_cid) |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7278 |
- compl_del_category(beep_cid); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7279 |
+ cmd_undef(&def_beep); |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7280 |
} |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7281 |
|
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7282 |
-/* The End */ |
ee30584c654b
[cmdopts,fix-xa] Gradual conversion & error elimination
Myhailo Danylenko <isbear@ukrpost.net>
parents:
77
diff
changeset
|
7283 |
/* vim: set et cindent cinoptions=>2\:2(0 ts=2 sw=2: For Vim users... */ |