author | Myhailo Danylenko <isbear@ukrpost.net> |
Tue, 12 Mar 2013 01:23:02 +0200 | |
changeset 76 | 3c8b784f92c7 |
parent 75 | 17cd00b2e722 |
child 77 | 7197414053c9 |
permissions | -rw-r--r-- |
64 | 1 |
# HG changeset patch |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2 |
# Parent b527e88002781b92309dfd32d80f4e04170bb2cf |
74 | 3 |
[work-in-progress] Unified command option parsing |
4 |
||
5 |
* wrecking chaos all over the place |
|
6 |
* started integration with cmd subsystem |
|
7 |
* broke everything |
|
8 |
||
9 |
** PREVIOUS ACHIEVEMENTS ** |
|
64 | 10 |
|
66 | 11 |
* cmdopts_parse() & cmdopts_free() in utils.c/h |
12 |
* /roster uses parser |
|
13 |
* buddy_search() now expects argument in utf8 |
|
14 |
* /say_to uses parser |
|
67
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
15 |
* /color uses parser |
68
c2334fb31211
[cmdopts] Convert /status and /status_to
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
16 |
* /status and /status_to use parser |
c2334fb31211
[cmdopts] Convert /status and /status_to
Myhailo Danylenko <isbear@ukrpost.net>
parents:
67
diff
changeset
|
17 |
* cmd_setstatus() now expects separate status and message arguments |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
18 |
* /add uses parser |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
19 |
* /del uses parser |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
20 |
* 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
|
21 |
* -n(--dryrun) switch for debugging purposes |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
22 |
* /group uses parser |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
23 |
* /say uses parser |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
24 |
* say_cmd()'s second argument is now of new type msgtype_t |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
25 |
* /msay uses parser |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
26 |
* scr_multi* now store multiline in utf8 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
27 |
* /buffer uses parser |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
28 |
* fix help for /buffer date |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
29 |
* /rename uses parser |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
30 |
* -r(--reset) instead of '-' |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
31 |
* -j(--jid), -g(--group), -n(--name) |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
32 |
* /move uses parser |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
33 |
* -j(--jid), -n(--name) |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
34 |
* /rawxml uses parser |
66 | 35 |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
36 |
diff -r b527e8800278 mcabber/doc/help/cs/hlp_buffer.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
37 |
--- a/mcabber/doc/help/cs/hlp_buffer.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
38 |
+++ b/mcabber/doc/help/cs/hlp_buffer.txt Tue Mar 12 01:21:22 2013 +0200 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
39 |
@@ -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
|
40 |
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
|
41 |
/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
|
42 |
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
|
43 |
-/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
|
44 |
+/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
|
45 |
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
|
46 |
/buffer % n |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
47 |
Přesune se na procentuální pozici n%. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
48 |
diff -r b527e8800278 mcabber/doc/help/cs/hlp_del.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
49 |
--- a/mcabber/doc/help/cs/hlp_del.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
50 |
+++ b/mcabber/doc/help/cs/hlp_del.txt Tue Mar 12 01:21:22 2013 +0200 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
51 |
@@ -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
|
52 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
53 |
- /DEL |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
54 |
+ /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
|
55 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
56 |
Smaže aktuální kontakt ze seznamu kontaktů (rosteru) a zruší povolení oznamování o stavu daného kontaktu (autorizaci) na obou stranách. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
57 |
diff -r b527e8800278 mcabber/doc/help/cs/hlp_move.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
58 |
--- a/mcabber/doc/help/cs/hlp_move.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
59 |
+++ b/mcabber/doc/help/cs/hlp_move.txt Tue Mar 12 01:21:22 2013 +0200 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
60 |
@@ -1,5 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
61 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
62 |
- /MOVE [skupina] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
63 |
+ /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
|
64 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
65 |
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
|
66 |
+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
|
67 |
Tip: V módu rozhovoru lze použít "/roster alternate" pro skok na přesunutý kontakt. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
68 |
diff -r b527e8800278 mcabber/doc/help/cs/hlp_rename.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
69 |
--- a/mcabber/doc/help/cs/hlp_rename.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
70 |
+++ b/mcabber/doc/help/cs/hlp_rename.txt Tue Mar 12 01:21:22 2013 +0200 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
71 |
@@ -1,4 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
72 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
73 |
- /RENAME jméno |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
74 |
+ /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
|
75 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
76 |
-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
|
77 |
+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
|
78 |
+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
|
79 |
+Optionally you can use one of --jid, --group or --name to select object, different from current. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
80 |
diff -r b527e8800278 mcabber/doc/help/de/hlp_buffer.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
81 |
--- a/mcabber/doc/help/de/hlp_buffer.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
82 |
+++ b/mcabber/doc/help/de/hlp_buffer.txt Tue Mar 12 01:21:22 2013 +0200 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
83 |
@@ -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
|
84 |
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
|
85 |
/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
|
86 |
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
|
87 |
-/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
|
88 |
+/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
|
89 |
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
|
90 |
/buffer % n |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
91 |
Springe zur Position "n" im Chatpuffer |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
92 |
diff -r b527e8800278 mcabber/doc/help/de/hlp_del.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
93 |
--- a/mcabber/doc/help/de/hlp_del.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
94 |
+++ b/mcabber/doc/help/de/hlp_del.txt Tue Mar 12 01:21:22 2013 +0200 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
95 |
@@ -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
|
96 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
97 |
- /DEL |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
98 |
+ /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
|
99 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
100 |
Löscht den gerade ausgewählten Buddy vom Roster. Außerdem werden die automatischen Presence Benachrichtigungen vom/zum Buddy gestoppt. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
101 |
diff -r b527e8800278 mcabber/doc/help/de/hlp_move.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
102 |
--- a/mcabber/doc/help/de/hlp_move.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
103 |
+++ b/mcabber/doc/help/de/hlp_move.txt Tue Mar 12 01:21:22 2013 +0200 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
104 |
@@ -1,6 +1,7 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
105 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
106 |
- /MOVE [groupname] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
107 |
+ /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
|
108 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
109 |
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
|
110 |
+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
|
111 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
112 |
Tipp: Wenn der Chatmodus aktiviert ist, kannst du "/roster alternate" benutzen um zu dem gerade bewegten Buddy zu springen. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
113 |
diff -r b527e8800278 mcabber/doc/help/de/hlp_rename.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
114 |
--- a/mcabber/doc/help/de/hlp_rename.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
115 |
+++ b/mcabber/doc/help/de/hlp_rename.txt Tue Mar 12 01:21:22 2013 +0200 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
116 |
@@ -1,4 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
117 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
118 |
- /RENAME name |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
119 |
+ /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
|
120 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
121 |
-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
|
122 |
+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
|
123 |
+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
|
124 |
+Optionally you can use one of --jid, --group or --name to select object, different from current. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
125 |
diff -r b527e8800278 mcabber/doc/help/en/hlp_buffer.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
126 |
--- a/mcabber/doc/help/en/hlp_buffer.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
127 |
+++ b/mcabber/doc/help/en/hlp_buffer.txt Tue Mar 12 01:21:22 2013 +0200 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
128 |
@@ -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
|
129 |
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
|
130 |
/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
|
131 |
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
|
132 |
-/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
|
133 |
+/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
|
134 |
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
|
135 |
/buffer % n |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
136 |
Jump to position %n of the buddy chat buffer |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
137 |
diff -r b527e8800278 mcabber/doc/help/en/hlp_del.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
138 |
--- a/mcabber/doc/help/en/hlp_del.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
139 |
+++ b/mcabber/doc/help/en/hlp_del.txt Tue Mar 12 01:21:22 2013 +0200 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
140 |
@@ -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
|
141 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
142 |
- /DEL |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
143 |
+ /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
|
144 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
145 |
-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
|
146 |
+Delete the current buddy or one, specified with [jid] from our roster, unsubscribe from its presence notification and unsubscribe it from ours. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
147 |
diff -r b527e8800278 mcabber/doc/help/en/hlp_move.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
148 |
--- a/mcabber/doc/help/en/hlp_move.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
149 |
+++ b/mcabber/doc/help/en/hlp_move.txt Tue Mar 12 01:21:22 2013 +0200 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
150 |
@@ -1,5 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
151 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
152 |
- /MOVE [groupname] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
153 |
+ /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
|
154 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
155 |
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
|
156 |
+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
|
157 |
Tip: if the chatmode is enabled, you can use "/roster alternate" to jump to the moved buddy. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
158 |
diff -r b527e8800278 mcabber/doc/help/en/hlp_rename.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
159 |
--- a/mcabber/doc/help/en/hlp_rename.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
160 |
+++ b/mcabber/doc/help/en/hlp_rename.txt Tue Mar 12 01:21:22 2013 +0200 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
161 |
@@ -1,4 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
162 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
163 |
- /RENAME name |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
164 |
+ /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
|
165 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
166 |
-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
|
167 |
+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
|
168 |
+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
|
169 |
+Optionally you can use one of --jid, --group or --name to select object, different from current. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
170 |
diff -r b527e8800278 mcabber/doc/help/fr/hlp_buffer.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
171 |
--- a/mcabber/doc/help/fr/hlp_buffer.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
172 |
+++ b/mcabber/doc/help/fr/hlp_buffer.txt Tue Mar 12 01:21:22 2013 +0200 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
173 |
@@ -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
|
174 |
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
|
175 |
/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
|
176 |
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
|
177 |
-/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
|
178 |
+/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
|
179 |
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
|
180 |
/buffer % n |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
181 |
Va à la position n% du tampon |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
182 |
diff -r b527e8800278 mcabber/doc/help/fr/hlp_del.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
183 |
--- a/mcabber/doc/help/fr/hlp_del.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
184 |
+++ b/mcabber/doc/help/fr/hlp_del.txt Tue Mar 12 01:21:22 2013 +0200 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
185 |
@@ -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
|
186 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
187 |
- /DEL |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
188 |
+ /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
|
189 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
190 |
Supprime le contact sélectionné du roster, supprime notre abonnement à ses notifications de présence et supprime son abonnement aux nôtres. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
191 |
diff -r b527e8800278 mcabber/doc/help/fr/hlp_move.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
192 |
--- a/mcabber/doc/help/fr/hlp_move.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
193 |
+++ b/mcabber/doc/help/fr/hlp_move.txt Tue Mar 12 01:21:22 2013 +0200 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
194 |
@@ -1,5 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
195 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
196 |
- /MOVE [groupname] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
197 |
+ /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
|
198 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
199 |
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
|
200 |
+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
|
201 |
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. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
202 |
diff -r b527e8800278 mcabber/doc/help/fr/hlp_rename.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
203 |
--- a/mcabber/doc/help/fr/hlp_rename.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
204 |
+++ b/mcabber/doc/help/fr/hlp_rename.txt Tue Mar 12 01:21:22 2013 +0200 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
205 |
@@ -1,4 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
206 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
207 |
- /RENAME nom |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
208 |
+ /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
|
209 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
210 |
-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
|
211 |
+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
|
212 |
+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
|
213 |
+Optionally you can use one of --jid, --group or --name to select object, different from current. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
214 |
diff -r b527e8800278 mcabber/doc/help/it/hlp_buffer.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
215 |
--- a/mcabber/doc/help/it/hlp_buffer.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
216 |
+++ b/mcabber/doc/help/it/hlp_buffer.txt Tue Mar 12 01:21:22 2013 +0200 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
217 |
@@ -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
|
218 |
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
|
219 |
/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
|
220 |
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
|
221 |
-/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
|
222 |
+/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
|
223 |
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
|
224 |
/buffer % n |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
225 |
Salta alla posizione %n del buffer di chat corrente |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
226 |
diff -r b527e8800278 mcabber/doc/help/it/hlp_del.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
227 |
--- a/mcabber/doc/help/it/hlp_del.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
228 |
+++ b/mcabber/doc/help/it/hlp_del.txt Tue Mar 12 01:21:22 2013 +0200 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
229 |
@@ -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
|
230 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
231 |
- /DEL |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
232 |
+ /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
|
233 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
234 |
Elimina il contatto corrente dal roster, cancellando la sottoscrizione alle reciproche notifiche della propria presenza. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
235 |
diff -r b527e8800278 mcabber/doc/help/it/hlp_move.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
236 |
--- a/mcabber/doc/help/it/hlp_move.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
237 |
+++ b/mcabber/doc/help/it/hlp_move.txt Tue Mar 12 01:21:22 2013 +0200 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
238 |
@@ -1,5 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
239 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
240 |
- /MOVE [gruppo] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
241 |
+ /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
|
242 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
243 |
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
|
244 |
+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
|
245 |
Trucco: se la modalità chat è abilitata, puoi usare "/roster alternate" per spostarti sul contatto appena mosso. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
246 |
diff -r b527e8800278 mcabber/doc/help/it/hlp_rename.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
247 |
--- a/mcabber/doc/help/it/hlp_rename.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
248 |
+++ b/mcabber/doc/help/it/hlp_rename.txt Tue Mar 12 01:21:22 2013 +0200 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
249 |
@@ -1,4 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
250 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
251 |
- /RENAME nome |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
252 |
+ /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
|
253 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
254 |
-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
|
255 |
+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
|
256 |
+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
|
257 |
+Optionally you can use one of --jid, --group or --name to select object, different from current. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
258 |
diff -r b527e8800278 mcabber/doc/help/nl/hlp_buffer.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
259 |
--- a/mcabber/doc/help/nl/hlp_buffer.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
260 |
+++ b/mcabber/doc/help/nl/hlp_buffer.txt Tue Mar 12 01:21:22 2013 +0200 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
261 |
@@ -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
|
262 |
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
|
263 |
/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
|
264 |
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
|
265 |
-/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
|
266 |
+/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
|
267 |
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
|
268 |
/buffer % n |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
269 |
Spring naar positie %n in de buddy chat buffer |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
270 |
diff -r b527e8800278 mcabber/doc/help/nl/hlp_del.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
271 |
--- a/mcabber/doc/help/nl/hlp_del.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
272 |
+++ b/mcabber/doc/help/nl/hlp_del.txt Tue Mar 12 01:21:22 2013 +0200 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
273 |
@@ -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
|
274 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
275 |
- /DEL |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
276 |
+ /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
|
277 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
278 |
Verwijder de actieve buddy uit ons roster, en zet het wederzijds toezenden van status veranderingen stop. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
279 |
diff -r b527e8800278 mcabber/doc/help/nl/hlp_move.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
280 |
--- a/mcabber/doc/help/nl/hlp_move.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
281 |
+++ b/mcabber/doc/help/nl/hlp_move.txt Tue Mar 12 01:21:22 2013 +0200 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
282 |
@@ -1,5 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
283 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
284 |
- /MOVE [groepsnaam] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
285 |
+ /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
|
286 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
287 |
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
|
288 |
+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
|
289 |
Tip: indien chatmode actief is, kun je "/roster alternate" gebruiken om direct naar de verplaatste buddy te springen. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
290 |
diff -r b527e8800278 mcabber/doc/help/nl/hlp_rename.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
291 |
--- a/mcabber/doc/help/nl/hlp_rename.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
292 |
+++ b/mcabber/doc/help/nl/hlp_rename.txt Tue Mar 12 01:21:22 2013 +0200 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
293 |
@@ -1,4 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
294 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
295 |
- /RENAME naam |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
296 |
+ /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
|
297 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
298 |
-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
|
299 |
+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
|
300 |
+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
|
301 |
+Optionally you can use one of --jid, --group or --name to select object, different from current. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
302 |
diff -r b527e8800278 mcabber/doc/help/pl/hlp_del.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
303 |
--- a/mcabber/doc/help/pl/hlp_del.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
304 |
+++ b/mcabber/doc/help/pl/hlp_del.txt Tue Mar 12 01:21:22 2013 +0200 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
305 |
@@ -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
|
306 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
307 |
- /DEL |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
308 |
+ /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
|
309 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
310 |
Usuwa aktualnie zaznaczoną osobę z rostera, usuwa subskrypcję powiadomienia dostępności u danej osoby oraz u nas. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
311 |
diff -r b527e8800278 mcabber/doc/help/pl/hlp_move.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
312 |
--- a/mcabber/doc/help/pl/hlp_move.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
313 |
+++ b/mcabber/doc/help/pl/hlp_move.txt Tue Mar 12 01:21:22 2013 +0200 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
314 |
@@ -1,5 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
315 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
316 |
- /MOVE [nazwa grupy] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
317 |
+ /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
|
318 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
319 |
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
|
320 |
+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
|
321 |
Podpowiedź: jeśli jest włączony tryb czatu, możesz użyć "/roster alternate" aby skoczyć do przeniesionej osoby. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
322 |
diff -r b527e8800278 mcabber/doc/help/pl/hlp_rename.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
323 |
--- a/mcabber/doc/help/pl/hlp_rename.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
324 |
+++ b/mcabber/doc/help/pl/hlp_rename.txt Tue Mar 12 01:21:22 2013 +0200 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
325 |
@@ -1,4 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
326 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
327 |
- /RENAME nazwa |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
328 |
+ /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
|
329 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
330 |
-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
|
331 |
+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
|
332 |
+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
|
333 |
+Optionally you can use one of --jid, --group or --name to select object, different from current. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
334 |
diff -r b527e8800278 mcabber/doc/help/ru/hlp_buffer.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
335 |
--- a/mcabber/doc/help/ru/hlp_buffer.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
336 |
+++ b/mcabber/doc/help/ru/hlp_buffer.txt Tue Mar 12 01:21:22 2013 +0200 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
337 |
@@ -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
|
338 |
Перемещает на [n] строк вверх в буфере (истории переписки) (по умолчанию: половина экрана) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
339 |
/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
|
340 |
Перемещает на [n] строк вниз в буфере (истории переписки) (по умолчанию: половина экрана) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
341 |
-/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
|
342 |
+/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
|
343 |
Перемещает в первой строке после определенной даты [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
|
344 |
/buffer % n |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
345 |
Перемещает на позицию %n в текущем буфере (истории переписки) |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
346 |
diff -r b527e8800278 mcabber/doc/help/ru/hlp_del.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
347 |
--- a/mcabber/doc/help/ru/hlp_del.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
348 |
+++ b/mcabber/doc/help/ru/hlp_del.txt Tue Mar 12 01:21:22 2013 +0200 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
349 |
@@ -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
|
350 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
351 |
- /DEL |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
352 |
+ /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
|
353 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
354 |
-Удаляет текущего пользователя из списка контактов, отключает уведомления о его статусе и отключает уведомления пользователя о вашем статусе. |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
355 |
+Удаляет текущего пользователя (или указанного с помощью jid) из списка контактов, отключает уведомления о его статусе и отключает уведомление пользователя о вашем статусе. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
356 |
diff -r b527e8800278 mcabber/doc/help/ru/hlp_move.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
357 |
--- a/mcabber/doc/help/ru/hlp_move.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
358 |
+++ b/mcabber/doc/help/ru/hlp_move.txt Tue Mar 12 01:21:22 2013 +0200 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
359 |
@@ -1,6 +1,7 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
360 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
361 |
- /MOVE [groupname] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
362 |
+ /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
|
363 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
364 |
Перемещает пользователя в определенную группу. Если группа не указана, пользователь перещается в группу по умолчанию (default group). Если группа "groupname" не создана, она автоматически создается. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
365 |
+С помощью параметров --jid и --name можно перемещать контакты, отличные от текущего. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
366 |
Полезно: Если включен режим чата (chatmode), Вы можете использовать "/roster alternate" для перехода к перемещенному пользователю. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
367 |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
368 |
diff -r b527e8800278 mcabber/doc/help/ru/hlp_rename.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
369 |
--- a/mcabber/doc/help/ru/hlp_rename.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
370 |
+++ b/mcabber/doc/help/ru/hlp_rename.txt Tue Mar 12 01:21:22 2013 +0200 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
371 |
@@ -1,4 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
372 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
373 |
- /RENAME name |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
374 |
+ /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
|
375 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
376 |
- Переименовывает текущего пользователя или группу в заданное имя "name". Если заданное имя имеет значение "-", то заданное ранее имя текущего пользователя или группы удаляется из списка контактов (mcabber будет отображать JID или имя пользователя по умолчанию). |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
377 |
+Переименовывает текущего пользователя или группу в заданное имя "newname". |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
378 |
+Если указан параметр --reset, "newname" игнорируется, а имя сбрасывается (mcabber будет отображать JID или имя пользователя по умолчанию). |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
379 |
+Для указания обьекта, отличного от текущего, можно использовать опции --jid, --group и --name. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
380 |
diff -r b527e8800278 mcabber/doc/help/uk/hlp_buffer.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
381 |
--- a/mcabber/doc/help/uk/hlp_buffer.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
382 |
+++ b/mcabber/doc/help/uk/hlp_buffer.txt Tue Mar 12 01:21:22 2013 +0200 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
383 |
@@ -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
|
384 |
Посунути буфер вверх на n рядків (якщо не вказано - пів екрану). |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
385 |
/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
|
386 |
Посунути буфер вниз на n рядків (якщо не вказано - пів екрану). |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
387 |
-/buffer date [дата] |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
388 |
+/buffer date дата |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
389 |
Перейти до першого повідомлення після дати (дата вигляду РРРР-ММ-ДД). |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
390 |
/buffer % процент |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
391 |
Перейти до вказаної у процентах позиції. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
392 |
diff -r b527e8800278 mcabber/doc/help/uk/hlp_del.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
393 |
--- a/mcabber/doc/help/uk/hlp_del.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
394 |
+++ b/mcabber/doc/help/uk/hlp_del.txt Tue Mar 12 01:21:22 2013 +0200 |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
395 |
@@ -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
|
396 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
397 |
- /DEL |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
398 |
+ /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
|
399 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
400 |
-Потерти поточний контакт зі списку. На додачу відписатися від його повідомлень про статус і відписати його від ваших. |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
401 |
+Потерти поточний контакт (або контакт, що має вказаний jid) зі списку. Також відписатися від його сповіщень про статус і відписати його від ваших. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
402 |
diff -r b527e8800278 mcabber/doc/help/uk/hlp_move.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
403 |
--- a/mcabber/doc/help/uk/hlp_move.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
404 |
+++ b/mcabber/doc/help/uk/hlp_move.txt Tue Mar 12 01:21:22 2013 +0200 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
405 |
@@ -1,5 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
406 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
407 |
- /MOVE [група] |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
408 |
+ /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
|
409 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
410 |
-Переносить поточний контакт до вказаної групи. Якщо групу не вказати контакт опиниться у головній групі. Якщо група не існує, її буде створено. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
411 |
+Переносить поточний контакт до вказаної групи. Якщо групу не вказати контакт опиниться у головній групі. Якщо групи не існує, її буде створено. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
412 |
+За допомогою опцій --jid та --name можна перемістити контакт, відмінний від поточного. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
413 |
Примітка: в режимі розмови можна використати "/roster alternate", щоб перейти до нового місця контакту контакту. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
414 |
diff -r b527e8800278 mcabber/doc/help/uk/hlp_rename.txt |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
415 |
--- a/mcabber/doc/help/uk/hlp_rename.txt Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
416 |
+++ b/mcabber/doc/help/uk/hlp_rename.txt Tue Mar 12 01:21:22 2013 +0200 |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
417 |
@@ -1,4 +1,6 @@ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
418 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
419 |
- /RENAME ім'я |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
420 |
+ /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
|
421 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
422 |
Змінює прізвисько поточного контакту або назву групи. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
423 |
+За допомогою параметра --reset можна повернути контакту типову назву. При цьому нове ім’я (якщо вказане) ігнорується. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
424 |
+Опції --jid, --group та --name дозволяють перейменовувати об’єкти, відмінні від поточного. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
425 |
diff -r b527e8800278 mcabber/mcabber/commands.c |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
426 |
--- a/mcabber/mcabber/commands.c Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
427 |
+++ b/mcabber/mcabber/commands.c Tue Mar 12 01:21:22 2013 +0200 |
74 | 428 |
@@ -19,7 +19,7 @@ |
429 |
* USA |
|
430 |
*/ |
|
431 |
||
432 |
-#include <string.h> |
|
433 |
+#include <string.h> // g_memmove |
|
434 |
#include <stdlib.h> |
|
435 |
#include <sys/types.h> |
|
436 |
#include <sys/stat.h> |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
437 |
@@ -43,512 +43,671 @@ |
74 | 438 |
#include "xmpp.h" |
439 |
#include "main.h" |
|
440 |
||
441 |
-#define IMSTATUS_AWAY "away" |
|
442 |
-#define IMSTATUS_ONLINE "online" |
|
443 |
-#define IMSTATUS_OFFLINE "offline" |
|
444 |
-#define IMSTATUS_FREE4CHAT "free" |
|
445 |
-#define IMSTATUS_AVAILABLE "avail" |
|
446 |
-#define IMSTATUS_NOTAVAILABLE "notavail" |
|
447 |
-#define IMSTATUS_DONOTDISTURB "dnd" |
|
448 |
-#ifdef WITH_DEPRECATED_STATUS_INVISIBLE |
|
449 |
-# define IMSTATUS_INVISIBLE "invisible" |
|
450 |
+// |
|
451 |
+// Pre-declarations |
|
452 |
+// |
|
453 |
+ |
|
454 |
+// for process_line() |
|
455 |
+typedef enum { |
|
456 |
+ scmd_group_unfold = 0, |
|
457 |
+ scmd_group_fold = 1, |
|
458 |
+ scmd_group_toggle = -1, |
|
459 |
+} group_scmd_t; |
|
460 |
+ |
|
461 |
+static void group_cmd (gpointer group, group_scmd_t action); |
|
462 |
+ |
|
463 |
+//static void room_bookmark(gpointer bud, char *arg); |
|
464 |
+ |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
465 |
+#define BUILTIN_COUNT 4 |
74 | 466 |
+static cmdopts_t def_roster, |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
467 |
+ def_color, |
74 | 468 |
+ def_status, |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
469 |
+ def_status_to; |
74 | 470 |
+#if 0 |
471 |
+ def_add, |
|
472 |
+ def_del, |
|
473 |
+ def_group, |
|
474 |
+ def_say, |
|
475 |
+ def_msay, |
|
476 |
+ def_say_to, |
|
477 |
+ def_buffer, |
|
478 |
+ def_clear, |
|
479 |
+ def_info, |
|
480 |
+ def_rename, |
|
481 |
+ def_move, |
|
482 |
+ def_set, |
|
483 |
+ def_alias, |
|
484 |
+ def_bind, |
|
485 |
+ def_connect, |
|
486 |
+ def_disconnect, |
|
487 |
+ def_rawxml, |
|
488 |
+ def_room, |
|
489 |
+ def_authorization, |
|
490 |
+ def_version, |
|
491 |
+ def_request, |
|
492 |
+ def_event, |
|
493 |
+ def_help, |
|
494 |
+ def_pgp, |
|
495 |
+ def_iline, |
|
496 |
+ def_screen_refresh, |
|
497 |
+ def_chat_disable, |
|
498 |
+ def_source, |
|
499 |
+ def_otr, |
|
500 |
+ def_otrpolicy, |
|
501 |
+ def_echo, |
|
502 |
+ def_module, |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
503 |
+ def_exit; |
74 | 504 |
#endif |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
505 |
|
74 | 506 |
-// Return value container for the following functions |
507 |
-static int retval_for_cmds; |
|
508 |
- |
|
509 |
-// Commands callbacks |
|
510 |
-static void do_roster(char *arg); |
|
511 |
-static void do_status(char *arg); |
|
512 |
-static void do_status_to(char *arg); |
|
513 |
-static void do_add(char *arg); |
|
514 |
-static void do_del(char *arg); |
|
515 |
-static void do_group(char *arg); |
|
516 |
-static void do_say(char *arg); |
|
517 |
-static void do_msay(char *arg); |
|
518 |
-static void do_say_to(char *arg); |
|
519 |
-static void do_buffer(char *arg); |
|
520 |
-static void do_clear(char *arg); |
|
521 |
-static void do_info(char *arg); |
|
522 |
-static void do_rename(char *arg); |
|
523 |
-static void do_move(char *arg); |
|
524 |
-static void do_set(char *arg); |
|
525 |
-static void do_alias(char *arg); |
|
526 |
-static void do_bind(char *arg); |
|
527 |
-static void do_connect(char *arg); |
|
528 |
-static void do_disconnect(char *arg); |
|
529 |
-static void do_rawxml(char *arg); |
|
530 |
-static void do_room(char *arg); |
|
531 |
-static void do_authorization(char *arg); |
|
532 |
-static void do_version(char *arg); |
|
533 |
-static void do_request(char *arg); |
|
534 |
-static void do_event(char *arg); |
|
535 |
-static void do_help(char *arg); |
|
536 |
-static void do_pgp(char *arg); |
|
537 |
-static void do_iline(char *arg); |
|
538 |
-static void do_screen_refresh(char *arg); |
|
539 |
-static void do_chat_disable(char *arg); |
|
540 |
-static void do_source(char *arg); |
|
541 |
-static void do_color(char *arg); |
|
542 |
-static void do_otr(char *arg); |
|
543 |
-static void do_otrpolicy(char *arg); |
|
544 |
-static void do_echo(char *arg); |
|
545 |
-static void do_module(char *arg); |
|
546 |
-static void do_exit(char *arg); |
|
547 |
- |
|
548 |
-static void room_bookmark(gpointer bud, char *arg); |
|
549 |
- |
|
550 |
-// Global variable for the commands list |
|
551 |
-static GSList *Commands; |
|
552 |
-static GSList *safe_commands; |
|
553 |
- |
|
554 |
-#ifdef MODULES_ENABLE |
|
555 |
-#include "modules.h" |
|
556 |
- |
|
557 |
-gpointer cmd_del(gpointer id) |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
558 |
+static gchar *do_roster (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
559 |
+static gchar *do_color (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
560 |
+static gchar *do_status (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
561 |
+static gchar *do_status_to (cmdopts_t *command); |
74 | 562 |
+#if 0 |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
563 |
+static gchar *do_add (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
564 |
+static gchar *do_del (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
565 |
+static gchar *do_group (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
566 |
+static gchar *do_say (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
567 |
+static gchar *do_msay (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
568 |
+static gchar *do_say_to (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
569 |
+static gchar *do_buffer (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
570 |
+static gchar *do_clear (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
571 |
+static gchar *do_info (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
572 |
+static gchar *do_rename (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
573 |
+static gchar *do_move (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
574 |
+static gchar *do_set (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
575 |
+static gchar *do_alias (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
576 |
+static gchar *do_bind (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
577 |
+static gchar *do_connect (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
578 |
+static gchar *do_disconnect (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
579 |
+static gchar *do_rawxml (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
580 |
+static gchar *do_room (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
581 |
+static gchar *do_authorization (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
582 |
+static gchar *do_version (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
583 |
+static gchar *do_request (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
584 |
+static gchar *do_event (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
585 |
+static gchar *do_help (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
586 |
+static gchar *do_pgp (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
587 |
+static gchar *do_iline (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
588 |
+static gchar *do_screen_refresh (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
589 |
+static gchar *do_chat_disable (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
590 |
+static gchar *do_source (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
591 |
+static gchar *do_otr (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
592 |
+static gchar *do_otrpolicy (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
593 |
+static gchar *do_echo (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
594 |
+static gchar *do_module (cmdopts_t *command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
595 |
+static gchar *do_exit (cmdopts_t *command); |
74 | 596 |
+#endif |
597 |
+ |
|
598 |
+// |
|
599 |
+// Main commands mechanics |
|
600 |
+// |
|
601 |
+// Functions to parse mcabber command line and execute commands accordingly. |
|
602 |
+// Allows to define commands and remove definitions. |
|
603 |
+ |
|
604 |
+cmdopts_t **cmd_list = NULL; // command structs list |
|
605 |
+gsize cmd_count = 0; // number of commands (one less than memory allocated) |
|
606 |
+ |
|
607 |
+// private |
|
608 |
+void cmd_init (void) |
|
609 |
{ |
|
610 |
- GSList *sl_cmd; |
|
611 |
- if (!id) return NULL; |
|
612 |
- for (sl_cmd = Commands; sl_cmd; sl_cmd = sl_cmd->next) |
|
613 |
- if (sl_cmd -> data == id) { |
|
614 |
- cmd *command = (cmd *) sl_cmd->data; |
|
615 |
- gpointer userdata = command->userdata; |
|
616 |
- Commands = g_slist_delete_link(Commands, sl_cmd); |
|
617 |
- compl_del_category_word(COMPL_CMD, command->name); |
|
618 |
- g_slice_free(cmd, command); |
|
619 |
- return userdata; |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
620 |
+ 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
|
621 |
+ |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
622 |
+ cmd_list[0] = &def_roster; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
623 |
+ cmd_list[1] = &def_color; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
624 |
+ cmd_list[2] = &def_status; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
625 |
+ cmd_list[3] = &def_status_to; |
74 | 626 |
+#if 0 |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
627 |
+ cmd_list[4] = def_add; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
628 |
+ cmd_list[5] = def_del; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
629 |
+ cmd_list[6] = def_group; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
630 |
+ cmd_list[7] = def_say; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
631 |
+ cmd_list[8] = def_msay; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
632 |
+ cmd_list[9] = def_say_to; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
633 |
+ cmd_list[10] = def_buffer; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
634 |
+ cmd_list[11] = def_clear; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
635 |
+ cmd_list[12] = def_info; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
636 |
+ cmd_list[13] = def_rename; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
637 |
+ cmd_list[14] = def_move; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
638 |
+ cmd_list[15] = def_set; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
639 |
+ cmd_list[16] = def_alias; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
640 |
+ cmd_list[17] = def_bind; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
641 |
+ cmd_list[18] = def_connect; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
642 |
+ cmd_list[19] = def_disconnect; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
643 |
+ cmd_list[20] = def_rawxml; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
644 |
+ cmd_list[21] = def_room; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
645 |
+ cmd_list[22] = def_authorization; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
646 |
+ cmd_list[23] = def_version; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
647 |
+ cmd_list[24] = def_request; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
648 |
+ cmd_list[25] = def_event; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
649 |
+ cmd_list[26] = def_help; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
650 |
+ cmd_list[27] = def_pgp; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
651 |
+ cmd_list[28] = def_iline; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
652 |
+ cmd_list[29] = def_screen_refresh; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
653 |
+ cmd_list[30] = def_chat_disable; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
654 |
+ cmd_list[31] = def_source; |
74 | 655 |
+ cmd_list[32] = def_otr; |
656 |
+ cmd_list[33] = def_otrpolicy; |
|
657 |
+ cmd_list[34] = def_echo; |
|
658 |
+ cmd_list[35] = def_module; |
|
659 |
+ cmd_list[36] = def_exit; |
|
660 |
+#endif |
|
661 |
+ 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
|
662 |
+ |
74 | 663 |
+ cmd_count = BUILTIN_COUNT; |
664 |
+} |
|
665 |
+ |
|
666 |
+// private |
|
667 |
+void cmd_uninit (void) |
|
668 |
+{ |
|
669 |
+ g_free (cmd_list); |
|
670 |
+ cmd_list = NULL; |
|
671 |
+ cmd_count = 0; |
|
672 |
+} |
|
673 |
+ |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
674 |
+// XXX: |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
675 |
+// * if command is found, maybe still put it at the start of queue? |
74 | 676 |
+void cmd_define (cmdopts_t *command) |
677 |
+{ |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
678 |
+ cmdopts_t **cmd; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
679 |
+ for (cmd = cmd_list; *cmd != NULL; cmd ++) |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
680 |
+ if (*cmd == command) |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
681 |
+ return; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
682 |
+ cmd_list = g_renew (cmdopts_t *, cmd_list, cmd_count+2); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
683 |
+ cmd_list[cmd_count] = command; |
74 | 684 |
+ cmd_count ++; |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
685 |
+ cmd_list[cmd_count] = NULL; |
74 | 686 |
+} |
687 |
+ |
|
688 |
+void cmd_undef (cmdopts_t *command) |
|
689 |
+{ |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
690 |
+ size_t num = 0; |
74 | 691 |
+ while (num < cmd_count) { |
692 |
+ if (cmd_list[num] == command) { |
|
693 |
+ 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
|
694 |
+ cmd_list = g_renew (cmdopts_t *, cmd_list, cmd_count); |
74 | 695 |
+ cmd_count --; |
696 |
+ return; |
|
697 |
} |
|
698 |
- return NULL; |
|
699 |
+ num ++; |
|
700 |
+ } |
|
701 |
} |
|
702 |
-#endif |
|
703 |
- |
|
704 |
-// cmd_add() |
|
705 |
-// Adds a command to the commands list and to the CMD completion list |
|
706 |
-gpointer cmd_add(const char *name, const char *help, guint flags_row1, |
|
707 |
- guint flags_row2, void (*f)(char*), gpointer userdata) |
|
708 |
+ |
|
709 |
+// error cmdopts_parse_argument ( startptr, endptr, flags ) |
|
710 |
+// Parses next argument according to flags and finishes it with zero. |
|
711 |
+// Updates current/end pointers. Parsed string MUST be writable. |
|
712 |
+// String may shrink in size (quotation/escapes), thus endpointer is also |
|
713 |
+// updated. |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
714 |
+const char *cmdopts_parse_argument(gchar **pr, gchar **er, cmdarg_flags_t flags) |
74 | 715 |
{ |
716 |
- cmd *n_cmd = g_slice_new0(cmd); |
|
717 |
- strncpy(n_cmd->name, name, 32-1); |
|
718 |
- n_cmd->help = help; |
|
719 |
- n_cmd->completion_flags[0] = flags_row1; |
|
720 |
- n_cmd->completion_flags[1] = flags_row2; |
|
721 |
- n_cmd->func = f; |
|
722 |
- n_cmd->userdata = userdata; |
|
723 |
- Commands = g_slist_prepend(Commands, n_cmd); |
|
724 |
- // Add to completion CMD category |
|
725 |
- compl_add_category_word(COMPL_CMD, name); |
|
726 |
- return n_cmd; |
|
727 |
+ gchar *p = *pr; |
|
728 |
+ gchar *e = *er; |
|
729 |
+ const char *error = NULL; |
|
730 |
+ gboolean quotes = FALSE; |
|
731 |
+ |
|
732 |
+ if ((flags & cmdarg_catchall) && (flags & cmdarg_plain)) { |
|
733 |
+ *pr = e; |
|
734 |
+ return NULL; |
|
735 |
+ } |
|
736 |
+ |
|
737 |
+ while (p <= e && error != NULL) { |
|
738 |
+ if (p == e && quotes) { // end of line in quotes |
|
739 |
+ error = "Unfinished quoted argument."; |
|
740 |
+ } else if ((*p == ' ' && (!quotes) && !(flags & cmdarg_catchall)) || p == e) { // argument ended |
|
741 |
+ if (*p != '\0') { |
|
742 |
+ *p = '\0'; |
|
743 |
+ p ++; |
|
744 |
+ } |
|
745 |
+ break; |
|
746 |
+ } else if (*p == '\\' && !(flags & cmdarg_plain)) { // next char escape |
|
747 |
+ g_memmove(p, p+1, e-(p+1)+1); |
|
748 |
+ e --; |
|
749 |
+ if (p == e) { |
|
750 |
+ error = "Escape at the end of line."; |
|
751 |
+ } else { |
|
752 |
+ p ++; |
|
753 |
+ } |
|
754 |
+ } else if (*p == '"' && !(flags & cmdarg_plain)) { // quotation start/end |
|
755 |
+ g_memmove(p, p+1, e-(p+1)+1); |
|
756 |
+ e --; |
|
757 |
+ quotes = !quotes; |
|
758 |
+ } else { // still argument |
|
759 |
+ p ++; |
|
760 |
+ } |
|
761 |
+ } |
|
762 |
+ |
|
763 |
+ *pr = p; |
|
764 |
+ *er = e; |
|
765 |
+ return error; |
|
766 |
} |
|
767 |
||
768 |
-// cmd_set_safe(name, safe) |
|
769 |
-// Sets if command can be used in startup configuration file. |
|
770 |
-gboolean cmd_set_safe(const gchar *name, gboolean safe) |
|
771 |
+// error cmdopts_parse_internal ( startptr, endptr, commanddef ) |
|
772 |
+// Parses command arguments according to command definition. |
|
773 |
+// Parsed string MUST be writable. Regardless of success or error, input |
|
774 |
+// string should be considered corrupted by parsing process. |
|
775 |
+// Even in case of error, commanddef should be passed to cmdopts_free(). |
|
776 |
+static gchar *cmdopts_parse_internal(gchar **pr, gchar **er, cmdopts_t *command) |
|
777 |
{ |
|
778 |
- GSList *sel; |
|
779 |
- if (!name) |
|
780 |
- return FALSE; |
|
781 |
- for (sel = safe_commands; sel; sel = sel->next) |
|
782 |
- if (!strcmp((const char *)sel->data, name)) { |
|
783 |
- if (safe) |
|
784 |
- return FALSE; |
|
785 |
- else { |
|
786 |
- g_free(sel->data); |
|
787 |
- safe_commands = g_slist_delete_link(safe_commands, sel); |
|
788 |
+ enum { // Parser state transitions: |
|
789 |
+ in_space, // -> in_space, in_optstart, in_argstart |
|
790 |
+ in_optstart, // -> in_shortoptend, in_longoptstart, in_argstart ("-") |
|
791 |
+ in_shortoptend, // -> in_space, in_argstart, error |
|
792 |
+ in_longoptstart, // -> in_longopt, in_space, in_argstart ("---") |
|
793 |
+ in_longopt, // -> in_longopt, in_space, error |
|
794 |
+ in_argstart, // -> in_space, error |
|
795 |
+ } state = in_argstart; // current parser state |
|
796 |
+ gchar *p = *pr; // current pointer |
|
797 |
+ gchar *e = *er; // end of line pointer |
|
798 |
+ gchar *s; // start of current object pointer |
|
799 |
+ gboolean opts_ended = FALSE; // don't allow options any more |
|
800 |
+ cmdopt_t *option = NULL; // option, for which argument is currently parsed |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
801 |
+ size_t argno = 0; // number of current positional argument |
74 | 802 |
+ gchar *error = NULL; // error message to return |
803 |
+ |
|
804 |
+ // general environment checking |
|
805 |
+ if (command -> check) { |
|
806 |
+ if ((error = command -> check (command))) { |
|
807 |
+ gchar *err = error; |
|
808 |
+ error = g_strdup_printf("%s: %s", command -> name, err); |
|
809 |
+ g_free (err); |
|
810 |
+ } |
|
811 |
+ } |
|
812 |
+ |
|
813 |
+ // prepare: set default values for arguments and unset some fields |
|
814 |
+ if (error == NULL) { |
|
815 |
+ gsize n; |
|
816 |
+ if (command -> opts) { |
|
817 |
+ for (n = 0; command -> opts[n] != NULL; n ++) { |
|
818 |
+ cmdopt_t *opt = command -> opts[n]; |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
819 |
+ if (opt -> flags & cmdopt_switch) { |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
820 |
+ opt -> arg.value.swc = 0; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
821 |
+ } else { |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
822 |
+ opt -> arg.value.roarg = opt -> arg.defval; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
823 |
+ } |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
824 |
+ opt -> arg.flags &= ~(cmdarg_ppclear); |
74 | 825 |
} |
826 |
} |
|
827 |
- if (safe) |
|
828 |
- safe_commands = g_slist_append(safe_commands, g_strdup(name)); |
|
829 |
- else |
|
830 |
- return FALSE; |
|
831 |
- return TRUE; |
|
832 |
+ if (command -> args) { |
|
833 |
+ for (n = 0; command -> args[n] != NULL; n ++) { |
|
834 |
+ cmdarg_t *arg = command -> args[n]; |
|
835 |
+ arg -> value.roarg = arg -> defval; |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
836 |
+ arg -> flags &= ~(cmdarg_ppclear); |
74 | 837 |
+ } |
838 |
+ } |
|
839 |
+ } |
|
840 |
+ |
|
841 |
+ // we allow parser to do one extra run on final '\0' |
|
842 |
+ while (p <= e && error == NULL) { |
|
843 |
+ if (state == in_space) { // space between args/options |
|
844 |
+ if (*p == ' ' || p == e) { // still space |
|
845 |
+ p ++; |
|
846 |
+ } else if (*p == '-' && !opts_ended) { // option |
|
847 |
+ state = in_optstart; |
|
848 |
+ p ++; |
|
849 |
+ } else { // argument |
|
850 |
+ if (!option) { |
|
851 |
+ opts_ended = TRUE; |
|
852 |
+ } |
|
853 |
+ s = p; |
|
854 |
+ state = in_argstart; |
|
855 |
+ } |
|
856 |
+ } else if (state == in_optstart) { // long/short option |
|
857 |
+ if (*p == ' ' || p == e) { // argument '-' |
|
858 |
+ opts_ended = TRUE; |
|
859 |
+ s = p = p - 1; |
|
860 |
+ state = in_argstart; |
|
861 |
+ } else if (*p == '-') { // long option |
|
862 |
+ state = in_longoptstart; |
|
863 |
+ p ++; |
|
864 |
+ } else { // short option |
|
865 |
+ s = p; |
|
866 |
+ state = in_shortoptend; |
|
867 |
+ p ++; |
|
868 |
+ } |
|
869 |
+ } else if (state == in_shortoptend) { // short option |
|
870 |
+ if (*p == ' ' || p == e) { // option really ended |
|
871 |
+ gsize n; |
|
872 |
+ for (n = 0; command -> opts[n] != NULL; n ++) { |
|
873 |
+ if (command -> opts[n] -> shortopt == *s) { |
|
874 |
+ option = command -> opts[n]; |
|
875 |
+ break; |
|
876 |
+ } |
|
877 |
+ } |
|
878 |
+ if (option != NULL) { // option is known |
|
879 |
+ if (option -> flags & cmdopt_switch) { // it is switch |
|
880 |
+ option -> arg.value.swc ++; |
|
881 |
+ option = NULL; |
|
882 |
+ } else if (p == e) { |
|
883 |
+ error = g_strdup_printf ("%s: Option -%c needs an argument.", command -> name, option -> shortopt); |
|
884 |
+ } |
|
885 |
+ state = in_space; |
|
886 |
+ p ++; |
|
887 |
+ } else { // option is unknown |
|
888 |
+ error = g_strdup_printf ("%s: Unknown option -%c.", command -> name, *s); |
|
889 |
+ } |
|
890 |
+ } else { // short option not ended |
|
891 |
+ // consider it argument (to allow -autojoin) |
|
892 |
+ opts_ended = TRUE; |
|
893 |
+ s = p = p - 2; |
|
894 |
+ state = in_argstart; |
|
895 |
+ } |
|
896 |
+ } else if (state == in_longoptstart) { // long option initialization |
|
897 |
+ if (*p == ' ' || p == e) { // end of options '--' |
|
898 |
+ opts_ended = TRUE; |
|
899 |
+ state = in_space; |
|
900 |
+ p ++; |
|
901 |
+ } else if (*p == '-') { // argument, starting with '---' |
|
902 |
+ opts_ended = TRUE; |
|
903 |
+ s = p = p - 2; |
|
904 |
+ state = in_argstart; |
|
905 |
+ } else { // it is long option |
|
906 |
+ s = p; |
|
907 |
+ state = in_longopt; |
|
908 |
+ p ++; |
|
909 |
+ } |
|
910 |
+ } else if (state == in_longopt) { // long option name |
|
911 |
+ if (*p == ' ' || p == e) { // long option ended |
|
912 |
+ gsize n; |
|
913 |
+ *p = '\0'; |
|
914 |
+ for (n = 0; command -> opts[n] != NULL; n ++) { |
|
915 |
+ if (!g_strcmp0(command -> opts[n] -> longopt, s)) { |
|
916 |
+ option = command -> opts[n]; |
|
917 |
+ break; |
|
918 |
+ } |
|
919 |
+ } |
|
920 |
+ if (option != NULL) { // option is known |
|
921 |
+ if (option -> flags & cmdopt_switch) { // it is switch |
|
922 |
+ option -> arg.value.swc ++; |
|
923 |
+ option = NULL; |
|
924 |
+ } else if (p == e) { |
|
925 |
+ error = g_strdup_printf ("%s: Option --%s needs an argument.", command -> name, option -> longopt); |
|
926 |
+ } |
|
927 |
+ state = in_space; |
|
928 |
+ p ++; |
|
929 |
+ } else { // option is unknown |
|
930 |
+ error = g_strdup_printf ("%s: Unknown option --%s.", command -> name, option -> longopt); |
|
931 |
+ } |
|
932 |
+ } else { // still long option |
|
933 |
+ p ++; |
|
934 |
+ } |
|
935 |
+ } else if (state == in_argstart) { // option/command argument initialization |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
936 |
+ const char *err; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
937 |
+ cmdarg_t *arg; |
74 | 938 |
+ |
939 |
+ if (option) { // option argument |
|
940 |
+ arg = &(option -> arg); |
|
941 |
+ } else if (!command -> args || !command -> args[argno]) { // no need to parse arguments any further |
|
942 |
+ break; |
|
943 |
+ } else { // normal aurgument |
|
944 |
+ arg = command -> args[argno]; |
|
945 |
+ } |
|
946 |
+ |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
947 |
+ if ((err = cmdopts_parse_argument(&p, &e, arg -> flags))) { // get argument value |
74 | 948 |
+ if (!option) { |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
949 |
+ error = g_strdup_printf ("%s: Can't parse argument %s (%lu): %s", command -> name, arg -> name, argno + 1, err); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
950 |
+ } else if (option -> shortopt) { |
74 | 951 |
+ error = g_strdup_printf ("%s: Can't parse argument for option -%c: %s", command -> name, option -> shortopt, err); |
952 |
+ } else { |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
953 |
+ error = g_strdup_printf ("%s: Can't parse argument for option --%s: %s", command -> name, option -> longopt, err); |
74 | 954 |
+ } |
955 |
+ } else { |
|
956 |
+ arg -> value.arg = s; |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
957 |
+ arg -> flags |= cmdarg_visited; |
74 | 958 |
+ if (option) { // option argument |
959 |
+ option = NULL; |
|
960 |
+ } else { // normal argument |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
961 |
+ if (arg -> flags & cmdarg_subcmd) { // subcommand |
74 | 962 |
+ cmdopts_t *subcmd; |
963 |
+ gsize n; // XXX put command list into chkdata |
|
964 |
+ for (n = 0; command -> cmds[n]; n ++) { |
|
965 |
+ if (!strcmp (s, command -> cmds[n] -> name)) { |
|
966 |
+ subcmd = command -> cmds[n]; |
|
967 |
+ break; |
|
968 |
+ } |
|
969 |
+ } |
|
970 |
+ if (subcmd != NULL) { // found subcommand |
|
971 |
+ arg -> value.cmd = subcmd; |
|
972 |
+ if ((error = cmdopts_parse_internal (&p, &e, subcmd))) { |
|
973 |
+ gchar *err = error; |
|
974 |
+ error = g_strdup_printf("%s %s", command -> name, err); |
|
975 |
+ g_free (err); |
|
976 |
+ } |
|
977 |
+ } else { // wrong subcommand |
|
978 |
+ error = g_strdup_printf("%s: Unable to find subcommand \"%s\".", command -> name, s); |
|
979 |
+ } |
|
980 |
+ } |
|
981 |
+ argno ++; |
|
982 |
+ } |
|
983 |
+ } |
|
984 |
+ state = in_space; |
|
985 |
+ } |
|
986 |
+ } |
|
987 |
+ |
|
988 |
+ *pr = p; |
|
989 |
+ *er = e; |
|
990 |
+ |
|
991 |
+ // perform option argument checking |
|
992 |
+ if (error == NULL && command -> opts) { |
|
993 |
+ gsize n; |
|
994 |
+ for (n = 0; command -> opts[n]; n ++) { |
|
995 |
+ cmdopt_t *opt = command -> opts[n]; |
|
996 |
+ if (!(opt -> flags & cmdopt_switch)) { // not a switch |
|
997 |
+ // needs checking and not checked already |
|
998 |
+ if ((opt -> arg.flags & (cmdarg_check | cmdarg_visited)) && !(opt -> arg.flags & cmdarg_checked)) { |
|
999 |
+ if (opt -> arg.type && opt -> arg.type -> check) { // checker is present |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1000 |
+ gchar *err; |
74 | 1001 |
+ opt -> arg.flags |= cmdarg_checked; |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1002 |
+ if ((err = opt -> arg.type -> check (&(opt -> arg)))) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1003 |
+ if (opt -> arg.flags & cmdarg_required) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1004 |
+ if (opt -> shortopt) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1005 |
+ error = g_strdup_printf ("%s: Error in argument for option -%c: %s", command -> name, opt -> shortopt, err); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1006 |
+ } else { |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1007 |
+ error = g_strdup_printf ("%s: Error in argument for option --%s: %s", command -> name, opt -> longopt, err); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1008 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1009 |
+ g_free (err); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1010 |
+ break; |
74 | 1011 |
+ } else { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1012 |
+ if (opt -> shortopt) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1013 |
+ scr_log_print (LPRINT_NORMAL, "Warning: %s: Error in argument for option -%c: %s", command -> name, opt -> shortopt, err); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1014 |
+ } else { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1015 |
+ scr_log_print (LPRINT_NORMAL, "Warning: %s: Error in argument for option --%s: %s", command -> name, opt -> longopt, err); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1016 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1017 |
+ g_free (err); |
74 | 1018 |
+ } |
1019 |
+ } |
|
1020 |
+ } |
|
1021 |
+ } |
|
1022 |
+ } |
|
1023 |
+ } |
|
1024 |
+ } |
|
1025 |
+ |
|
1026 |
+ // perform positional argument checking |
|
1027 |
+ if (error == NULL && command -> args) { |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1028 |
+ size_t n; |
74 | 1029 |
+ for (n = 0; command -> args[n]; n ++) { |
1030 |
+ cmdarg_t *arg = command -> args[n]; |
|
1031 |
+ // needs checking and not checked already |
|
1032 |
+ if ((arg -> flags & (cmdarg_check | cmdarg_visited)) && !(arg -> flags & cmdarg_checked)) { |
|
1033 |
+ if (arg -> flags & cmdarg_subcmd) { // subcommand |
|
1034 |
+ if (!arg -> value.cmd) { |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1035 |
+ if (arg -> flags & cmdarg_required) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1036 |
+ error = g_strdup_printf ("%s: No %s specified.", command -> name, arg -> name); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1037 |
+ break; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1038 |
+ } else { // XXX more prefixes |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1039 |
+ scr_log_print (LPRINT_NORMAL, "Warning: %s: No %s specified.", command -> name, arg -> name); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1040 |
+ } |
74 | 1041 |
+ } |
1042 |
+ } else { // normal argument |
|
1043 |
+ if (arg -> type && arg -> type -> check) { |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1044 |
+ gchar *err; |
74 | 1045 |
+ arg -> flags |= cmdarg_checked; |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1046 |
+ if ((err = arg -> type -> check (arg))) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1047 |
+ if (arg -> flags & cmdarg_required) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1048 |
+ error = g_strdup_printf ("%s: Error in argument %s (%u): %s", command -> name, arg -> name, n, err); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1049 |
+ g_free (err); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1050 |
+ break; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1051 |
+ } else { // XXX more prefixes |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1052 |
+ scr_log_print (LPRINT_NORMAL, "Warning: %s: Error in argument %s (%u): %s", command -> name, arg -> name, n, err); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1053 |
+ g_free (err); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1054 |
+ } |
74 | 1055 |
+ } |
1056 |
+ } |
|
1057 |
+ } |
|
1058 |
+ } |
|
1059 |
+ } |
|
1060 |
+ } |
|
1061 |
+ |
|
1062 |
+ return error; |
|
1063 |
} |
|
1064 |
||
1065 |
-// cmd_is_safe(name) |
|
1066 |
-// Returns if command is safe or not |
|
1067 |
-gboolean cmd_is_safe(const gchar *name) |
|
1068 |
+// cmdopts_free ( commanddef ) |
|
1069 |
+// Free various parser data, used in parsing process |
|
1070 |
+static void cmdopts_free(cmdopts_t *command) |
|
1071 |
{ |
|
1072 |
- GSList *sel; |
|
1073 |
- if (!name) |
|
1074 |
- return FALSE; |
|
1075 |
- for (sel = safe_commands; sel; sel = sel->next) |
|
1076 |
- if (!strcmp((const char *)sel->data, name)) |
|
1077 |
- return TRUE; |
|
1078 |
- return FALSE; |
|
1079 |
+ gsize n; |
|
1080 |
+ if (command -> opts) { |
|
1081 |
+ for (n = 0; command -> opts[n]; n ++) { |
|
1082 |
+ cmdopt_t *opt = command -> opts[n]; |
|
1083 |
+ if (!(opt -> flags & cmdopt_switch)) { // not switch |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1084 |
+ if (opt -> arg.flags & cmdarg_freeme) { // can free something |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1085 |
+ opt -> arg.flags &= ~cmdarg_freeme; |
74 | 1086 |
+ if (opt -> arg.type && opt -> arg.type -> free) { // need to free something |
1087 |
+ opt -> arg.type -> free (&(opt -> arg)); |
|
1088 |
+ } |
|
1089 |
+ } |
|
1090 |
+ } |
|
1091 |
+ } |
|
1092 |
+ } |
|
1093 |
+ if (command -> args) { |
|
1094 |
+ for (n = 0; command -> args[n]; n ++) { |
|
1095 |
+ cmdarg_t *arg = command -> args[n]; |
|
1096 |
+ if (arg -> flags & cmdarg_subcmd) { // subcommand |
|
1097 |
+ if (arg -> value.cmd) { |
|
1098 |
+ cmdopts_free (arg -> value.cmd); |
|
1099 |
+ arg -> value.cmd = NULL; |
|
1100 |
+ } |
|
1101 |
+ } else { // normal argument |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1102 |
+ if (arg -> flags & cmdarg_freeme) { // can free something |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1103 |
+ arg -> flags &= ~cmdarg_freeme; |
74 | 1104 |
+ if (arg -> type && arg -> type -> free) { // need to free something |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1105 |
+ arg -> type -> free (arg); |
74 | 1106 |
+ } |
1107 |
+ } |
|
1108 |
+ } |
|
1109 |
+ } |
|
1110 |
+ } |
|
1111 |
} |
|
1112 |
||
1113 |
-// cmd_init() |
|
1114 |
-// Commands table initialization |
|
1115 |
-// !!! |
|
1116 |
-// After changing commands names and it arguments names here, you must change |
|
1117 |
-// ones in init_bindings()! |
|
1118 |
-// |
|
1119 |
-void cmd_init(void) |
|
1120 |
+cmd_result_t cmd_execute_internal (gchar *commandline, cmdexe_flags_t flags) |
|
1121 |
{ |
|
1122 |
- cmd_add("add", "Add a jabber user", COMPL_JID, 0, &do_add, NULL); |
|
1123 |
- cmd_add("alias", "Add an alias", 0, 0, &do_alias, NULL); |
|
1124 |
- cmd_add("authorization", "Manage subscription authorizations", |
|
1125 |
- COMPL_AUTH, COMPL_JID, &do_authorization, NULL); |
|
1126 |
- cmd_add("bind", "Add an key binding", 0, 0, &do_bind, NULL); |
|
1127 |
- cmd_add("buffer", "Manipulate current buddy's buffer (chat window)", |
|
1128 |
- COMPL_BUFFER, 0, &do_buffer, NULL); |
|
1129 |
- cmd_add("chat_disable", "Disable chat mode", 0, 0, &do_chat_disable, NULL); |
|
1130 |
- cmd_add("clear", "Clear the dialog window", 0, 0, &do_clear, NULL); |
|
1131 |
- cmd_add("color", "Set coloring options", COMPL_COLOR, 0, &do_color, NULL); |
|
1132 |
- cmd_add("connect", "Connect to the server", 0, 0, &do_connect, NULL); |
|
1133 |
- cmd_add("del", "Delete the current buddy", 0, 0, &do_del, NULL); |
|
1134 |
- cmd_add("disconnect", "Disconnect from server", 0, 0, &do_disconnect, NULL); |
|
1135 |
- cmd_add("echo", "Display a string in the log window", 0, 0, &do_echo, NULL); |
|
1136 |
- cmd_add("event", "Process an event", COMPL_EVENTSID, COMPL_EVENTS, &do_event, |
|
1137 |
- NULL); |
|
1138 |
- cmd_add("exit", "Exit mcabber", 0, 0, &do_exit, NULL); |
|
1139 |
- cmd_add("group", "Change group display settings", |
|
1140 |
- COMPL_GROUP, COMPL_GROUPNAME, &do_group, NULL); |
|
1141 |
- cmd_add("help", "Display some help", COMPL_CMD, 0, &do_help, NULL); |
|
1142 |
- cmd_add("iline", "Manipulate input buffer", 0, 0, &do_iline, NULL); |
|
1143 |
- cmd_add("info", "Show basic info on current buddy", 0, 0, &do_info, NULL); |
|
1144 |
- cmd_add("module", "Manipulations with modules", COMPL_MODULE, 0, &do_module, |
|
1145 |
- NULL); |
|
1146 |
- cmd_add("move", "Move the current buddy to another group", COMPL_GROUPNAME, |
|
1147 |
- 0, &do_move, NULL); |
|
1148 |
- cmd_add("msay", "Send a multi-lines message to the selected buddy", |
|
1149 |
- COMPL_MULTILINE, 0, &do_msay, NULL); |
|
1150 |
- cmd_add("otr", "Manage OTR settings", COMPL_OTR, COMPL_JID, &do_otr, NULL); |
|
1151 |
- cmd_add("otrpolicy", "Manage OTR policies", COMPL_JID, COMPL_OTRPOLICY, |
|
1152 |
- &do_otrpolicy, NULL); |
|
1153 |
- cmd_add("pgp", "Manage PGP settings", COMPL_PGP, COMPL_JID, &do_pgp, NULL); |
|
1154 |
- cmd_add("quit", "Exit the software", 0, 0, NULL, NULL); |
|
1155 |
- cmd_add("rawxml", "Send a raw XML string", 0, 0, &do_rawxml, NULL); |
|
1156 |
- cmd_add("rename", "Rename the current buddy", 0, 0, &do_rename, NULL); |
|
1157 |
- cmd_add("request", "Send a Jabber IQ request", COMPL_REQUEST, COMPL_JID, |
|
1158 |
- &do_request, NULL); |
|
1159 |
- cmd_add("room", "MUC actions command", COMPL_ROOM, 0, &do_room, NULL); |
|
1160 |
- cmd_add("roster", "Manipulate the roster/buddylist", COMPL_ROSTER, 0, |
|
1161 |
- &do_roster, NULL); |
|
1162 |
- cmd_add("say", "Say something to the selected buddy", 0, 0, &do_say, NULL); |
|
1163 |
- cmd_add("say_to", "Say something to a specific buddy", COMPL_JID, 0, |
|
1164 |
- &do_say_to, NULL); |
|
1165 |
- cmd_add("screen_refresh", "Redraw mcabber screen", 0, 0, &do_screen_refresh, |
|
1166 |
- NULL); |
|
1167 |
- cmd_add("set", "Set/query an option value", 0, 0, &do_set, NULL); |
|
1168 |
- cmd_add("source", "Read a configuration file", 0, 0, &do_source, NULL); |
|
1169 |
- cmd_add("status", "Show or set your status", COMPL_STATUS, 0, &do_status, |
|
1170 |
- NULL); |
|
1171 |
- cmd_add("status_to", "Show or set your status for one recipient", |
|
1172 |
- COMPL_JID, COMPL_STATUS, &do_status_to, NULL); |
|
1173 |
- cmd_add("version", "Show mcabber version", 0, 0, &do_version, NULL); |
|
1174 |
- |
|
1175 |
- cmd_set_safe("set", TRUE); |
|
1176 |
- cmd_set_safe("bind", TRUE); |
|
1177 |
- cmd_set_safe("alias", TRUE); |
|
1178 |
- cmd_set_safe("pgp", TRUE); |
|
1179 |
- cmd_set_safe("source", TRUE); |
|
1180 |
- cmd_set_safe("status", TRUE); |
|
1181 |
- cmd_set_safe("color", TRUE); |
|
1182 |
- cmd_set_safe("otrpolicy", TRUE); |
|
1183 |
- cmd_set_safe("module", TRUE); |
|
1184 |
- |
|
1185 |
- // Status category |
|
1186 |
- compl_add_category_word(COMPL_STATUS, "online"); |
|
1187 |
- compl_add_category_word(COMPL_STATUS, "avail"); |
|
1188 |
-#ifdef WITH_DEPRECATED_STATUS_INVISIBLE |
|
1189 |
- compl_add_category_word(COMPL_STATUS, "invisible"); |
|
1190 |
-#endif |
|
1191 |
- compl_add_category_word(COMPL_STATUS, "free"); |
|
1192 |
- compl_add_category_word(COMPL_STATUS, "dnd"); |
|
1193 |
- compl_add_category_word(COMPL_STATUS, "notavail"); |
|
1194 |
- compl_add_category_word(COMPL_STATUS, "away"); |
|
1195 |
- compl_add_category_word(COMPL_STATUS, "offline"); |
|
1196 |
- compl_add_category_word(COMPL_STATUS, "message"); |
|
1197 |
- |
|
1198 |
- // Roster category |
|
1199 |
- compl_add_category_word(COMPL_ROSTER, "bottom"); |
|
1200 |
- compl_add_category_word(COMPL_ROSTER, "top"); |
|
1201 |
- compl_add_category_word(COMPL_ROSTER, "up"); |
|
1202 |
- compl_add_category_word(COMPL_ROSTER, "down"); |
|
1203 |
- compl_add_category_word(COMPL_ROSTER, "group_prev"); |
|
1204 |
- compl_add_category_word(COMPL_ROSTER, "group_next"); |
|
1205 |
- compl_add_category_word(COMPL_ROSTER, "hide"); |
|
1206 |
- compl_add_category_word(COMPL_ROSTER, "show"); |
|
1207 |
- compl_add_category_word(COMPL_ROSTER, "toggle"); |
|
1208 |
- compl_add_category_word(COMPL_ROSTER, "display"); |
|
1209 |
- compl_add_category_word(COMPL_ROSTER, "hide_offline"); |
|
1210 |
- compl_add_category_word(COMPL_ROSTER, "show_offline"); |
|
1211 |
- compl_add_category_word(COMPL_ROSTER, "toggle_offline"); |
|
1212 |
- compl_add_category_word(COMPL_ROSTER, "item_lock"); |
|
1213 |
- compl_add_category_word(COMPL_ROSTER, "item_unlock"); |
|
1214 |
- compl_add_category_word(COMPL_ROSTER, "item_toggle_lock"); |
|
1215 |
- compl_add_category_word(COMPL_ROSTER, "alternate"); |
|
1216 |
- compl_add_category_word(COMPL_ROSTER, "search"); |
|
1217 |
- compl_add_category_word(COMPL_ROSTER, "unread_first"); |
|
1218 |
- compl_add_category_word(COMPL_ROSTER, "unread_next"); |
|
1219 |
- compl_add_category_word(COMPL_ROSTER, "note"); |
|
1220 |
- compl_add_category_word(COMPL_ROSTER, "resource_lock"); |
|
1221 |
- compl_add_category_word(COMPL_ROSTER, "resource_unlock"); |
|
1222 |
- |
|
1223 |
- // Buffer category |
|
1224 |
- compl_add_category_word(COMPL_BUFFER, "clear"); |
|
1225 |
- compl_add_category_word(COMPL_BUFFER, "bottom"); |
|
1226 |
- compl_add_category_word(COMPL_BUFFER, "top"); |
|
1227 |
- compl_add_category_word(COMPL_BUFFER, "up"); |
|
1228 |
- compl_add_category_word(COMPL_BUFFER, "down"); |
|
1229 |
- compl_add_category_word(COMPL_BUFFER, "search_backward"); |
|
1230 |
- compl_add_category_word(COMPL_BUFFER, "search_forward"); |
|
1231 |
- compl_add_category_word(COMPL_BUFFER, "readmark"); |
|
1232 |
- compl_add_category_word(COMPL_BUFFER, "date"); |
|
1233 |
- compl_add_category_word(COMPL_BUFFER, "%"); |
|
1234 |
- compl_add_category_word(COMPL_BUFFER, "purge"); |
|
1235 |
- compl_add_category_word(COMPL_BUFFER, "close"); |
|
1236 |
- compl_add_category_word(COMPL_BUFFER, "close_all"); |
|
1237 |
- compl_add_category_word(COMPL_BUFFER, "scroll_lock"); |
|
1238 |
- compl_add_category_word(COMPL_BUFFER, "scroll_unlock"); |
|
1239 |
- compl_add_category_word(COMPL_BUFFER, "scroll_toggle"); |
|
1240 |
- compl_add_category_word(COMPL_BUFFER, "list"); |
|
1241 |
- compl_add_category_word(COMPL_BUFFER, "save"); |
|
1242 |
- |
|
1243 |
- // Group category |
|
1244 |
- compl_add_category_word(COMPL_GROUP, "fold"); |
|
1245 |
- compl_add_category_word(COMPL_GROUP, "unfold"); |
|
1246 |
- compl_add_category_word(COMPL_GROUP, "toggle"); |
|
1247 |
- |
|
1248 |
- // Multi-line (msay) category |
|
1249 |
- compl_add_category_word(COMPL_MULTILINE, "abort"); |
|
1250 |
- compl_add_category_word(COMPL_MULTILINE, "begin"); |
|
1251 |
- compl_add_category_word(COMPL_MULTILINE, "send"); |
|
1252 |
- compl_add_category_word(COMPL_MULTILINE, "send_to"); |
|
1253 |
- compl_add_category_word(COMPL_MULTILINE, "toggle"); |
|
1254 |
- compl_add_category_word(COMPL_MULTILINE, "toggle_verbatim"); |
|
1255 |
- compl_add_category_word(COMPL_MULTILINE, "verbatim"); |
|
1256 |
- |
|
1257 |
- // Room category |
|
1258 |
- compl_add_category_word(COMPL_ROOM, "affil"); |
|
1259 |
- compl_add_category_word(COMPL_ROOM, "ban"); |
|
1260 |
- compl_add_category_word(COMPL_ROOM, "bookmark"); |
|
1261 |
- compl_add_category_word(COMPL_ROOM, "destroy"); |
|
1262 |
- compl_add_category_word(COMPL_ROOM, "invite"); |
|
1263 |
- compl_add_category_word(COMPL_ROOM, "join"); |
|
1264 |
- compl_add_category_word(COMPL_ROOM, "kick"); |
|
1265 |
- compl_add_category_word(COMPL_ROOM, "leave"); |
|
1266 |
- compl_add_category_word(COMPL_ROOM, "names"); |
|
1267 |
- compl_add_category_word(COMPL_ROOM, "nick"); |
|
1268 |
- compl_add_category_word(COMPL_ROOM, "privmsg"); |
|
1269 |
- compl_add_category_word(COMPL_ROOM, "remove"); |
|
1270 |
- compl_add_category_word(COMPL_ROOM, "role"); |
|
1271 |
- compl_add_category_word(COMPL_ROOM, "setopt"); |
|
1272 |
- compl_add_category_word(COMPL_ROOM, "topic"); |
|
1273 |
- compl_add_category_word(COMPL_ROOM, "unban"); |
|
1274 |
- compl_add_category_word(COMPL_ROOM, "unlock"); |
|
1275 |
- compl_add_category_word(COMPL_ROOM, "whois"); |
|
1276 |
- |
|
1277 |
- // Authorization category |
|
1278 |
- compl_add_category_word(COMPL_AUTH, "allow"); |
|
1279 |
- compl_add_category_word(COMPL_AUTH, "cancel"); |
|
1280 |
- compl_add_category_word(COMPL_AUTH, "request"); |
|
1281 |
- compl_add_category_word(COMPL_AUTH, "request_unsubscribe"); |
|
1282 |
- |
|
1283 |
- // Request (query) category |
|
1284 |
- compl_add_category_word(COMPL_REQUEST, "last"); |
|
1285 |
- compl_add_category_word(COMPL_REQUEST, "ping"); |
|
1286 |
- compl_add_category_word(COMPL_REQUEST, "time"); |
|
1287 |
- compl_add_category_word(COMPL_REQUEST, "vcard"); |
|
1288 |
- compl_add_category_word(COMPL_REQUEST, "version"); |
|
1289 |
- |
|
1290 |
- // Events category |
|
1291 |
- compl_add_category_word(COMPL_EVENTS, "accept"); |
|
1292 |
- compl_add_category_word(COMPL_EVENTS, "ignore"); |
|
1293 |
- compl_add_category_word(COMPL_EVENTS, "reject"); |
|
1294 |
- |
|
1295 |
- // PGP category |
|
1296 |
- compl_add_category_word(COMPL_PGP, "disable"); |
|
1297 |
- compl_add_category_word(COMPL_PGP, "enable"); |
|
1298 |
- compl_add_category_word(COMPL_PGP, "force"); |
|
1299 |
- compl_add_category_word(COMPL_PGP, "info"); |
|
1300 |
- compl_add_category_word(COMPL_PGP, "setkey"); |
|
1301 |
- |
|
1302 |
- // OTR category |
|
1303 |
- compl_add_category_word(COMPL_OTR, "start"); |
|
1304 |
- compl_add_category_word(COMPL_OTR, "stop"); |
|
1305 |
- compl_add_category_word(COMPL_OTR, "fingerprint"); |
|
1306 |
- compl_add_category_word(COMPL_OTR, "smpq"); |
|
1307 |
- compl_add_category_word(COMPL_OTR, "smpr"); |
|
1308 |
- compl_add_category_word(COMPL_OTR, "smpa"); |
|
1309 |
- compl_add_category_word(COMPL_OTR, "info"); |
|
1310 |
- compl_add_category_word(COMPL_OTR, "key"); |
|
1311 |
- |
|
1312 |
- // OTR Policy category |
|
1313 |
- compl_add_category_word(COMPL_OTRPOLICY, "plain"); |
|
1314 |
- compl_add_category_word(COMPL_OTRPOLICY, "manual"); |
|
1315 |
- compl_add_category_word(COMPL_OTRPOLICY, "opportunistic"); |
|
1316 |
- compl_add_category_word(COMPL_OTRPOLICY, "always"); |
|
1317 |
- |
|
1318 |
- // Color category |
|
1319 |
- compl_add_category_word(COMPL_COLOR, "roster"); |
|
1320 |
- compl_add_category_word(COMPL_COLOR, "muc"); |
|
1321 |
- compl_add_category_word(COMPL_COLOR, "mucnick"); |
|
1322 |
- |
|
1323 |
-#ifdef MODULES_ENABLE |
|
1324 |
- // Module category |
|
1325 |
- compl_add_category_word(COMPL_MODULE, "info"); |
|
1326 |
- compl_add_category_word(COMPL_MODULE, "list"); |
|
1327 |
- compl_add_category_word(COMPL_MODULE, "load"); |
|
1328 |
- compl_add_category_word(COMPL_MODULE, "unload"); |
|
1329 |
-#endif |
|
1330 |
+ gchar *s = commandline; |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1331 |
+ gchar *p, *e; |
74 | 1332 |
+ gchar *freeme = NULL; |
1333 |
+ const char *err; |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1334 |
+ gchar *error; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1335 |
+ cmdopts_t *command = NULL; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1336 |
+ const char *alias = NULL; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1337 |
+ size_t n; |
74 | 1338 |
+ |
1339 |
+ // skip command indicator and spaces at the beginning |
|
1340 |
+ while (*s == COMMAND_CHAR || *s == ' ') |
|
1341 |
+ s ++; |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1342 |
+ p = s; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1343 |
+ e = s + strlen (s); |
74 | 1344 |
+ |
1345 |
+ // separate first word - command name |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1346 |
+ if ((err = cmdopts_parse_argument (&p, &e, cmdarg_default))) { |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1347 |
+ scr_log_print (LPRINT_NORMAL, "error: Can't comprehend command name: %s.", err); |
74 | 1348 |
+ return cmd_result_syntax_error; |
1349 |
+ } |
|
1350 |
+ |
|
1351 |
+ // check for quit command |
|
1352 |
+ if (!strcmp (s, "quit")) { |
|
1353 |
+ return cmd_result_quit; |
|
1354 |
+ } |
|
1355 |
+ |
|
1356 |
+ // check if we're in verbatim mode |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1357 |
+ if ((flags & cmdexe_check_verbatim) && scr_get_multimode () == 2) { |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1358 |
+ if (strcmp (s, "msay")) { // it is not msay |
74 | 1359 |
+ return cmd_result_verbatim; |
1360 |
+ } |
|
1361 |
+ } |
|
1362 |
+ |
|
1363 |
+ // check and expand alias |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1364 |
+ if ((alias = settings_get (SETTINGS_TYPE_ALIAS, s))) { |
74 | 1365 |
+ freeme = s = g_strdup_printf ("%s %s", alias, p); |
1366 |
+ p = s; |
|
1367 |
+ e = s + strlen (s); |
|
1368 |
+ |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1369 |
+ if ((err = cmdopts_parse_argument (&p, &e, cmdarg_default))) { |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1370 |
+ scr_log_print (LPRINT_NORMAL, "error: Can't comprehend command name: %s.", err); |
74 | 1371 |
+ g_free (freeme); |
1372 |
+ return cmd_result_syntax_error; |
|
1373 |
+ } |
|
1374 |
+ |
|
1375 |
+ // check for quit command again |
|
1376 |
+ if (!strcmp (s, "quit")) { |
|
1377 |
+ g_free (freeme); |
|
1378 |
+ return cmd_result_quit; |
|
1379 |
+ } |
|
1380 |
+ } |
|
1381 |
+ |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1382 |
+ // find command with this name (reverse - see cmd_define()) |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1383 |
+ for (n = cmd_count - 1; n >= 0; n --) { |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1384 |
+ if (!strcmp (s, cmd_list[n] -> name)) { |
74 | 1385 |
+ command = cmd_list[n]; |
1386 |
+ break; |
|
1387 |
+ } |
|
1388 |
+ } |
|
1389 |
+ if (command == NULL) { |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1390 |
+ scr_log_print (LPRINT_NORMAL, "error: Unable to find command \"%s\".", s); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1391 |
+ g_free (freeme); |
74 | 1392 |
+ return cmd_result_not_found; |
1393 |
+ } |
|
1394 |
+ |
|
1395 |
+ // check safety |
|
1396 |
+ if ((flags & cmdexe_check_safe) && !(command -> flags & cmd_safe)) { |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1397 |
+ scr_log_print (LPRINT_NORMAL, "error: Command \"%s\" is not safe to execute here.", command -> name); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1398 |
+ g_free (freeme); |
74 | 1399 |
+ return cmd_result_not_found; |
1400 |
+ } |
|
1401 |
+ |
|
1402 |
+ // parse command line |
|
1403 |
+ if ((error = cmdopts_parse_internal (&p, &e, command))) { |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1404 |
+ scr_log_print (LPRINT_NORMAL, "%s", error); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1405 |
+ g_free (error); |
74 | 1406 |
+ cmdopts_free (command); |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1407 |
+ g_free (freeme); |
74 | 1408 |
+ return cmd_result_syntax_error; |
1409 |
+ } |
|
1410 |
+ |
|
1411 |
+ // execute command handler |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1412 |
+ if (command -> handle) { |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1413 |
+ if ((error = command -> handle (command))) { |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1414 |
+ scr_log_print (LPRINT_NORMAL, "%s: %s", command -> name, error); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1415 |
+ g_free (error); |
74 | 1416 |
+ cmdopts_free (command); |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1417 |
+ g_free (freeme); |
74 | 1418 |
+ return cmd_result_runtime_error; |
1419 |
+ } |
|
1420 |
+ } |
|
1421 |
+ |
|
1422 |
+ // free resources |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1423 |
+ cmdopts_free (command); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1424 |
+ g_free (freeme); |
74 | 1425 |
+ return cmd_result_ok; |
1426 |
} |
|
1427 |
||
1428 |
-// expandalias(line) |
|
1429 |
-// If there is one, expand the alias in line and returns a new allocated line |
|
1430 |
-// If no alias is found, returns line |
|
1431 |
-// Note: if the returned pointer is different from line, the caller should |
|
1432 |
-// g_free() the pointer after use |
|
1433 |
-char *expandalias(const char *line) |
|
1434 |
+// process_line(line) |
|
1435 |
+// Process a command/message line. If this isn't a command, this is a message |
|
1436 |
+// and it is sent to the currently selected buddy. |
|
1437 |
+// Returns 255 if the line is the /quit command, 0 on success and some other |
|
1438 |
+// error codes. |
|
1439 |
+cmd_result_t process_line(const char *line) |
|
1440 |
{ |
|
1441 |
- const char *p1, *p2; |
|
1442 |
- char *word; |
|
1443 |
- const gchar *value; |
|
1444 |
- char *newline = (char*)line; |
|
1445 |
- |
|
1446 |
- // Ignore leading COMMAND_CHAR |
|
1447 |
- for (p1 = line ; *p1 == COMMAND_CHAR ; p1++) |
|
1448 |
- ; |
|
1449 |
- // Locate the end of the word |
|
1450 |
- for (p2 = p1 ; *p2 && (*p2 != ' ') ; p2++) |
|
1451 |
- ; |
|
1452 |
- // Extract the word and look for an alias in the list |
|
1453 |
- word = g_strndup(p1, p2-p1); |
|
1454 |
- value = settings_get(SETTINGS_TYPE_ALIAS, (const char*)word); |
|
1455 |
- g_free(word); |
|
1456 |
- |
|
1457 |
- if (value) |
|
1458 |
- newline = g_strdup_printf("%c%s%s", COMMAND_CHAR, value, p2); |
|
1459 |
- |
|
1460 |
- return newline; |
|
1461 |
-} |
|
1462 |
- |
|
1463 |
-// cmd_get |
|
1464 |
-// Finds command in the command list structure. |
|
1465 |
-// Returns a pointer to the cmd entry, or NULL if command not found. |
|
1466 |
-cmd *cmd_get(const char *command) |
|
1467 |
-{ |
|
1468 |
- const char *p1, *p2; |
|
1469 |
- char *com; |
|
1470 |
- GSList *sl_com; |
|
1471 |
- |
|
1472 |
- // Ignore leading COMMAND_CHAR |
|
1473 |
- for (p1 = command ; *p1 == COMMAND_CHAR ; p1++) |
|
1474 |
- ; |
|
1475 |
- // Locate the end of the command |
|
1476 |
- for (p2 = p1 ; *p2 && (*p2 != ' ') ; p2++) |
|
1477 |
- ; |
|
1478 |
- // Copy the clean command |
|
1479 |
- com = g_strndup(p1, p2-p1); |
|
1480 |
- |
|
1481 |
- // Look for command in the list |
|
1482 |
- for (sl_com=Commands; sl_com; sl_com = g_slist_next(sl_com)) { |
|
1483 |
- if (!strcasecmp(com, ((cmd*)sl_com->data)->name)) |
|
1484 |
- break; |
|
1485 |
- } |
|
1486 |
- g_free(com); |
|
1487 |
- |
|
1488 |
- if (sl_com) // Command has been found. |
|
1489 |
- return (cmd*)sl_com->data; |
|
1490 |
- return NULL; |
|
1491 |
-} |
|
1492 |
- |
|
1493 |
-// process_command(line, iscmd) |
|
1494 |
-// Process a command line. |
|
1495 |
-// If iscmd is TRUE, process the command even if verbatim mmode is set; |
|
1496 |
-// it is intended to be used for key bindings. |
|
1497 |
-// Return 255 if this is the /quit command, and 0 for the other commands. |
|
1498 |
-int process_command(const char *line, guint iscmd) |
|
1499 |
-{ |
|
1500 |
- char *p; |
|
1501 |
- char *xpline; |
|
1502 |
- cmd *curcmd; |
|
1503 |
- |
|
1504 |
- if (!line) |
|
1505 |
- return 0; |
|
1506 |
- |
|
1507 |
- // We do alias expansion here |
|
1508 |
- if (iscmd || scr_get_multimode() != 2) |
|
1509 |
- xpline = expandalias(line); |
|
1510 |
- else |
|
1511 |
- xpline = (char*)line; // No expansion in verbatim multi-line mode |
|
1512 |
- |
|
1513 |
- // We want to use a copy |
|
1514 |
- if (xpline == line) |
|
1515 |
- xpline = g_strdup(line); |
|
1516 |
- |
|
1517 |
- // Remove trailing spaces: |
|
1518 |
- for (p=xpline ; *p ; p++) |
|
1519 |
- ; |
|
1520 |
- for (p-- ; p>xpline && (*p == ' ') ; p--) |
|
1521 |
- *p = 0; |
|
1522 |
- |
|
1523 |
- // Command "quit"? |
|
1524 |
- if ((iscmd || scr_get_multimode() != 2) |
|
1525 |
- && (!strncasecmp(xpline, mkcmdstr("quit"), strlen(mkcmdstr("quit"))))) { |
|
1526 |
- if (!xpline[5] || xpline[5] == ' ') { |
|
1527 |
- g_free(xpline); |
|
1528 |
- return 255; |
|
1529 |
- } |
|
1530 |
- } else if (iscmd && !strncasecmp(xpline, "quit", 4) && |
|
1531 |
- (!xpline[4] || xpline[4] == ' ')) { |
|
1532 |
- // If iscmd is true we can have the command without the command prefix |
|
1533 |
- // character (usually '/'). |
|
1534 |
- g_free(xpline); |
|
1535 |
- return 255; |
|
1536 |
- } |
|
1537 |
- |
|
1538 |
- // If verbatim multi-line mode, we check if another /msay command is typed |
|
1539 |
- if (!iscmd && scr_get_multimode() == 2 |
|
1540 |
- && (strncasecmp(xpline, mkcmdstr("msay "), strlen(mkcmdstr("msay "))))) { |
|
1541 |
- // It isn't an /msay command |
|
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
1542 |
- scr_append_multiline(xpline); |
74 | 1543 |
- g_free(xpline); |
1544 |
- return 0; |
|
1545 |
- } |
|
1546 |
- |
|
1547 |
- // Commands handling |
|
1548 |
- curcmd = cmd_get(xpline); |
|
1549 |
- |
|
1550 |
- if (!curcmd) { |
|
1551 |
- scr_LogPrint(LPRINT_NORMAL, "Unrecognized command. " |
|
1552 |
- "Please see the manual for a list of known commands."); |
|
1553 |
- g_free(xpline); |
|
1554 |
- return 0; |
|
1555 |
- } |
|
1556 |
- if (!curcmd->func) { |
|
1557 |
- scr_LogPrint(LPRINT_NORMAL, |
|
1558 |
- "This functionality is not yet implemented, sorry."); |
|
1559 |
- g_free(xpline); |
|
1560 |
- return 0; |
|
1561 |
- } |
|
1562 |
- // Lets go to the command parameters |
|
1563 |
- for (p = xpline+1; *p && (*p != ' ') ; p++) |
|
1564 |
- ; |
|
1565 |
- // Skip spaces |
|
1566 |
- while (*p && (*p == ' ')) |
|
1567 |
- p++; |
|
1568 |
- // Call command-specific function |
|
1569 |
- retval_for_cmds = 0; |
|
1570 |
-#ifdef MODULES_ENABLE |
|
1571 |
- if (curcmd->userdata) |
|
1572 |
- (*(void (*)(char *p, gpointer u))curcmd->func)(p, curcmd->userdata); |
|
1573 |
- else |
|
1574 |
- (*curcmd->func)(p); |
|
1575 |
-#else |
|
1576 |
- (*curcmd->func)(p); |
|
1577 |
-#endif |
|
1578 |
- g_free(xpline); |
|
1579 |
- return retval_for_cmds; |
|
1580 |
-} |
|
1581 |
- |
|
1582 |
-// process_line(line) |
|
1583 |
-// Process a command/message line. |
|
1584 |
-// If this isn't a command, this is a message and it is sent to the |
|
1585 |
-// currently selected buddy. |
|
1586 |
-// Return 255 if the line is the /quit command, or 0. |
|
1587 |
-int process_line(const char *line) |
|
1588 |
-{ |
|
1589 |
+ gchar *utf8; |
|
1590 |
+ int retval; |
|
1591 |
+ |
|
1592 |
if (!*line) { // User only pressed enter |
|
1593 |
if (scr_get_multimode()) { |
|
1594 |
scr_append_multiline(""); |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1595 |
@@ -556,141 +715,516 @@ |
74 | 1596 |
} |
1597 |
if (current_buddy) { |
|
1598 |
if (buddy_gettype(BUDDATA(current_buddy)) & ROSTER_TYPE_GROUP) |
|
1599 |
- do_group("toggle"); |
|
1600 |
+ group_cmd (BUDDATA(current_buddy), scmd_group_toggle); |
|
1601 |
else { |
|
1602 |
// Enter chat mode |
|
1603 |
scr_set_chatmode(TRUE); |
|
1604 |
scr_show_buddy_window(); |
|
1605 |
} |
|
1606 |
} |
|
1607 |
- return 0; |
|
1608 |
+ return cmd_result_input; |
|
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
1609 |
} |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
1610 |
|
74 | 1611 |
- if (*line != COMMAND_CHAR) { |
1612 |
- // This isn't a command |
|
1613 |
+ utf8 = to_utf8(line); |
|
1614 |
+ if (*line != COMMAND_CHAR) { // input line |
|
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
1615 |
if (scr_get_multimode()) |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
1616 |
- scr_append_multiline(line); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
1617 |
+ scr_append_multiline(utf8); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
1618 |
else |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
1619 |
- say_cmd((char*)line, 0); |
74 | 1620 |
- return 0; |
1621 |
- } |
|
1622 |
- |
|
1623 |
- /* It is _probably_ a command -- except for verbatim multi-line mode */ |
|
1624 |
- return process_command(line, FALSE); |
|
1625 |
-} |
|
1626 |
- |
|
1627 |
-// Helper routine for buffer item_{lock,unlock,toggle_lock} |
|
1628 |
-// "lock" values: 1=lock 0=unlock -1=invert |
|
1629 |
-static void roster_buddylock(char *bjid, int lock) |
|
1630 |
-{ |
|
1631 |
- gpointer bud = NULL; |
|
1632 |
- bool may_need_refresh = FALSE; |
|
1633 |
- |
|
1634 |
- // Allow special jid "" or "." (current buddy) |
|
1635 |
- if (bjid && (!*bjid || !strcmp(bjid, "."))) |
|
1636 |
- bjid = NULL; |
|
1637 |
- |
|
1638 |
- if (bjid) { |
|
1639 |
- // The JID has been specified. Quick check... |
|
1640 |
- if (check_jid_syntax(bjid)) { |
|
1641 |
- scr_LogPrint(LPRINT_NORMAL|LPRINT_NOTUTF8, |
|
1642 |
- "<%s> is not a valid Jabber ID.", bjid); |
|
1643 |
- } else { |
|
1644 |
- // Find the buddy |
|
1645 |
- GSList *roster_elt; |
|
1646 |
- roster_elt = roster_find(bjid, jidsearch, |
|
1647 |
- ROSTER_TYPE_USER|ROSTER_TYPE_ROOM); |
|
1648 |
- if (roster_elt) |
|
1649 |
- bud = roster_elt->data; |
|
1650 |
- else |
|
1651 |
- scr_LogPrint(LPRINT_NORMAL, "This jid isn't in the roster."); |
|
1652 |
- may_need_refresh = TRUE; |
|
1653 |
- } |
|
1654 |
- } else { |
|
1655 |
- // Use the current buddy |
|
1656 |
- if (current_buddy) |
|
1657 |
- bud = BUDDATA(current_buddy); |
|
1658 |
- } |
|
1659 |
- |
|
1660 |
- // Update the ROSTER_FLAG_USRLOCK flag |
|
1661 |
- if (bud) { |
|
1662 |
- if (lock == -1) |
|
1663 |
- lock = !(buddy_getflags(bud) & ROSTER_FLAG_USRLOCK); |
|
1664 |
- buddy_setflags(bud, ROSTER_FLAG_USRLOCK, lock); |
|
1665 |
- if (may_need_refresh) { |
|
1666 |
- buddylist_build(); |
|
1667 |
- 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
|
1668 |
+ say_cmd(utf8, msgtype_not_set); |
74 | 1669 |
+ retval = 0; |
1670 |
+ } else { // command or verbatim multiline message |
|
1671 |
+ retval = cmd_execute_internal (utf8, cmdexe_check_verbatim); |
|
1672 |
+ if (retval == cmd_result_verbatim) { |
|
1673 |
+ g_free(utf8); // buffer has been corrupted by parser |
|
1674 |
+ utf8 = to_utf8(line); |
|
1675 |
+ scr_append_multiline(utf8); |
|
1676 |
+ retval = cmd_result_input; |
|
1677 |
} |
|
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
1678 |
} |
74 | 1679 |
+ g_free(utf8); |
1680 |
+ |
|
1681 |
+ return retval; |
|
1682 |
} |
|
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
1683 |
|
74 | 1684 |
-static void roster_resourcelock(char *jidres, gboolean lock) { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1685 |
- gpointer bud = NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1686 |
- char *resource = NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1687 |
- |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1688 |
- if (!jidres) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1689 |
- if (lock) return; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1690 |
- jidres = "."; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1691 |
- } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1692 |
- |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1693 |
- if (jidres[0] == '.' && |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1694 |
- (jidres[1] == '\0' || jidres[1] == JID_RESOURCE_SEPARATOR)) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1695 |
- //Special jid: . or ./resource |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1696 |
- switch (jidres[1]) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1697 |
- case JID_RESOURCE_SEPARATOR: |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1698 |
- resource = jidres+2; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1699 |
- case '\0': |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1700 |
- if (current_buddy) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1701 |
- bud = BUDDATA(current_buddy); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1702 |
- } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1703 |
- } else { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1704 |
- char *tmp; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1705 |
- if (!check_jid_syntax(jidres) && |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1706 |
- (tmp = strchr(jidres, JID_RESOURCE_SEPARATOR))) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1707 |
- //Any other valid full jid |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1708 |
- *tmp = '\0'; // for roster search by bare jid; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1709 |
- resource = tmp+1; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1710 |
- GSList *roster_elt; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1711 |
- roster_elt = roster_find(jidres, jidsearch, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1712 |
- ROSTER_TYPE_USER|ROSTER_TYPE_AGENT); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1713 |
- if (roster_elt) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1714 |
- bud = roster_elt->data; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1715 |
- *tmp = JID_RESOURCE_SEPARATOR; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1716 |
- } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1717 |
- if (!bud) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1718 |
- //Resource for current buddy |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1719 |
- if (current_buddy) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1720 |
- bud = BUDDATA(current_buddy); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1721 |
- resource = jidres; |
74 | 1722 |
+// |
1723 |
+// Standard types |
|
1724 |
+// |
|
1725 |
+// This section contains standard argument type definitions, used in built-in |
|
1726 |
+// mcabber commands. |
|
1727 |
+// |
|
1728 |
+ |
|
1729 |
+// TODO: (and variations with 'required') |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1730 |
+// + cmdarg_type_roster_bjid - in roster, with specified types -> bud |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1731 |
+// + cmdarg_type_roster_resource - in roster, with specified types, have resource -> bud + resource |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1732 |
+// * cmdarg_type_roster_fjid - in roster, with specified types, might have non-existing resource -> bud + resource |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1733 |
+// * cmdarg_type_roster_jid - in roster, with specified types, might have or not have resource -> bud + (resource) |
74 | 1734 |
+// * cmdarg_type_bjid - any bjid -> bjid |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1735 |
+// + cmdarg_type_fjid - any fjid -> fjid |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1736 |
+// + cmdarg_type_statusmask - string -> string |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1737 |
+// + cmdarg_type_uint - string -> uint |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1738 |
+// + cmdarg_type_nonspace - strip, space only -> null |
74 | 1739 |
+// * cmdarg_type_bjidmask |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1740 |
+// + cmdarg_type_color |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1741 |
+// + cmdarg_type_string2enum |
74 | 1742 |
+// * cmdarg_type_nick - provide completions first from current room, then from all other, nonspace, do not restrict |
1743 |
+ |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1744 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1745 |
+// common methods |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1746 |
+// |
74 | 1747 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1748 |
+void cmdarg_free_gfree (cmdarg_t *arg) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1749 |
+{ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1750 |
+ g_free (arg -> value.arg); |
74 | 1751 |
+} |
1752 |
+ |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1753 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1754 |
+// string -> stripspace string |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1755 |
+// |
74 | 1756 |
+ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1757 |
+// Strips leading and trailing spaces, checks if anything left. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1758 |
+// Replaces value.arg. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1759 |
+// Does not need freeing. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1760 |
+// No trailing spaces in defvalue - needs RW access for that. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1761 |
+gchar *cmdarg_check_nonspace (cmdarg_t *arg) |
74 | 1762 |
+{ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1763 |
+ 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
|
1764 |
+ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1765 |
+ if (val) { |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1766 |
+ while (isspace (*val)) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1767 |
+ val ++; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1768 |
+ if (*val) { // valid arg |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1769 |
+ arg -> value.arg = val; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1770 |
+ while (*val) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1771 |
+ val ++; |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1772 |
+ while (isspace (*val)) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1773 |
+ val --; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1774 |
+ val ++; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1775 |
+ if (*val) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1776 |
+ *val = '\0'; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1777 |
+ return NULL; |
74 | 1778 |
} |
1779 |
} |
|
1780 |
- |
|
1781 |
- if (bud && buddy_gettype(bud) & (ROSTER_TYPE_USER|ROSTER_TYPE_AGENT)) { |
|
1782 |
- if (lock) { |
|
1783 |
- GSList *resources, *p_res; |
|
1784 |
- gboolean found = FALSE; |
|
1785 |
- resources = buddy_getresources(bud); |
|
1786 |
- for (p_res = resources ; p_res ; p_res = g_slist_next(p_res)) { |
|
1787 |
- if (!g_strcmp0((char*)p_res->data, resource)) |
|
1788 |
- found = TRUE; |
|
1789 |
- g_free(p_res->data); |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1790 |
+ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1791 |
+ // error |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1792 |
+ arg -> value.arg = NULL; |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1793 |
+ return g_strdup ("Non-space value required."); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1794 |
+} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1795 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1796 |
+static const cmdarg_type_t cmdarg_typedef_nonspace = { |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1797 |
+ cmdarg_check_nonspace, |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1798 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1799 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1800 |
+}; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1801 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1802 |
+const cmdarg_type_t *cmdarg_type_nonspace = &cmdarg_typedef_nonspace; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1803 |
+ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1804 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1805 |
+// bjid -> bud |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1806 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1807 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1808 |
+// Uses chkdata as guint with allowed ROSTER_TYPE_*. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1809 |
+// Returns buddy roster entry in value.bud. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1810 |
+// Recognizes as current ".", but not "" or NULL - use defvalue. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1811 |
+// Does not require freeing. |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1812 |
+gchar *cmdarg_check_roster_bjid (cmdarg_t *arg) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1813 |
+{ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1814 |
+ gchar *error = NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1815 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1816 |
+ if (!(error = cmdarg_check_nonspace(arg))) { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1817 |
+ const char *bjid = arg -> value.arg; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1818 |
+ guint types = (guint) arg -> chkdata; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1819 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1820 |
+ if (!strcmp(bjid, ".")) { // current buddy |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1821 |
+ if (!current_buddy) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1822 |
+ error = g_strdup_printf("No buddy selected."); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1823 |
+ else if (buddy_gettype(BUDDATA(current_buddy)) & types) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1824 |
+ arg -> value.bud = BUDDATA(current_buddy); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1825 |
+ else // TODO: improve message |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1826 |
+ error = g_strdup_printf("Currently selected buddy is of wrong type."); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1827 |
+ } else if (!check_jid_syntax(bjid)) { // valid jid specified |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1828 |
+ GSList *found = roster_find(bjid, jidsearch, types); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1829 |
+ if (found) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1830 |
+ arg -> value.bud = found->data; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1831 |
+ else |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1832 |
+ error = g_strdup_printf("Jid <%s> is not in the roster.", bjid); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1833 |
+ } else { // jid is invalid |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1834 |
+ error = g_strdup_printf("<%s> is not a valid Jabber ID.", bjid); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1835 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1836 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1837 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1838 |
+ if (error) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1839 |
+ arg -> value.bud = NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1840 |
+ return error; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1841 |
+} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1842 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1843 |
+static const cmdarg_type_t cmdarg_typedef_roster_bjid = { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1844 |
+ cmdarg_check_roster_bjid, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1845 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1846 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1847 |
+}; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1848 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1849 |
+const cmdarg_type_t *cmdarg_type_roster_bjid = &cmdarg_typedef_roster_bjid; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1850 |
+ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1851 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1852 |
+// fjid -> bud + resource |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1853 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1854 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1855 |
+// Uses chkdata as guint with allowed ROSTER_TYPE_*. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1856 |
+// Returns buddy roster entry in userdata. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1857 |
+// Returns resource string in value.arg. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1858 |
+// Recognizes as current "./res" and "res". |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1859 |
+// Does not require freeing. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1860 |
+// No full "jid/resource" syntax in defvalue - needs rw for that. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1861 |
+// XXX: |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1862 |
+// * make return value a custom struct { .bud, .res } instead of using userdata |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1863 |
+// * merge with roster_bjid and use own flags in chkdata to signify types and resource allowed/required conditions |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1864 |
+gchar *cmdarg_check_roster_resource (cmdarg_t *arg) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1865 |
+{ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1866 |
+ gchar *error = NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1867 |
+ gpointer bud = NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1868 |
+ char *resource = NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1869 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1870 |
+ 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
|
1871 |
+ const char *fjid = arg -> value.arg; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1872 |
+ guint types = (guint) arg -> chkdata; |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1873 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1874 |
+ if (fjid[0] == '.' && fjid[1] == JID_RESOURCE_SEPARATOR) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1875 |
+ // current buddy |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1876 |
+ resource = fjid+2; |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1877 |
+ } else if (!check_jid_syntax (fjid) && (resource = strchr (fjid, JID_RESOURCE_SEPARATOR))) { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1878 |
+ // valid jid |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1879 |
+ GSList *found; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1880 |
+ *resource = '\0'; // XXX needs rw |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1881 |
+ found = roster_find (fjid, jidsearch, types); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1882 |
+ if (found) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1883 |
+ bud = found->data; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1884 |
+ resource ++; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1885 |
+ } else |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1886 |
+ error = g_strdup_printf ("Jid <%s> is not in the roster.", fjid); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1887 |
+ } else { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1888 |
+ // jid is invalid - let's consider it resource (XXX) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1889 |
+ resource = fjid; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1890 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1891 |
+ // resource for current buddy |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1892 |
+ if (error == NULL && resource) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1893 |
+ if (bud == NULL) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1894 |
+ if (!current_buddy) |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1895 |
+ error = g_strdup ("No buddy selected."); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1896 |
+ else if (buddy_gettype (BUDDATA(current_buddy)) & types) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1897 |
+ bud = BUDDATA(current_buddy); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1898 |
+ else // TODO: improve message |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1899 |
+ error = g_strdup_printf("Currently selected buddy is of wrong type."); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1900 |
} |
74 | 1901 |
- g_slist_free(resources); |
1902 |
- if (!found) { |
|
1903 |
- scr_LogPrint(LPRINT_NORMAL, "No such resource <%s>...", jidres); |
|
1904 |
- return; |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1905 |
+ if (bud) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1906 |
+ GSList *resources, *p_res; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1907 |
+ gboolean found = FALSE; |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1908 |
+ resources = buddy_getresources (bud); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1909 |
+ 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
|
1910 |
+ if (!g_strcmp0 ((char*)p_res->data, resource)) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1911 |
+ found = TRUE; |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1912 |
+ g_free (p_res->data); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1913 |
+ } |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1914 |
+ g_slist_free (resources); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1915 |
+ if (!found) |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1916 |
+ error = g_strdup_printf ("No such resource <%s%c%s>...", buddy_getjid(bud), JID_RESOURCE_SEPARATOR, resource); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1917 |
} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1918 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1919 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1920 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1921 |
+ if (error) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1922 |
+ arg -> userdata = NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1923 |
+ arg -> value.arg = NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1924 |
+ } else { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1925 |
+ arg -> userdata = bud; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1926 |
+ arg -> value.arg = resource; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1927 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1928 |
+ return error; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1929 |
+} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1930 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1931 |
+static const cmdarg_type_t cmdarg_typedef_roster_resource = { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1932 |
+ cmdarg_check_roster_resource, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1933 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1934 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1935 |
+}; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1936 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1937 |
+const cmdarg_type_t *cmdarg_type_roster_resource = &cmdarg_typedef_roster_resource; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1938 |
+ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1939 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1940 |
+// fjid -> fjid |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1941 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1942 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1943 |
+// Returns corrected fjid in value.arg. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1944 |
+// Recognizes as current "." and "./res". |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1945 |
+// Requires freeing. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1946 |
+// XXX: |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1947 |
+// * g_strdup jid? |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1948 |
+gchar *cmdarg_check_fjid (cmdarg_t *arg) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1949 |
+{ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1950 |
+ gchar *error = NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1951 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1952 |
+ if (!(error = cmdarg_check_nonspace(arg))) { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1953 |
+ const char *fjid = arg -> value.arg; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1954 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1955 |
+ 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
|
1956 |
+ const char *jid; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1957 |
+ if (!current_buddy) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1958 |
+ error = g_strdup_printf ("No buddy selected."); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1959 |
+ else if (!(jid = buddy_getjid(BUDDATA(current_buddy)))) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1960 |
+ error = g_strdup_printf ("Current buddy have no jid."); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1961 |
+ } 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
|
1962 |
+ arg -> value.roarg = jid; |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1963 |
+ } else { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1964 |
+ arg -> value.arg = g_strdup_printf ("%s%c%s", jid, JID_RESOURCE_SEPARATOR, fjid + 2); |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1965 |
+ arg -> flags |= cmdarg_freeme; |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1966 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1967 |
+ } else if (check_jid_syntax(fjid)) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1968 |
+ error = g_strdup_printf ("Jid <%s> is invalid.", fjid); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1969 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1970 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1971 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1972 |
+ if (error) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1973 |
+ arg -> value.arg = NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1974 |
+ return error; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1975 |
+} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1976 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1977 |
+static const cmdarg_type_t cmdarg_typedef_fjid = { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1978 |
+ cmdarg_check_fjid, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1979 |
+ cmdarg_free_gfree, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1980 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1981 |
+}; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1982 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1983 |
+const cmdarg_type_t *cmdarg_type_fjid = &cmdarg_typedef_fjid; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1984 |
+ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1985 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1986 |
+// string -> uint |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1987 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1988 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1989 |
+// Returns unsigned integer in value.uint. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1990 |
+// Does not require freeing. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1991 |
+// XXX: |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1992 |
+// * use gulong? (strtoul allows to check conversion errors, while atoi - not) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1993 |
+// * use flags in chkdata to specify signedness - it only affects two checks |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1994 |
+gchar *cmdarg_check_uint (cmdarg_t *arg) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1995 |
+{ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1996 |
+ gchar *error; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
1997 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
1998 |
+ 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
|
1999 |
+ char *s = arg -> value.arg; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2000 |
+ char *e = s; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2001 |
+ long n = strtol(s, &e, 0); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2002 |
+ if (*e != '\0') |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2003 |
+ error = g_strdup_printf ("Invalid number \"%s\".", s); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2004 |
+ else if (n < 0) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2005 |
+ error = g_strdup ("Value must be greater than zero."); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2006 |
+ else if (n > G_MAXUINT) |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2007 |
+ error = g_strdup_printf ("Value %ld is too big.", n); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2008 |
+ else |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2009 |
+ arg -> value.uint = (guint) n; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2010 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2011 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2012 |
+ if (error) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2013 |
+ arg -> value.uint = 0; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2014 |
+ return error; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2015 |
+} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2016 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2017 |
+static const cmdarg_type_t cmdarg_typedef_uint = { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2018 |
+ cmdarg_check_uint, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2019 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2020 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2021 |
+}; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2022 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2023 |
+const cmdarg_type_t *cmdarg_type_uint = &cmdarg_typedef_uint; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2024 |
+ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2025 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2026 |
+// string -> statusmask |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2027 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2028 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2029 |
+// Strips/checks for any non-valid status chars in mask. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2030 |
+// Returns mask in value.arg. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2031 |
+// Recognizes "*" as glob. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2032 |
+// Does not require freeing. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2033 |
+// No errors in default vaules - needs RW for that. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2034 |
+// XXX: |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2035 |
+// * check duplicates? |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2036 |
+// * string2flags? |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2037 |
+// * canonicize? |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2038 |
+// * string2enum? |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2039 |
+// * common strchr callback with valid chars in chkdata? |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2040 |
+// * Then argument name should go into cmdarg struct - message would be too generic |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2041 |
+gchar *cmdarg_check_statusmask (cmdarg_t *arg) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2042 |
+{ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2043 |
+ gchar *error; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2044 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2045 |
+ if (!(error = cmdarg_check_nonspace(arg)) && arg -> value.arg) { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2046 |
+ const char *valid = "foand_?"; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2047 |
+ if (!strcmp(arg -> value.arg, "*")) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2048 |
+ arg -> value.arg = g_strdup (valid); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2049 |
+ arg -> flags |= cmdarg_freeme; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2050 |
} else { |
74 | 2051 |
- resource = NULL; |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2052 |
+ gchar *p = arg -> value.arg; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2053 |
+ gchar *e = p + strlen (p); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2054 |
+ while (p < e) { |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2055 |
+ if (strchr (valid, *p)) { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2056 |
+ p ++; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2057 |
+ } else if (arg -> flags & cmdarg_required) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2058 |
+ // this is valid use of flag in checker |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2059 |
+ return g_strdup_printf ("%s can only contain characters [%s].", arg -> name, valid); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2060 |
+ } else { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2061 |
+ scr_log_print (LPRINT_NORMAL, "Warning: Wrong %s character [%c]", arg -> name, *p); |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2062 |
+ g_memmove (p, p+1, e-p-1); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2063 |
+ e --; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2064 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2065 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2066 |
+ 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
|
2067 |
+ arg -> value.arg = NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2068 |
} |
74 | 2069 |
- buddy_setactiveresource(bud, resource); |
2070 |
- scr_update_chat_status(TRUE); |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2071 |
+ } |
74 | 2072 |
+ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2073 |
+ return error; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2074 |
+} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2075 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2076 |
+static const cmdarg_type_t cmdarg_typedef_statusmask = { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2077 |
+ cmdarg_check_statusmask, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2078 |
+ cmdarg_free_gfree, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2079 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2080 |
+}; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2081 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2082 |
+const cmdarg_type_t *cmdarg_type_statusmask = &cmdarg_typedef_statusmask; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2083 |
+ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2084 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2085 |
+// string -> enum |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2086 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2087 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2088 |
+// Uses chkdata as a pointer to continuous array of string2enum_t structs. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2089 |
+// Returns corresponding value in value.uint. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2090 |
+// Returns 0 if not recognized and not required. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2091 |
+// Does not require freeing. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2092 |
+// XXX: |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2093 |
+// * also, print list of possible values on error? |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2094 |
+// * default value on error? |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2095 |
+gchar *cmdarg_check_string2enum (cmdarg_t *arg) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2096 |
+{ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2097 |
+ gchar *error; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2098 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2099 |
+ 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
|
2100 |
+ const string2enum_t *list; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2101 |
+ for (list = arg -> chkdata; list -> name != NULL; list ++) |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2102 |
+ 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
|
2103 |
+ arg -> value.uint = list -> value; |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2104 |
+ return NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2105 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2106 |
+ // not found, error |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2107 |
+ error = g_strdup_printf ("Value \"%s\" is invalid for %s.", arg -> value.arg, arg -> name); |
74 | 2108 |
+ } |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2109 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2110 |
+ if (error) |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2111 |
+ arg -> value.uint = 0; |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2112 |
+ return error; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2113 |
+} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2114 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2115 |
+static const cmdarg_type_t cmdarg_typedef_string2enum = { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2116 |
+ cmdarg_check_string2enum, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2117 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2118 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2119 |
+}; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2120 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2121 |
+const cmdarg_type_t *cmdarg_type_string2enum = &cmdarg_typedef_string2enum; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2122 |
+ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2123 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2124 |
+// string -> color name |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2125 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2126 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2127 |
+static const string2enum_t s2e_color[] = { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2128 |
+ { "default", -1 }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2129 |
+ { "black", 1 }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2130 |
+ { "red", 1 }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2131 |
+ { "green", 1 }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2132 |
+ { "yellow", 1 }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2133 |
+ { "blue", 1 }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2134 |
+ { "magenta", 1 }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2135 |
+ { "white", 1 }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2136 |
+ { NULL, 0 }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2137 |
+}; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2138 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2139 |
+// Recognizes "-" for reset, prefix "bright", standard names and numerical values. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2140 |
+// Returns color name in value.arg. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2141 |
+// Does not require freeing. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2142 |
+// XXX |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2143 |
+// * in fact, we can straight away do color parsing & allocate ccolor, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2144 |
+// but to not break too much things, for now we'll wait with that. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2145 |
+// * that needs access to ncurses internals, so, probably, this will |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2146 |
+// be better done, when moving related command definitions to |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2147 |
+// corresponding subsystems. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2148 |
+static gchar *cmdarg_check_color (cmdarg_t *arg) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2149 |
+{ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2150 |
+ gchar *error; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2151 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2152 |
+ 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
|
2153 |
+ char *color = arg -> value.arg; |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2154 |
+ // reset color |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2155 |
+ if (!strcmp(color, "-")) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2156 |
+ return NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2157 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2158 |
+ // allow "bright" prefix |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2159 |
+ if (!strncmp(color, "bright", 6)) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2160 |
+ color += 6; |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2161 |
+ { // check names |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2162 |
+ const string2enum_t *list; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2163 |
+ 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
|
2164 |
+ if (!strcmp (list -> name, color)) |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2165 |
+ return NULL; |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2166 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2167 |
+ { // 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
|
2168 |
+ char *e = color; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2169 |
+ long n = strtol(color, &e, 0); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2170 |
+ if (*e != '\0' || n < 0 || n > 256) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2171 |
+ error = g_strdup_printf ("Invalid color \"%s\".", arg -> value.arg); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2172 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2173 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2174 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2175 |
+ if (error) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2176 |
+ arg -> value.arg = NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2177 |
+ return error; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2178 |
+} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2179 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2180 |
+static const cmdarg_type_t cmdarg_typedef_color = { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2181 |
+ cmdarg_check_color, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2182 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2183 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2184 |
+}; |
74 | 2185 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2186 |
+const cmdarg_type_t *cmdarg_type_color = &cmdarg_typedef_color; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2187 |
+ |
74 | 2188 |
+// |
2189 |
+// Command definitions |
|
2190 |
+// |
|
2191 |
+// This section contains definitions for built-in mcabber commands. |
|
2192 |
+// If you add a definition here, that should be automatically loaded, |
|
2193 |
+// you also have to add it to cmd_init(). |
|
2194 |
+// |
|
2195 |
+ |
|
2196 |
+// |
|
2197 |
+// /roster |
|
2198 |
+// |
|
2199 |
+ |
|
2200 |
+// Helper routine for /roster item_{lock,unlock,toggle_lock} |
|
2201 |
+// "lock" values: 1=lock 0=unlock -1=invert |
|
2202 |
+static void roster_buddylock(gpointer bud, int lock) |
|
2203 |
+{ |
|
2204 |
+ // Update the ROSTER_FLAG_USRLOCK flag |
|
2205 |
+ if (lock == -1) |
|
2206 |
+ lock = !(buddy_getflags(bud) & ROSTER_FLAG_USRLOCK); |
|
2207 |
+ buddy_setflags(bud, ROSTER_FLAG_USRLOCK, lock); |
|
2208 |
+ if ((!current_buddy) || bud == BUDDATA(current_buddy)) { |
|
2209 |
+ buddylist_build(); |
|
2210 |
+ update_roster = TRUE; |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2211 |
} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2212 |
} |
74 | 2213 |
+ |
2214 |
// display_and_free_note(note, winId) |
|
2215 |
// Display the note information in the winId buffer, and free note |
|
2216 |
// (winId is a bare jid or NULL for the status window, in which case we |
|
2217 |
-// display the note jid too) |
|
2218 |
+// display the note jid too). |
|
2219 |
static void display_and_free_note(struct annotation *note, const char *winId) |
|
2220 |
{ |
|
2221 |
gchar tbuf[128]; |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2222 |
@@ -755,41 +1289,15 @@ |
66 | 2223 |
g_slist_free(notes); |
2224 |
} |
|
2225 |
||
2226 |
-static void roster_note(char *arg) |
|
74 | 2227 |
+static void roster_note(gpointer bud, gboolean reset, gchar *note) |
66 | 2228 |
{ |
74 | 2229 |
- const char *bjid; |
2230 |
- guint type; |
|
2231 |
- |
|
2232 |
- if (!current_buddy) |
|
2233 |
- return; |
|
2234 |
- |
|
2235 |
- bjid = buddy_getjid(BUDDATA(current_buddy)); |
|
2236 |
- type = buddy_gettype(BUDDATA(current_buddy)); |
|
2237 |
- |
|
2238 |
- if (!bjid && type == ROSTER_TYPE_SPECIAL && !arg) { |
|
2239 |
- // We're in the status window (the only special buffer currently) |
|
2240 |
- // Let's display all server notes |
|
2241 |
- display_all_annotations(); |
|
2242 |
- return; |
|
2243 |
- } |
|
2244 |
- |
|
2245 |
- if (!bjid || (type != ROSTER_TYPE_USER && |
|
2246 |
- type != ROSTER_TYPE_ROOM && |
|
2247 |
- type != ROSTER_TYPE_AGENT)) { |
|
2248 |
- scr_LogPrint(LPRINT_NORMAL, "This item can't have a note."); |
|
2249 |
- return; |
|
2250 |
- } |
|
2251 |
- |
|
2252 |
- if (arg && *arg) { // Set a note |
|
66 | 2253 |
- gchar *msg, *notetxt; |
2254 |
- msg = to_utf8(arg); |
|
2255 |
- if (!strcmp(msg, "-")) |
|
2256 |
- notetxt = NULL; // delete note |
|
2257 |
- else |
|
2258 |
- notetxt = msg; |
|
2259 |
- xmpp_set_storage_rosternotes(bjid, notetxt); |
|
2260 |
- g_free(msg); |
|
74 | 2261 |
- } else { // Display a note |
2262 |
+ const char *bjid = buddy_getjid(bud); |
|
2263 |
+ |
|
2264 |
+ if (note) // set note |
|
2265 |
+ xmpp_set_storage_rosternotes(bjid, note); |
|
2266 |
+ else if (reset) // delete note |
|
2267 |
+ xmpp_set_storage_rosternotes(bjid, NULL); |
|
2268 |
+ else { // display a note |
|
66 | 2269 |
struct annotation *note = xmpp_get_storage_rosternotes(bjid, FALSE); |
2270 |
if (note) { |
|
74 | 2271 |
display_and_free_note(note, bjid); |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2272 |
@@ -800,194 +1308,282 @@ |
74 | 2273 |
} |
2274 |
} |
|
66 | 2275 |
|
74 | 2276 |
-// roster_updown(updown, nitems) |
2277 |
-// updown: -1=up, +1=down |
|
2278 |
-inline static void roster_updown(int updown, char *nitems) |
|
2279 |
+typedef enum { |
|
2280 |
+ scmd_roster_bottom, scmd_roster_top, scmd_roster_up, scmd_roster_down, |
|
2281 |
+ scmd_roster_group_prev, scmd_roster_group_next, |
|
2282 |
+ scmd_roster_alternate, |
|
2283 |
+ scmd_roster_unread_first, scmd_roster_unread_next, |
|
2284 |
+ scmd_roster_search, |
|
2285 |
+ scmd_roster_display, |
|
2286 |
+ scmd_roster_hide_offline, scmd_roster_show_offline, scmd_roster_toggle_offline, |
|
2287 |
+ scmd_roster_item_lock, scmd_roster_item_unlock, scmd_roster_item_toggle_lock, |
|
2288 |
+ scmd_roster_note, scmd_roster_notes, |
|
2289 |
+ scmd_roster_resource_lock, scmd_roster_resource_unlock, |
|
2290 |
+ scmd_roster_hide, scmd_roster_show, scmd_roster_toggle, |
|
2291 |
+} scmd_roster_t; |
|
2292 |
+ |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2293 |
+#define SCMD_ROSTER(NAME, ARGS...) \ |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2294 |
+ { #NAME, cmd_default, NULL, NULL, NULL, ARGS, NULL, (gpointer)scmd_roster_##NAME } |
74 | 2295 |
+static cmdopts_t def_roster = { |
2296 |
+ "roster", |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2297 |
+ cmd_default, // XXX |
74 | 2298 |
+ NULL, |
2299 |
+ do_roster, |
|
2300 |
+ NULL, |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2301 |
+ {{"subcommand", cmdarg_subcmd | cmdarg_check, NULL, NULL}, NULL}, |
74 | 2302 |
+ { |
2303 |
+ SCMD_ROSTER(bottom, NULL), |
|
2304 |
+ SCMD_ROSTER(top, NULL), |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2305 |
+ SCMD_ROSTER(up, {{"n", cmdarg_chreq, "1", cmdarg_type_uint}, NULL}), |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2306 |
+ SCMD_ROSTER(down, {{"n", cmdarg_chreq, "1", cmdarg_type_uint}, NULL}), |
74 | 2307 |
+ SCMD_ROSTER(group_prev, NULL), |
2308 |
+ SCMD_ROSTER(group_next, NULL), |
|
2309 |
+ SCMD_ROSTER(alternate, NULL), |
|
2310 |
+ SCMD_ROSTER(unread_first, NULL), |
|
2311 |
+ SCMD_ROSTER(unread_next, NULL), |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2312 |
+ SCMD_ROSTER(search, {{"name", cmdarg_eol|cmdarg_required, NULL, cmdarg_type_nonspace}, NULL}), |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2313 |
+ SCMD_ROSTER(display, {{"statusmask", cmdarg_check, NULL, cmdarg_type_statusmask}, NULL}), |
74 | 2314 |
+ SCMD_ROSTER(hide_offline, NULL), |
2315 |
+ SCMD_ROSTER(show_offline, NULL), |
|
2316 |
+ SCMD_ROSTER(toggle_offline, NULL), |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2317 |
+ SCMD_ROSTER(item_lock, {{"jid", cmdarg_chreq, ".", cmdarg_type_roster_bjid, (gpointer)(ROSTER_TYPE_USER|ROSTER_TYPE_ROOM)}, NULL}), |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2318 |
+ SCMD_ROSTER(item_unlock, {{"jid", cmdarg_chreq, ".", cmdarg_type_roster_bjid, (gpointer)(ROSTER_TYPE_USER|ROSTER_TYPE_ROOM)}, NULL}), |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2319 |
+ SCMD_ROSTER(item_toggle_lock, {{"jid", cmdarg_chreq, ".", cmdarg_type_roster_bjid, (gpointer)(ROSTER_TYPE_USER|ROSTER_TYPE_ROOM)}, NULL}), |
74 | 2320 |
+ { "note", NULL, NULL, |
2321 |
+ { |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2322 |
+ {cmdopt_switch, 'r', "reset", {"reset", cmdarg_default, NULL, NULL, NULL}}, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2323 |
+ {cmdopt_default, 'j', "jid", {"jid", cmdarg_chreq, ".", cmdarg_type_roster_bjid, (gpointer)(ROSTER_TYPE_USER|ROSTER_TYPE_ROOM|ROSTER_TYPE_AGENT)}}, |
74 | 2324 |
+ NULL, |
2325 |
+ }, |
|
2326 |
+ { |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2327 |
+ {cmdarg_eol, NULL, cmdarg_type_nonspace}, |
74 | 2328 |
+ NULL, |
2329 |
+ }, |
|
2330 |
+ NULL, (gpointer)scmd_roster_note |
|
2331 |
+ }, |
|
2332 |
+ SCMD_ROSTER(notes, NULL), |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2333 |
+ SCMD_ROSTER(resource_lock, {{"resource|fjid", cmdarg_chreq, NULL, cmdarg_type_roster_resource, (gpointer)(ROSTER_TYPE_USER|ROSTER_TYPE_AGENT)}, NULL}), |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2334 |
+ SCMD_ROSTER(resource_unlock, {{"jid", cmdarg_chreq, ".", cmdarg_type_roster_bjid, (gpointer)(ROSTER_TYPE_USER|ROSTER_TYPE_AGENT)}, NULL}), |
74 | 2335 |
+ SCMD_ROSTER(hide, NULL), |
2336 |
+ SCMD_ROSTER(show, NULL), |
|
2337 |
+ SCMD_ROSTER(toggle, NULL), |
|
2338 |
+ NULL, |
|
2339 |
+ }, |
|
2340 |
+}; |
|
2341 |
+ |
|
2342 |
+static gchar *do_roster(cmdopts_t *options) |
|
2343 |
{ |
|
2344 |
- int nbitems; |
|
2345 |
- |
|
2346 |
- if (!nitems || !*nitems) |
|
2347 |
- nbitems = 1; |
|
2348 |
- else |
|
2349 |
- nbitems = strtol(nitems, NULL, 10); |
|
2350 |
- |
|
2351 |
- if (nbitems > 0) |
|
2352 |
- scr_roster_up_down(updown, nbitems); |
|
2353 |
-} |
|
2354 |
- |
|
2355 |
-/* Commands callback functions */ |
|
2356 |
-/* All these do_*() functions will be called with a "arg" parameter */ |
|
2357 |
-/* (with arg not null) */ |
|
2358 |
- |
|
66 | 2359 |
-static void do_roster(char *arg) |
74 | 2360 |
-{ |
66 | 2361 |
- char **paramlst; |
2362 |
- char *subcmd; |
|
2363 |
- |
|
2364 |
- paramlst = split_arg(arg, 2, 1); // subcmd, arg |
|
2365 |
- subcmd = *paramlst; |
|
2366 |
- arg = *(paramlst+1); |
|
2367 |
- |
|
2368 |
- if (!subcmd || !*subcmd) { |
|
2369 |
- scr_LogPrint(LPRINT_NORMAL, "Missing parameter."); |
|
2370 |
- free_arg_lst(paramlst); |
|
74 | 2371 |
- return; |
2372 |
- } |
|
2373 |
- |
|
2374 |
- if (!strcasecmp(subcmd, "top")) { |
|
2375 |
+ scmd_roster_t subcmd = (scmd_roster_t) (options -> args[0] -> value.cmd -> userdata); |
|
2376 |
+ cmdarg_t *arg = NULL; |
|
66 | 2377 |
+ |
74 | 2378 |
+ if (options -> args[0] -> value.cmd -> args) |
2379 |
+ arg = options -> args[0] -> value.cmd -> args[0]; |
|
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
2380 |
+ |
74 | 2381 |
+ if (subcmd == scmd_roster_bottom) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
2382 |
+ scr_roster_bottom(); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
2383 |
+ update_roster = TRUE; |
74 | 2384 |
+ } else if (subcmd == scmd_roster_top) { |
66 | 2385 |
scr_roster_top(); |
2386 |
update_roster = TRUE; |
|
2387 |
- } else if (!strcasecmp(subcmd, "bottom")) { |
|
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
2388 |
- scr_roster_bottom(); |
74 | 2389 |
+ } else if (subcmd == scmd_roster_up) { |
2390 |
+ scr_roster_up_down(-1, arg -> value.uint); |
|
2391 |
+ } else if (subcmd == scmd_roster_down) { |
|
2392 |
+ scr_roster_up_down(1, arg -> value.uint); |
|
2393 |
+ } else if (subcmd == scmd_roster_group_prev) { |
|
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
2394 |
+ scr_roster_prev_group(); |
74 | 2395 |
+ } else if (subcmd == scmd_roster_group_next) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
2396 |
+ scr_roster_next_group(); |
74 | 2397 |
+ } else if (subcmd == scmd_roster_alternate) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
2398 |
+ scr_roster_jump_alternate(); |
74 | 2399 |
+ } else if (subcmd == scmd_roster_unread_first) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
2400 |
+ scr_roster_unread_message(0); |
74 | 2401 |
+ } else if (subcmd == scmd_roster_unread_next) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
2402 |
+ scr_roster_unread_message(1); |
74 | 2403 |
+ } else if (subcmd == scmd_roster_search) { |
2404 |
+ scr_roster_search(arg -> value.arg); |
|
66 | 2405 |
update_roster = TRUE; |
2406 |
- } else if (!strcasecmp(subcmd, "hide")) { |
|
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
2407 |
- scr_roster_visibility(0); |
66 | 2408 |
- } else if (!strcasecmp(subcmd, "show")) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
2409 |
- scr_roster_visibility(1); |
66 | 2410 |
- } else if (!strcasecmp(subcmd, "toggle")) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
2411 |
- scr_roster_visibility(-1); |
66 | 2412 |
- } else if (!strcasecmp(subcmd, "hide_offline")) { |
74 | 2413 |
+ } else if (subcmd == scmd_roster_display) { |
2414 |
+ scr_roster_display(arg -> value.arg); |
|
2415 |
+ } else if (subcmd == scmd_roster_hide_offline) { |
|
66 | 2416 |
buddylist_set_hide_offline_buddies(TRUE); |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
2417 |
- if (current_buddy) |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
2418 |
+ if (current_buddy) // XXX |
66 | 2419 |
buddylist_build(); |
2420 |
update_roster = TRUE; |
|
2421 |
- } else if (!strcasecmp(subcmd, "show_offline")) { |
|
74 | 2422 |
+ } else if (subcmd == scmd_roster_show_offline) { |
66 | 2423 |
buddylist_set_hide_offline_buddies(FALSE); |
2424 |
buddylist_build(); |
|
2425 |
update_roster = TRUE; |
|
2426 |
- } else if (!strcasecmp(subcmd, "toggle_offline")) { |
|
74 | 2427 |
+ } else if (subcmd == scmd_roster_toggle_offline) { |
66 | 2428 |
buddylist_set_hide_offline_buddies(-1); |
2429 |
buddylist_build(); |
|
2430 |
update_roster = TRUE; |
|
2431 |
- } else if (!strcasecmp(subcmd, "display")) { |
|
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
2432 |
- scr_roster_display(arg); |
66 | 2433 |
- } else if (!strcasecmp(subcmd, "item_lock")) { |
74 | 2434 |
- roster_buddylock(arg, 1); |
66 | 2435 |
- } else if (!strcasecmp(subcmd, "item_unlock")) { |
74 | 2436 |
- roster_buddylock(arg, 0); |
66 | 2437 |
- } else if (!strcasecmp(subcmd, "item_toggle_lock")) { |
74 | 2438 |
- roster_buddylock(arg, -1); |
66 | 2439 |
- } else if (!strcasecmp(subcmd, "unread_first")) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
2440 |
- scr_roster_unread_message(0); |
66 | 2441 |
- } else if (!strcasecmp(subcmd, "unread_next")) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
2442 |
- scr_roster_unread_message(1); |
66 | 2443 |
- } else if (!strcasecmp(subcmd, "alternate")) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
2444 |
- scr_roster_jump_alternate(); |
66 | 2445 |
- } else if (!strncasecmp(subcmd, "search", 6)) { |
2446 |
- strip_arg_special_chars(arg); |
|
2447 |
- if (!arg || !*arg) { |
|
2448 |
- scr_LogPrint(LPRINT_NORMAL, "What name or JID are you looking for?"); |
|
2449 |
- 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
|
2450 |
- return; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
2451 |
- } |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
2452 |
- scr_roster_search(arg); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
2453 |
- 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
|
2454 |
- } else if (!strcasecmp(subcmd, "up")) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
2455 |
- 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
|
2456 |
- } else if (!strcasecmp(subcmd, "down")) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
2457 |
- 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
|
2458 |
- } else if (!strcasecmp(subcmd, "group_prev")) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
2459 |
- 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
|
2460 |
- } else if (!strcasecmp(subcmd, "group_next")) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
2461 |
- 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
|
2462 |
- } else if (!strcasecmp(subcmd, "note")) { |
74 | 2463 |
- 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
|
2464 |
- } else if (!strcasecmp(subcmd, "resource_lock")) { |
74 | 2465 |
- 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
|
2466 |
- } else if (!strcasecmp(subcmd, "resource_unlock")) { |
74 | 2467 |
- 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
|
2468 |
- } else |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
2469 |
- 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
|
2470 |
- free_arg_lst(paramlst); |
74 | 2471 |
+ } else if (subcmd == scmd_roster_item_lock) { |
2472 |
+ roster_buddylock(arg -> value.bud, 1); |
|
2473 |
+ } else if (subcmd == scmd_roster_item_unlock) { |
|
2474 |
+ roster_buddylock(arg -> value.bud, 0); |
|
2475 |
+ } else if (subcmd == scmd_roster_item_toggle_lock) { |
|
2476 |
+ roster_buddylock(arg -> value.bud, -1); |
|
2477 |
+ } else if (subcmd == scmd_roster_note) { |
|
2478 |
+ roster_note(options -> cmds[18] -> opts[1] -> value.bud, |
|
2479 |
+ options -> cmds[18] -> opts[0] -> value.swc, |
|
2480 |
+ arg -> value.arg); |
|
2481 |
+ } else if (subcmd == scmd_roster_notes) { |
|
2482 |
+ display_all_annotations(); |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2483 |
+ } else if (subcmd == scmd_roster_resource_lock) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2484 |
+ buddy_setactiveresource(arg -> userdata, arg -> value.arg); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2485 |
+ scr_update_chat_status(TRUE); |
74 | 2486 |
+ } else if (subcmd == scmd_roster_resource_unlock) { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2487 |
+ buddy_setactiveresource(arg -> value.bud, NULL); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2488 |
+ scr_update_chat_status(TRUE); |
74 | 2489 |
+ } else if (subcmd == scmd_roster_hide) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
2490 |
+ scr_roster_visibility(0); |
74 | 2491 |
+ } else if (subcmd == scmd_roster_show) { |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
2492 |
+ scr_roster_visibility(1); |
74 | 2493 |
+ } else { // scmd_roster_toggle |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
2494 |
+ scr_roster_visibility(-1); |
67
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2495 |
+ } |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2496 |
+ |
74 | 2497 |
+ 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
|
2498 |
} |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
2499 |
|
74 | 2500 |
-void do_color(char *arg) |
2501 |
+// |
|
2502 |
+// /color |
|
2503 |
+// |
|
2504 |
+ |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2505 |
+// custom argument types |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2506 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2507 |
+// statusmask + "clear" |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2508 |
+static gchar *cmdarg_check_color_statusmask (cmdarg_t *arg) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2509 |
{ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2510 |
- char **paramlst; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2511 |
- char *subcmd; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2512 |
- |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2513 |
- paramlst = split_arg(arg, 2, 1); // subcmd, arg |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2514 |
- subcmd = *paramlst; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2515 |
- arg = *(paramlst+1); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2516 |
- |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2517 |
- if (!subcmd || !*subcmd) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2518 |
- scr_LogPrint(LPRINT_NORMAL, "Missing parameter."); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2519 |
- free_arg_lst(paramlst); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2520 |
- return; |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2521 |
+ if (!g_strcmp0 (arg -> value.arg, "clear")) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2522 |
+ return NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2523 |
+ else |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2524 |
+ return cmdarg_check_statusmask (arg); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2525 |
+} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2526 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2527 |
+static const cmdarg_type_t cmdarg_typedef_color_statusmask = { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2528 |
+ cmdarg_check_color_statusmask, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2529 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2530 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2531 |
+}; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2532 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2533 |
+// bjid + "*" |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2534 |
+// Returns string, not buddy. |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2535 |
+static gchar *cmdarg_check_color_roomjid (cmdarg_t *arg) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2536 |
+{ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2537 |
+ gchar *error; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2538 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2539 |
+ if (!g_strcmp0(arg -> value.arg, "*")) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2540 |
+ return NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2541 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2542 |
+ arg -> chkdata = (gpointer) ROSTER_TYPE_ROOM; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2543 |
+ if (!(error = cmdarg_check_roster_bjid (arg))) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2544 |
+ arg -> value.roarg = buddy_getjid (arg -> value.bud); // XXX strdup? |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2545 |
} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2546 |
|
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2547 |
- if (!strcasecmp(subcmd, "roster")) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2548 |
- char *status, *wildcard, *color; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2549 |
- char **arglist = split_arg(arg, 3, 0); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2550 |
- |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2551 |
- status = *arglist; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2552 |
- wildcard = to_utf8(arglist[1]); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2553 |
- color = arglist[2]; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2554 |
- |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2555 |
- if (status && !strcmp(status, "clear")) { // Not a color command, clear all |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2556 |
+ if (error) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2557 |
+ arg -> value.arg = NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2558 |
+ return error; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2559 |
+} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2560 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2561 |
+static const cmdarg_type_t *cmdarg_type_color_roomjid = { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2562 |
+ cmdarg_check_color_roomjid, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2563 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2564 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2565 |
+}; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2566 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2567 |
+// TODO: completion, that says, which roster jids do match |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2568 |
+static const cmdarg_type_t *cmdarg_type_bjidmask = { |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2569 |
+ cmdarg_check_nonspace, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2570 |
+ NULL, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2571 |
+ NULL, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2572 |
+}; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2573 |
+ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2574 |
+// command |
74 | 2575 |
+ |
2576 |
+typedef enum { |
|
2577 |
+ scmd_color_roster, |
|
2578 |
+ scmd_color_mucnick, |
|
2579 |
+ scmd_color_muc, |
|
2580 |
+} scmd_color_t; |
|
2581 |
+ |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2582 |
+static const string2enum_t s2e_color_muc[] = { |
74 | 2583 |
+ { "on", MC_ALL }, |
2584 |
+ { "off", MC_OFF }, |
|
2585 |
+ { "preset", MC_PRESET }, |
|
2586 |
+ { "-", MC_REMOVE }, |
|
2587 |
+ { NULL, 0 }, |
|
2588 |
+}; |
|
2589 |
+ |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2590 |
+static cmdopts_t def_color = { |
74 | 2591 |
+ "color", |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2592 |
+ cmd_default, // XXX |
74 | 2593 |
+ NULL, |
2594 |
+ do_color, |
|
2595 |
+ NULL, |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2596 |
+ {{ "subcommand", cmdarg_subcmd | cmdarg_check, NULL, NULL }, NULL}, |
74 | 2597 |
+ { |
2598 |
+ {"roster", NULL, NULL, NULL, { |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2599 |
+ { "statusmask|clear", cmdarg_chreq, NULL, &cmdarg_type_color_statusmask }, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2600 |
+ { "jidmask", cmdarg_default, NULL, &cmdarg_type_bjidmask }, |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2601 |
+ { "color|-", cmdarg_default, NULL, cmdarg_type_color }, |
74 | 2602 |
+ NULL, |
2603 |
+ }, NULL, (gpointer)scmd_color_roster}, |
|
2604 |
+ {"muc", NULL, NULL, NULL, { |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2605 |
+ { "roomjid", cmdarg_chreq, NULL, &cmdarg_type_color_roomjid }, |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2606 |
+ { "on|off|preset|-", cmdarg_chreq, "on", cmdarg_type_string2enum, (gpointer)s2e_color_muc}, |
74 | 2607 |
+ NULL, |
2608 |
+ }, NULL, (gpointer)scmd_color_muc}, |
|
2609 |
+ {"mucnick", NULL, NULL, NULL { |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2610 |
+ { "nick", cmdarg_chreq, NULL, cmdarg_type_nick }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2611 |
+ { "color|-", cmdarg_chreq, NULL, cmdarg_type_color }, |
74 | 2612 |
+ NULL, |
2613 |
+ }, NULL, (gpointer)scmd_color_mucnick}, |
|
2614 |
+ NULL, |
|
2615 |
+ }, |
|
2616 |
+}; |
|
2617 |
+ |
|
2618 |
+static gchar *do_color(cmdopts_t *options) |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2619 |
+{ |
74 | 2620 |
+ scmd_color_t subcmd = (scmd_color_t) options -> args[0] -> value.cmd -> userdata; |
67
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2621 |
+ |
74 | 2622 |
+ if (subcmd == scmd_color_roster) { |
2623 |
+ const gchar *status = options -> cmds[0] -> args[0] -> value.arg; |
|
2624 |
+ const gchar *wildcard = options -> cmds[0] -> args[1] -> value.arg; |
|
2625 |
+ const gchar *color = options -> cmds[0] -> args[2] -> value.arg; |
|
67
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2626 |
+ if (!strcmp(status, "clear")) { // Not a color command, clear all |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2627 |
scr_roster_clear_color(); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2628 |
update_roster = TRUE; |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2629 |
} else { |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2630 |
- if (!status || !*status || !wildcard || !*wildcard || !color || !*color) { |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2631 |
- scr_LogPrint(LPRINT_NORMAL, "Missing argument"); |
74 | 2632 |
+ if (!wildcard || !*wildcard || !color || !*color) { |
2633 |
+ // freaking "clear" :( |
|
2634 |
+ return g_strdup ("Missing argument."); |
|
67
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2635 |
} else { |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2636 |
update_roster = scr_roster_color(status, wildcard, color) || |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2637 |
update_roster; |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2638 |
} |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2639 |
} |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2640 |
- free_arg_lst(arglist); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2641 |
- g_free(wildcard); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2642 |
- } else if (!strcasecmp(subcmd, "muc")) { |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2643 |
- char **arglist = split_arg(arg, 2, 0); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2644 |
- char *free_muc = to_utf8(*arglist); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2645 |
- const char *muc = free_muc, *mode = arglist[1]; |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2646 |
- if (!muc || !*muc) |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2647 |
- scr_LogPrint(LPRINT_NORMAL, "What MUC?"); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2648 |
- else { |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2649 |
- if (!strcmp(muc, ".")) |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2650 |
- if (!(muc = CURRENT_JID)) |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2651 |
- scr_LogPrint(LPRINT_NORMAL, "No JID selected"); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2652 |
- if (muc) { |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2653 |
- if (check_jid_syntax(muc) && strcmp(muc, "*")) |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2654 |
- scr_LogPrint(LPRINT_NORMAL, "Not a JID"); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2655 |
- else { |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2656 |
- if (!mode || !*mode || !strcasecmp(mode, "on")) |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2657 |
- scr_muc_color(muc, MC_ALL); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2658 |
- else if (!strcasecmp(mode, "preset")) |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2659 |
- scr_muc_color(muc, MC_PRESET); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2660 |
- else if (!strcasecmp(mode, "off")) |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2661 |
- scr_muc_color(muc, MC_OFF); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2662 |
- else if (!strcmp(mode, "-")) |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2663 |
- scr_muc_color(muc, MC_REMOVE); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2664 |
- else |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2665 |
- scr_LogPrint(LPRINT_NORMAL, "Unknown coloring mode"); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2666 |
- } |
74 | 2667 |
- } |
2668 |
- } |
|
67
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2669 |
- free_arg_lst(arglist); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2670 |
- g_free(free_muc); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2671 |
- } else if (!strcasecmp(subcmd, "mucnick")) { |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2672 |
- char **arglist = split_arg(arg, 2, 0); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2673 |
- const char *nick = *arglist, *color = arglist[1]; |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2674 |
- if (!nick || !*nick || !color || !*color) |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2675 |
- scr_LogPrint(LPRINT_NORMAL, "Missing argument"); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2676 |
- else |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2677 |
- scr_muc_nick_color(nick, color); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2678 |
- free_arg_lst(arglist); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2679 |
- } else |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2680 |
- scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!"); |
a2f3afbc4000
[cmdopts] convert /color
Myhailo Danylenko <isbear@ukrpost.net>
parents:
66
diff
changeset
|
2681 |
- free_arg_lst(paramlst); |
74 | 2682 |
+ } else if (subcmd == scmd_color_muc) { |
2683 |
+ scr_muc_color ( options -> cmds[1] -> args[0] -> value.arg, |
|
2684 |
+ options -> cmds[1] -> args[1] -> value.uint ); |
|
2685 |
+ } else { // scmd_color_mucnick |
|
2686 |
+ scr_muc_nick_color( options -> cmds[2] -> args[0] -> value.arg, |
|
2687 |
+ options -> cmds[2] -> args[1] -> value.arg ); |
|
66 | 2688 |
+ } |
2689 |
+ |
|
74 | 2690 |
+ return NULL; |
66 | 2691 |
} |
2692 |
||
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2693 |
-// cmd_setstatus(recipient, arg) |
74 | 2694 |
+// |
2695 |
+// /status |
|
2696 |
+// |
|
2697 |
+ |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2698 |
+// FIXME: this should go to xmpp_iq, that uses it |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2699 |
+// cmd_setstatus(recipient, status, message) |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2700 |
// Set your Jabber status. |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2701 |
-// - 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
|
2702 |
-// - 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
|
2703 |
-void cmd_setstatus(const char *recipient, const char *arg) |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2704 |
+// 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
|
2705 |
+void cmd_setstatus(const char *recipient, const char *status, const char *msg) |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2706 |
{ |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2707 |
- char **paramlst; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2708 |
- char *status; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2709 |
- char *msg; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2710 |
enum imstatus st; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2711 |
|
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2712 |
if (!xmpp_is_online()) |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2713 |
@@ -1000,15 +1596,15 @@ |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2714 |
if (!recipient) |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2715 |
scr_check_auto_away(TRUE); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2716 |
|
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2717 |
- paramlst = split_arg(arg, 2, 1); // status, message |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2718 |
- status = *paramlst; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2719 |
- msg = *(paramlst+1); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2720 |
- |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2721 |
if (!status) { |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2722 |
- free_arg_lst(paramlst); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2723 |
return; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2724 |
} |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2725 |
|
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2726 |
+ // Use provided message |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2727 |
+ if (msg && !*msg) { |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2728 |
+ msg = NULL; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2729 |
+ } |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2730 |
+ |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2731 |
if (!strcasecmp(status, IMSTATUS_OFFLINE)) st = offline; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2732 |
else if (!strcasecmp(status, IMSTATUS_ONLINE)) st = available; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2733 |
else if (!strcasecmp(status, IMSTATUS_AVAILABLE)) st = available; |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2734 |
@@ -1020,229 +1616,351 @@ |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2735 |
else if (!strcasecmp(status, IMSTATUS_NOTAVAILABLE)) st = notavail; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2736 |
else if (!strcasecmp(status, IMSTATUS_FREE4CHAT)) st = freeforchat; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2737 |
else if (!strcasecmp(status, "message")) { |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2738 |
- if (!msg || !*msg) { |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2739 |
+ if (!msg) { |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2740 |
// We want a message. If there's none, we give up. |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2741 |
scr_LogPrint(LPRINT_NORMAL, "Missing parameter."); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2742 |
- free_arg_lst(paramlst); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2743 |
return; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2744 |
} |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2745 |
st = xmpp_getstatus(); // Preserve current status |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2746 |
} else { |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2747 |
scr_LogPrint(LPRINT_NORMAL, "Unrecognized status!"); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2748 |
- free_arg_lst(paramlst); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2749 |
return; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2750 |
} |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2751 |
|
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2752 |
- // Use provided message |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2753 |
- if (msg && !*msg) { |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2754 |
- msg = NULL; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2755 |
- } |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2756 |
- |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2757 |
// If a recipient is specified, let's don't use default status messages |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2758 |
if (recipient && !msg) |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2759 |
msg = ""; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2760 |
|
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2761 |
xmpp_setstatus(st, recipient, msg, FALSE); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2762 |
- |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2763 |
- free_arg_lst(paramlst); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2764 |
} |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2765 |
|
74 | 2766 |
-static void do_status(char *arg) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2767 |
+// custom type |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2768 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2769 |
+// needs corresponding s2e in chkdata |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2770 |
+static gchar *cmdarg_check_status_status (cmdarg_t *arg) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2771 |
{ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2772 |
- if (!*arg) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2773 |
+ gchar *error; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2774 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2775 |
+ if (!g_strcmp0(arg, "message")) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2776 |
+ arg -> value.uint = xmpp_getstatus(); // Preserve current status |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2777 |
+ return NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2778 |
+ } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2779 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2780 |
+ return cmdarg_check_string2enum (arg); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2781 |
+} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2782 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2783 |
+static const cmdarg_type_t cmdarg_type_status_status = { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2784 |
+ cmdarg_check_status_status, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2785 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2786 |
+ NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2787 |
+}; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2788 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2789 |
+// command |
74 | 2790 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2791 |
+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
|
2792 |
+ { "away", away }, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2793 |
+ { "offline", offline }, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2794 |
+ { "online", available }, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2795 |
+ { "avail", available }, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2796 |
+ { "notavail", notavail }, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2797 |
+ { "dnd", dontdisturb }, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2798 |
+ { "free", freeforchat }, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2799 |
+#ifdef WITH_DEPRECATED_STATUS_INVISIBLE |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2800 |
+ { "invisible", invisible }, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2801 |
+#endif |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2802 |
+ // XXX ugly |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2803 |
+ { "show", imstatus_size}, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2804 |
+ { NULL, 0 }, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2805 |
+}; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2806 |
+ |
74 | 2807 |
+cmdopts_t def_status = { |
2808 |
+ "status", |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2809 |
+ cmd_default, // XXX |
74 | 2810 |
+ NULL, |
2811 |
+ do_status, |
|
2812 |
+ NULL, |
|
2813 |
+ { |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2814 |
+ {"status", cmdarg_chreq, "show", &cmdarg_type_status_status, (gpointer)s2e_status2}, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2815 |
+ {"message", cmdarg_eol, NULL, cmdarg_type_nonspace}, |
74 | 2816 |
+ NULL, |
2817 |
+ }, |
|
2818 |
+ NULL, |
|
2819 |
+}; |
|
2820 |
+ |
|
2821 |
+static gchar *do_status(cmdopts_t *options) |
|
75
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 |
+ if (options -> args[0] -> 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
|
2824 |
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
|
2825 |
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
|
2826 |
imstatus2char[xmpp_getstatus()], |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2827 |
(sm ? sm : "")); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2828 |
+ } else { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2829 |
+ if (!xmpp_is_online()) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2830 |
+ scr_LogPrint(LPRINT_NORMAL, "You are currently not connected..."); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2831 |
+ scr_check_auto_away(TRUE); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2832 |
+ xmpp_setstatus(options -> args[0] -> value.uint, NULL, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2833 |
+ options -> args[1] -> value.arg, FALSE); |
74 | 2834 |
+ } |
2835 |
+ return NULL; |
|
2836 |
+} |
|
2837 |
+ |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2838 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2839 |
+// /status_to |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2840 |
+// |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2841 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2842 |
+// no "show" here |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2843 |
+static const string2enum_t s2e_status[] = { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2844 |
+ { "away", away }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2845 |
+ { "offline", offline }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2846 |
+ { "online", available }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2847 |
+ { "avail", available }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2848 |
+ { "notavail", notavail }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2849 |
+ { "dnd", dontdisturb }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2850 |
+ { "free", freeforchat }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2851 |
+#ifdef WITH_DEPRECATED_STATUS_INVISIBLE |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2852 |
+ { "invisible", invisible }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2853 |
+#endif |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2854 |
+ { NULL, 0 }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2855 |
+}; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2856 |
+ |
74 | 2857 |
+cmdopts_t def_status_to = { |
2858 |
+ "status_to", |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2859 |
+ cmd_default, // XXX |
74 | 2860 |
+ NULL, |
2861 |
+ do_status_to, |
|
2862 |
+ NULL, |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2863 |
+ { |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2864 |
+ {"jid", cmdarg_chreq, NULL, cmdarg_type_fjid}, |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2865 |
+ {"status", cmdarg_chreq, NULL, &cmdarg_type_status_status, (string2enum_t)s2e_status}, |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2866 |
+ {"message", cmdarg_eol, NULL, cmdarg_type_nonspace}, |
74 | 2867 |
+ NULL, |
2868 |
+ }, |
|
2869 |
+ NULL, |
|
2870 |
+}; |
|
2871 |
+ |
|
2872 |
+static gchar *do_status_to(cmdopts_t *options) |
|
2873 |
+{ |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2874 |
+ const char *fjid, *stname, *msg; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2875 |
+ enum imstatus st; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2876 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2877 |
+ fjid = options -> args[0] -> value.arg; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2878 |
+ st = options -> args[1] -> value.uint; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2879 |
+ msg = options -> args[2] -> value.arg; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2880 |
+ |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2881 |
+ { // get status name |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2882 |
+ const string2enum_t *list; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2883 |
+ 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
|
2884 |
+ if (list -> value == st) { |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2885 |
+ stname = list -> name; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2886 |
+ break; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2887 |
+ } |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2888 |
+ } |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
2889 |
+ // prevent default status message |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2890 |
+ msg = msg ? msg : ""; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2891 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2892 |
+ scr_LogPrint(LPRINT_LOGNORM, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2893 |
+ "Sending to <%s> /status %s %s", fjid, stname, msg); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2894 |
+ if (!xmpp_is_online()) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2895 |
+ scr_LogPrint(LPRINT_NORMAL, "You are currently not connected..."); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2896 |
+ xmpp_setstatus(st, fjid, msg, FALSE); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2897 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2898 |
+ return NULL |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2899 |
+} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2900 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2901 |
+#if 0 |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2902 |
+static void do_add(char *arg) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2903 |
+{ |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2904 |
+ cmdopts_t options = { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2905 |
+ "add", |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2906 |
+ NULL, |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2907 |
+ (cmdarg_t[2]){ |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
2908 |
+ // jid |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2909 |
+ { 0, { .arg = "." } }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2910 |
+ // rostername |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2911 |
+ { CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, { .arg = NULL } }, |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2912 |
+ }, |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2913 |
+ NULL, |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2914 |
+ }; |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2915 |
+ gchar *jid, *nick; |
74 | 2916 |
+ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2917 |
+ if (!xmpp_is_online()) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2918 |
+ scr_LogPrint(LPRINT_NORMAL, "You are not connected."); |
74 | 2919 |
return; |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2920 |
} |
74 | 2921 |
- arg = to_utf8(arg); |
2922 |
- cmd_setstatus(NULL, arg); |
|
2923 |
- g_free(arg); |
|
2924 |
-} |
|
2925 |
- |
|
2926 |
-static void do_status_to(char *arg) |
|
2927 |
-{ |
|
2928 |
- char **paramlst; |
|
2929 |
- char *fjid, *st, *msg; |
|
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2930 |
- char *jid_utf8 = NULL; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2931 |
- |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2932 |
- paramlst = split_arg(arg, 3, 1); // jid, status, [message] |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2933 |
- fjid = *paramlst; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2934 |
- st = *(paramlst+1); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2935 |
- msg = *(paramlst+2); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2936 |
- |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2937 |
- if (!fjid || !st) { |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2938 |
- scr_LogPrint(LPRINT_NORMAL, |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2939 |
- "Please specify both a Jabber ID and a status."); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2940 |
- 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
|
2941 |
+ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2942 |
+ if (cmdopts_parse(arg, &options)) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2943 |
return; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2944 |
- } |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2945 |
- |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2946 |
- // Allow things like /status_to "" away |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2947 |
- if (!*fjid || !strcmp(fjid, ".")) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2948 |
- fjid = NULL; |
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 |
- if (fjid) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2951 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2952 |
+ jid = options.args[0].value.arg; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2953 |
+ nick = options.args[1].value.arg; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2954 |
+ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2955 |
+ if (jid && (!*jid || !strcmp(jid, "."))) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2956 |
+ jid = NULL; |
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 |
+ if (jid) { |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2959 |
// The JID has been specified. Quick check... |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2960 |
- if (check_jid_syntax(fjid)) { |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2961 |
- 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
|
2962 |
- "<%s> is not a valid Jabber ID.", fjid); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2963 |
- fjid = NULL; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2964 |
+ if (check_jid_syntax(jid)) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2965 |
+ scr_LogPrint(LPRINT_NORMAL, "<%s> is not a valid Jabber ID.", jid); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2966 |
+ jid = NULL; |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2967 |
} else { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2968 |
- // Convert jid to lowercase |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2969 |
- char *p = fjid; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2970 |
- for ( ; *p && *p != JID_RESOURCE_SEPARATOR; p++) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2971 |
- *p = tolower(*p); |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2972 |
- fjid = jid_utf8 = to_utf8(fjid); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2973 |
+ mc_strtolower(jid); |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2974 |
} |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2975 |
} else { |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2976 |
// Add the current buddy |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2977 |
if (current_buddy) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2978 |
- fjid = (char*)buddy_getjid(BUDDATA(current_buddy)); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2979 |
- if (!fjid) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2980 |
+ jid = (char*)buddy_getjid(BUDDATA(current_buddy)); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2981 |
+ if (!jid) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2982 |
scr_LogPrint(LPRINT_NORMAL, "Please specify a Jabber ID."); |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2983 |
} |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2984 |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2985 |
- if (fjid) { |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2986 |
- char *cmdline; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2987 |
- if (!msg) |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2988 |
- msg = ""; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2989 |
- msg = to_utf8(msg); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2990 |
- 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
|
2991 |
- 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
|
2992 |
- cmd_setstatus(fjid, cmdline); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2993 |
- g_free(msg); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2994 |
- g_free(cmdline); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
2995 |
- g_free(jid_utf8); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2996 |
+ if (jid) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2997 |
+ // 2nd parameter = optional nickname |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2998 |
+ xmpp_addbuddy(jid, nick, NULL); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
2999 |
+ scr_LogPrint(LPRINT_LOGNORM, "Sent presence notification request to <%s>.", |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3000 |
+ jid); |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3001 |
} |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3002 |
- free_arg_lst(paramlst); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3003 |
+ |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3004 |
+ cmdopts_free(&options); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3005 |
} |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3006 |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3007 |
-static void do_add(char *arg) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3008 |
+static void do_del(char *arg) |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3009 |
{ |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3010 |
- char **paramlst; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3011 |
- char *id, *nick; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3012 |
- char *jid_utf8 = NULL; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3013 |
+ cmdopts_t options = { |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3014 |
+ "del", |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3015 |
+ (cmdopt_t[1]){ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3016 |
+ { CMDOPT_SWITCH | CMDOPT_LAST, 'n', "dryrun", { .swc = 0 } }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3017 |
+ }, |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3018 |
+ (cmdarg_t[1]){ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3019 |
+ { CMDOPT_LAST, { .arg = "." } }, // jid |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3020 |
+ }, |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3021 |
+ NULL, |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3022 |
+ }; |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3023 |
+ gchar *jid; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3024 |
+ gpointer buddy; |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3025 |
|
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3026 |
if (!xmpp_is_online()) { |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3027 |
scr_LogPrint(LPRINT_NORMAL, "You are not connected."); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3028 |
return; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3029 |
} |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3030 |
|
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3031 |
- 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
|
3032 |
- id = *paramlst; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3033 |
- nick = *(paramlst+1); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3034 |
- |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3035 |
- if (!id) |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3036 |
- 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
|
3037 |
- 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
|
3038 |
- id = NULL; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3039 |
- |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3040 |
- if (id) { |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3041 |
+ if (cmdopts_parse(arg, &options)) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3042 |
+ return; |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3043 |
+ |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3044 |
+ jid = options.args[0].value.arg; |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3045 |
+ |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3046 |
+ if (jid && (!*jid || !strcmp(jid, "."))) |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3047 |
+ jid = NULL; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3048 |
+ |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3049 |
+ if (jid) { |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3050 |
// The JID has been specified. Quick check... |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3051 |
- 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
|
3052 |
- 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
|
3053 |
- "<%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
|
3054 |
- id = NULL; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3055 |
+ if (check_jid_syntax(jid)) { |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3056 |
+ scr_LogPrint(LPRINT_NORMAL, "<%s> is not a valid Jabber ID.", jid); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3057 |
+ jid = NULL; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3058 |
} else { |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3059 |
- mc_strtolower(id); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3060 |
- id = jid_utf8 = to_utf8(id); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3061 |
+ GSList *found; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3062 |
+ mc_strtolower(jid); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3063 |
+ found = roster_find(jid, jidsearch, ROSTER_TYPE_USER | |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3064 |
+ ROSTER_TYPE_AGENT | ROSTER_TYPE_GROUP); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3065 |
+ if (!found) { |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3066 |
+ scr_log_print(LPRINT_NORMAL, "Jabber ID <%s> is not in roster.", jid); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3067 |
+ jid = NULL; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3068 |
+ } else { |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3069 |
+ buddy = found -> data; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3070 |
+ } |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3071 |
} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3072 |
} else { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3073 |
- // Add the current buddy |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3074 |
+ // Use current buddy |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3075 |
if (current_buddy) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3076 |
- id = (char*)buddy_getjid(BUDDATA(current_buddy)); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3077 |
- if (!id) |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3078 |
+ jid = (char*)buddy_getjid(BUDDATA(current_buddy)); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3079 |
+ if (!jid) |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3080 |
scr_LogPrint(LPRINT_NORMAL, "Please specify a Jabber ID."); |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3081 |
+ else |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3082 |
+ buddy = BUDDATA(current_buddy); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3083 |
} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3084 |
|
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3085 |
- if (nick) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3086 |
- nick = to_utf8(nick); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3087 |
- |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3088 |
- if (id) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3089 |
- // 2nd parameter = optional nickname |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3090 |
- xmpp_addbuddy(id, nick, NULL); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3091 |
- scr_LogPrint(LPRINT_LOGNORM, "Sent presence notification request to <%s>.", |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3092 |
- id); |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3093 |
+ if (jid) { |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3094 |
+ if (buddy_gettype(buddy) & ROSTER_TYPE_ROOM) { |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3095 |
+ // This is a chatroom |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3096 |
+ if (buddy_getinsideroom(buddy)) { |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3097 |
+ scr_LogPrint(LPRINT_NORMAL, "You haven't left this room!"); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3098 |
+ cmdopts_free(&options); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3099 |
+ return; |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3100 |
+ } |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3101 |
+ } |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3102 |
+ |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3103 |
+ scr_LogPrint(LPRINT_LOGNORM, "Removing <%s>...", jid); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3104 |
+ |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3105 |
+ if (!options.opts[0].value.swc) { |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3106 |
+ // Close the buffer |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3107 |
+ scr_buffer_purge(1, jid); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3108 |
+ |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3109 |
+ xmpp_delbuddy(jid); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3110 |
+ scr_update_buddy_window(); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3111 |
+ } |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3112 |
} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3113 |
|
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3114 |
- g_free(jid_utf8); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3115 |
- g_free(nick); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3116 |
- free_arg_lst(paramlst); |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
3117 |
+ cmdopts_free(&options); |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3118 |
} |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3119 |
|
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3120 |
-static void do_del(char *arg) |
74 | 3121 |
+#endif |
3122 |
+ |
|
3123 |
+static void group_cmd (gpointer group, group_scmd_t action) |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3124 |
{ |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3125 |
- const char *bjid; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3126 |
- |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3127 |
- if (*arg) { |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3128 |
- 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
|
3129 |
- "the currently-selected buddy will be deleted."); |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3130 |
- return; |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3131 |
- } |
74 | 3132 |
+ // We'll have to redraw the chat window if we're not currently on the group |
3133 |
+ // entry itself, because it means we'll have to leave the current buddy |
|
3134 |
+ // chat window. |
|
3135 |
+ if (action != scmd_group_unfold && |
|
3136 |
+ ((!current_buddy) || |
|
3137 |
+ (group != BUDDATA(current_buddy) && |
|
3138 |
+ group == buddy_getgroup(BUDDATA(current_buddy))))) |
|
3139 |
+ scr_roster_prev_group(); |
|
3140 |
+ |
|
3141 |
+ buddy_hide_group(group, action); |
|
3142 |
+ |
|
3143 |
+ buddylist_build(); |
|
3144 |
+ update_roster = TRUE; |
|
3145 |
+} |
|
3146 |
+ |
|
3147 |
+#if 0 |
|
3148 |
+ |
|
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3149 |
+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
|
3150 |
+{ |
74 | 3151 |
+ scmd_group_t subcmd; |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3152 |
+ cmdopts_t options = { |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3153 |
+ "group", |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3154 |
+ NULL, |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3155 |
+ (cmdarg_t[1]){ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3156 |
+ { CMDOPT_REQUIRED | CMDOPT_SUBCOMMAND | CMDOPT_LAST, { .cmd = NULL } }, |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3157 |
+ }, |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3158 |
+ // all of them have one argument - group name |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3159 |
+#define GROUP_SUBCMD(NAME, REALNAME, FLAGS) \ |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3160 |
+ { #NAME, NULL, (cmdarg_t[1]){ \ |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3161 |
+ { CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, { .arg = NULL } }, \ |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3162 |
+ }, NULL, (gpointer)group_scmd_##REALNAME, FLAGS } |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3163 |
+ (cmdopts_t[5]){ |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3164 |
+ GROUP_SUBCMD(expand, unfold, 0), |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3165 |
+ GROUP_SUBCMD(unfold, unfold, 0), |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3166 |
+ GROUP_SUBCMD(shrink, fold, 0), |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3167 |
+ GROUP_SUBCMD(fold, fold, 0), |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3168 |
+ GROUP_SUBCMD(toggle, toggle, CMDOPT_LAST), |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3169 |
+ }, |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3170 |
+ }; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3171 |
+ gchar *name; |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3172 |
+ 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
|
3173 |
+ guint leave_buddywindow; |
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
3174 |
|
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3175 |
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
|
3176 |
return; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3177 |
- 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
|
3178 |
- if (!bjid) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3179 |
+ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3180 |
+ if (cmdopts_parse(arg, &options)) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3181 |
return; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3182 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3183 |
- 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
|
3184 |
- // 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
|
3185 |
- 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
|
3186 |
- 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
|
3187 |
- return; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3188 |
- } |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3189 |
- } |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3190 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3191 |
- // 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
|
3192 |
- 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
|
3193 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3194 |
- 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
|
3195 |
- 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
|
3196 |
- 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
|
3197 |
-} |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3198 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3199 |
-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
|
3200 |
-{ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3201 |
- 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
|
3202 |
- guint leave_buddywindow; |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3203 |
- char **paramlst; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3204 |
- char *subcmd; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3205 |
- 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
|
3206 |
- |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3207 |
- if (!*arg) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3208 |
- scr_LogPrint(LPRINT_NORMAL, "Missing parameter."); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3209 |
- return; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3210 |
- } |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3211 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3212 |
- 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
|
3213 |
- return; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3214 |
- |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3215 |
- paramlst = split_arg(arg, 2, 0); // subcmd, [arg] |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3216 |
- subcmd = *paramlst; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3217 |
- arg = *(paramlst+1); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3218 |
- |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3219 |
- if (!subcmd || !*subcmd) |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3220 |
- goto do_group_return; // Should not happen |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3221 |
- |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3222 |
- if (!strcasecmp(subcmd, "expand") || !strcasecmp(subcmd, "unfold")) |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3223 |
- group_state = group_unfold; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3224 |
- else if (!strcasecmp(subcmd, "shrink") || !strcasecmp(subcmd, "fold")) |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3225 |
- group_state = group_fold; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3226 |
- else if (!strcasecmp(subcmd, "toggle")) |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3227 |
- group_state = group_toggle; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3228 |
- else { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3229 |
- scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!"); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3230 |
- 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
|
3231 |
- } |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3232 |
- |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3233 |
- if (arg && *arg) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3234 |
+ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3235 |
+ subcmd = (enum group_scmd_t) options.args[0].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
|
3236 |
+ name = options.args[0].value.cmd -> args[0].value.arg; |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3237 |
+ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3238 |
+ if (name && *name) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3239 |
GSList *roster_elt; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3240 |
- char *group_utf8 = to_utf8(arg); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3241 |
- 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
|
3242 |
- g_free(group_utf8); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3243 |
+ roster_elt = roster_find(name, namesearch, ROSTER_TYPE_GROUP); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3244 |
if (roster_elt) |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3245 |
group = buddy_getgroup(roster_elt->data); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3246 |
} else { |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3247 |
@@ -1253,31 +1971,19 @@ |
74 | 3248 |
goto do_group_return; |
3249 |
} |
|
3250 |
||
3251 |
- // We'll have to redraw the chat window if we're not currently on the group |
|
3252 |
- // entry itself, because it means we'll have to leave the current buddy |
|
3253 |
- // chat window. |
|
3254 |
- leave_buddywindow = (group != BUDDATA(current_buddy) && |
|
3255 |
- group == buddy_getgroup(BUDDATA(current_buddy))); |
|
3256 |
- |
|
3257 |
if (!(buddy_gettype(group) & ROSTER_TYPE_GROUP)) { |
|
3258 |
scr_LogPrint(LPRINT_NORMAL, "You need to select a group."); |
|
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3259 |
goto do_group_return; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3260 |
} |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3261 |
|
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3262 |
- if (group_state != group_unfold && leave_buddywindow) |
74 | 3263 |
- scr_roster_prev_group(); |
3264 |
- |
|
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3265 |
- buddy_hide_group(group, group_state); |
74 | 3266 |
- |
3267 |
- buddylist_build(); |
|
3268 |
- update_roster = TRUE; |
|
3269 |
+ group_cmd (group, subcmd); |
|
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3270 |
|
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3271 |
do_group_return: |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3272 |
- free_arg_lst(paramlst); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3273 |
+ cmdopts_free(&options); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3274 |
} |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3275 |
|
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3276 |
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
|
3277 |
- 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
|
3278 |
+ 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
|
3279 |
{ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3280 |
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
|
3281 |
char *hmsg; |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3282 |
@@ -1285,6 +1991,7 @@ |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3283 |
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
|
3284 |
int isroom; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3285 |
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
|
3286 |
+ 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
|
3287 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3288 |
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
|
3289 |
scr_LogPrint(LPRINT_NORMAL, "You are not connected."); |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3290 |
@@ -1299,11 +2006,15 @@ |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3291 |
return 1; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3292 |
} |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3293 |
if (check_jid_syntax((char*)fjid)) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3294 |
- scr_LogPrint(LPRINT_NORMAL|LPRINT_NOTUTF8, |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3295 |
- "<%s> is not a valid Jabber ID.", fjid); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3296 |
+ 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
|
3297 |
return 1; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3298 |
} |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3299 |
|
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3300 |
+ 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
|
3301 |
+ 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
|
3302 |
+ 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
|
3303 |
+ 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
|
3304 |
+ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3305 |
// 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
|
3306 |
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
|
3307 |
if (rp) |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3308 |
@@ -1354,8 +2065,7 @@ |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3309 |
// send_message(msg, subj, type_overwrite) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3310 |
// Write the message in the buddy's window and send the message on |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3311 |
// the network. |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3312 |
-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
|
3313 |
- LmMessageSubType type_overwrite) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3314 |
+static void send_message(const char *msg, const char *subj, msgtype_t msgtype) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3315 |
{ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3316 |
const char *bjid; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3317 |
char *jid; |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3318 |
@@ -1378,34 +2088,13 @@ |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3319 |
else |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3320 |
jid = g_strdup(bjid); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3321 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3322 |
- send_message_to(jid, msg, subj, type_overwrite, FALSE); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3323 |
+ send_message_to(jid, msg, subj, msgtype, FALSE); |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3324 |
g_free(jid); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3325 |
} |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3326 |
|
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3327 |
-static LmMessageSubType scan_mtype(char **arg) |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3328 |
-{ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3329 |
- // Try splitting it |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3330 |
- char **parlist = split_arg(*arg, 2, 1); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3331 |
- LmMessageSubType result = LM_MESSAGE_SUB_TYPE_NOT_SET; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3332 |
- // Is it a good parameter? |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3333 |
- if (parlist && *parlist) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3334 |
- if (!strcmp("-n", *parlist)) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3335 |
- result = LM_MESSAGE_SUB_TYPE_NORMAL; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3336 |
- } else if (!strcmp("-h", *parlist)) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3337 |
- result = LM_MESSAGE_SUB_TYPE_HEADLINE; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3338 |
- } |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3339 |
- 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
|
3340 |
- *arg += strlen(*arg) - (parlist[1] ? strlen(parlist[1]) : 0); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3341 |
- } |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3342 |
- // Anything found? -> skip it |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3343 |
- free_arg_lst(parlist); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3344 |
- return result; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3345 |
-} |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3346 |
- |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3347 |
-void say_cmd(char *arg, int parse_flags) |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3348 |
+void say_cmd(char *arg, msgtype_t msgtype) |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3349 |
{ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3350 |
gpointer bud; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3351 |
- LmMessageSubType msgtype = LM_MESSAGE_SUB_TYPE_NOT_SET; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3352 |
|
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3353 |
scr_set_chatmode(TRUE); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3354 |
scr_show_buddy_window(); |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3355 |
@@ -1424,80 +2113,131 @@ |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3356 |
} |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3357 |
|
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3358 |
buddy_setflags(bud, ROSTER_FLAG_LOCK, TRUE); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3359 |
- if (parse_flags) |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3360 |
- msgtype = scan_mtype(&arg); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3361 |
- arg = to_utf8(arg); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3362 |
send_message(arg, NULL, msgtype); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3363 |
- g_free(arg); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3364 |
} |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3365 |
|
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3366 |
static void do_say(char *arg) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3367 |
- say_cmd(arg, 1); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3368 |
+ cmdopts_t options = { |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3369 |
+ "say", |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3370 |
+ (cmdopt_t[2]){ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3371 |
+ { CMDOPT_SWITCH, 'n', "normal", { .swc = 0 } }, |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3372 |
+ { CMDOPT_SWITCH | CMDOPT_LAST, 'h', "headline", { .swc = 0 } }, |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3373 |
+ }, |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3374 |
+ (cmdarg_t[1]){ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3375 |
+ { CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_REQUIRED | CMDOPT_LAST, |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3376 |
+ { .arg = NULL } }, |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3377 |
+ }, |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3378 |
+ NULL, |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3379 |
+ }; |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3380 |
+ msgtype_t msgtype = 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
|
3381 |
+ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3382 |
+ if (cmdopts_parse(arg, &options)) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3383 |
+ return; |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3384 |
+ |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3385 |
+ if (options.opts[0].value.swc) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3386 |
+ msgtype = msgtype_normal; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3387 |
+ else if (options.opts[1].value.swc) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3388 |
+ msgtype = msgtype_headline; |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3389 |
+ |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3390 |
+ say_cmd(options.args[0].value.arg, msgtype); |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3391 |
+ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3392 |
+ cmdopts_free(&options); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3393 |
} |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3394 |
|
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3395 |
static void do_msay(char *arg) |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3396 |
{ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3397 |
- /* Parameters: begin verbatim abort send send_to */ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3398 |
- char **paramlst; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3399 |
- char *subcmd; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3400 |
- |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3401 |
- paramlst = split_arg(arg, 2, 1); // subcmd, arg |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3402 |
- subcmd = *paramlst; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3403 |
- arg = *(paramlst+1); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3404 |
- |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3405 |
- if (!subcmd || !*subcmd) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3406 |
- scr_LogPrint(LPRINT_NORMAL, "Missing parameter."); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3407 |
- 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
|
3408 |
- "the /msay command."); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3409 |
- scr_LogPrint(LPRINT_NORMAL, "(Use \"%s begin\" to enter " |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3410 |
- "multi-line mode...)", mkcmdstr("msay")); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3411 |
- goto do_msay_return; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3412 |
+ enum msay_scmd_t { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3413 |
+ msay_scmd_begin, msay_scmd_verbatim, |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3414 |
+ msay_scmd_send, msay_scmd_send_to, |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3415 |
+ msay_scmd_toggle, msay_scmd_toggle_verbatim, |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3416 |
+ msay_scmd_abort, |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3417 |
+ } subcmd; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3418 |
+ cmdopts_t options = { |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3419 |
+ "msay", |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3420 |
+ NULL, |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3421 |
+ (cmdarg_t[1]){ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3422 |
+ // subcommand |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3423 |
+ { CMDOPT_SUBCOMMAND | CMDOPT_REQUIRED | CMDOPT_LAST, { .cmd = NULL } }, |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3424 |
+ }, |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3425 |
+ (cmdopts_t[7]){ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3426 |
+ { "begin", NULL, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3427 |
+ (cmdarg_t[1]){ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3428 |
+ // subject |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3429 |
+ { CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, { .arg = NULL } }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3430 |
+ }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3431 |
+ NULL, (gpointer)msay_scmd_begin, 0 }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3432 |
+ { "verbatim", NULL, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3433 |
+ (cmdarg_t[1]){ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3434 |
+ // subject |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3435 |
+ { CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, { .arg = NULL } }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3436 |
+ }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3437 |
+ NULL, (gpointer)msay_scmd_verbatim, 0 }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3438 |
+ { "send", |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3439 |
+ (cmdopt_t[2]){ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3440 |
+ { CMDOPT_SWITCH, 'n', "normal", { .swc = 0 } }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3441 |
+ { CMDOPT_SWITCH | CMDOPT_LAST, 'h', "headline", { .swc = 0 } }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3442 |
+ }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3443 |
+ NULL, NULL, (gpointer)msay_scmd_send, 0 }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3444 |
+ { "send_to", |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3445 |
+ (cmdopt_t[2]){ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3446 |
+ { CMDOPT_SWITCH, 'n', "normal", { .swc = 0 } }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3447 |
+ { CMDOPT_SWITCH | CMDOPT_LAST, 'h', "headline", { .swc = 0 } }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3448 |
+ }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3449 |
+ (cmdarg_t[1]){ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3450 |
+ // jid |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3451 |
+ { CMDOPT_REQUIRED | CMDOPT_LAST, { .arg = NULL } }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3452 |
+ }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3453 |
+ NULL, (gpointer)msay_scmd_send_to, 0 }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3454 |
+ { "toggle", NULL, NULL, NULL, (gpointer)msay_scmd_toggle, 0 }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3455 |
+ { "toggle_verbatim", NULL, NULL, NULL, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3456 |
+ (gpointer)msay_scmd_toggle_verbatim, 0 }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3457 |
+ { "abort", NULL, NULL, NULL, (gpointer)msay_scmd_abort, CMDOPT_LAST }, |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3458 |
+ }, |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3459 |
+ }; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3460 |
+ const char *msg; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3461 |
+ |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3462 |
+ if (cmdopts_parse(arg, &options)) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3463 |
+ return; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3464 |
+ |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3465 |
+ subcmd = (enum msay_scmd_t) options.args[0].value.cmd -> userdata; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3466 |
+ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3467 |
+ if (subcmd == msay_scmd_toggle) { |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3468 |
+ if (scr_get_multimode()) |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3469 |
+ subcmd = msay_scmd_send; |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3470 |
+ else |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3471 |
+ subcmd = msay_scmd_begin; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3472 |
+ } else if (subcmd == msay_scmd_toggle_verbatim) { |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3473 |
+ if (scr_get_multimode()) |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3474 |
+ subcmd = msay_scmd_send; |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3475 |
+ else |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3476 |
+ subcmd = msay_scmd_verbatim; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3477 |
} |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3478 |
|
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3479 |
- 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
|
3480 |
- 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
|
3481 |
- subcmd = "send"; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3482 |
- else |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3483 |
- subcmd = "begin"; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3484 |
- } 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
|
3485 |
- 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
|
3486 |
- subcmd = "send"; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3487 |
- else |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3488 |
- subcmd = "verbatim"; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3489 |
- } |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3490 |
- |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3491 |
- if (!strcasecmp(subcmd, "abort")) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3492 |
+ if (subcmd == msay_scmd_abort) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3493 |
if (scr_get_multimode()) |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3494 |
scr_LogPrint(LPRINT_NORMAL, "Leaving multi-line message mode."); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3495 |
scr_set_multimode(FALSE, NULL); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3496 |
goto do_msay_return; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3497 |
- } else if ((!strcasecmp(subcmd, "begin")) || |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3498 |
- (!strcasecmp(subcmd, "verbatim"))) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3499 |
- bool verbat; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3500 |
- gchar *subj_utf8 = to_utf8(arg); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3501 |
- if (!strcasecmp(subcmd, "verbatim")) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3502 |
- scr_set_multimode(2, subj_utf8); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3503 |
- verbat = TRUE; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3504 |
+ } else if (subcmd == msay_scmd_begin || subcmd == msay_scmd_verbatim) { |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3505 |
+ gchar *subject = options.args[0].value.cmd -> args[0].value.arg; |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3506 |
+ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3507 |
+ if (subcmd == msay_scmd_verbatim) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3508 |
+ scr_set_multimode(2, subject); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3509 |
} else { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3510 |
- scr_set_multimode(1, subj_utf8); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3511 |
- verbat = FALSE; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3512 |
+ scr_set_multimode(1, subject); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3513 |
} |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3514 |
|
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3515 |
scr_LogPrint(LPRINT_NORMAL, "Entered %smulti-line message mode.", |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3516 |
- verbat ? "VERBATIM " : ""); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3517 |
+ subcmd == msay_scmd_verbatim ? "VERBATIM " : ""); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3518 |
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
|
3519 |
"when your message is ready.", mkcmdstr("msay")); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3520 |
- if (verbat) |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3521 |
+ if (subcmd == msay_scmd_verbatim) |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3522 |
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
|
3523 |
mkcmdstr("msay")); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3524 |
- g_free(subj_utf8); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3525 |
- goto do_msay_return; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3526 |
- } else if (strcasecmp(subcmd, "send") && strcasecmp(subcmd, "send_to")) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3527 |
- scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!"); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3528 |
goto do_msay_return; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3529 |
} |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3530 |
|
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3531 |
- /* send/send_to command */ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3532 |
+ /* msay_scmd_send or msay_scmd_send_to */ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3533 |
|
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3534 |
if (!scr_get_multimode()) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3535 |
scr_LogPrint(LPRINT_NORMAL, "No message to send. " |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3536 |
@@ -1508,49 +2248,47 @@ |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3537 |
scr_set_chatmode(TRUE); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3538 |
scr_show_buddy_window(); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3539 |
|
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3540 |
- if (!strcasecmp(subcmd, "send_to")) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3541 |
- int err = FALSE; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3542 |
- gchar *msg_utf8; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3543 |
- LmMessageSubType msg_type = scan_mtype(&arg); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3544 |
- // 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
|
3545 |
- // 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
|
3546 |
- arg = to_utf8(arg); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3547 |
- msg_utf8 = to_utf8(scr_get_multiline()); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3548 |
- if (msg_utf8) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3549 |
- 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
|
3550 |
- FALSE); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3551 |
- g_free(msg_utf8); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3552 |
- } |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3553 |
- g_free(arg); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3554 |
- if (err) |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3555 |
- goto do_msay_return; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3556 |
- } else { // Send to currently selected buddy |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3557 |
- gpointer bud; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3558 |
- gchar *msg_utf8; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3559 |
- |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3560 |
- if (!current_buddy) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3561 |
- scr_LogPrint(LPRINT_NORMAL, "Whom are you talking to?"); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3562 |
- goto do_msay_return; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3563 |
- } |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3564 |
- |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3565 |
- bud = BUDDATA(current_buddy); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3566 |
- if (!(buddy_gettype(bud) & |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3567 |
- (ROSTER_TYPE_USER|ROSTER_TYPE_AGENT|ROSTER_TYPE_ROOM))) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3568 |
- scr_LogPrint(LPRINT_NORMAL, "This is not a user."); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3569 |
- goto do_msay_return; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3570 |
- } |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3571 |
- |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3572 |
- buddy_setflags(bud, ROSTER_FLAG_LOCK, TRUE); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3573 |
- msg_utf8 = to_utf8(scr_get_multiline()); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3574 |
- if (msg_utf8) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3575 |
- 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
|
3576 |
- g_free(msg_utf8); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3577 |
+ if ((msg = scr_get_multiline())) { |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3578 |
+ msgtype_t msg_type = msgtype_not_set; |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3579 |
+ |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3580 |
+ if (options.args[0].value.cmd -> opts[0].value.swc) // n |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3581 |
+ 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
|
3582 |
+ else if (options.args[0].value.cmd -> opts[1].value.swc) // h |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3583 |
+ msg_type = msgtype_headline; |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3584 |
+ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3585 |
+ if (subcmd == msay_scmd_send_to) { |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3586 |
+ const char *jid = options.cmds[3].args[0].value.arg; |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3587 |
+ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3588 |
+ // 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
|
3589 |
+ // 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
|
3590 |
+ 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
|
3591 |
+ msg_type, FALSE)) |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3592 |
+ goto do_msay_return; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3593 |
+ } else { // Send to currently selected buddy |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3594 |
+ gpointer bud; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3595 |
+ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3596 |
+ if (!current_buddy) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3597 |
+ scr_LogPrint(LPRINT_NORMAL, "Whom are you talking to?"); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3598 |
+ goto do_msay_return; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3599 |
+ } |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3600 |
+ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3601 |
+ bud = BUDDATA(current_buddy); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3602 |
+ if (!(buddy_gettype(bud) & |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3603 |
+ (ROSTER_TYPE_USER|ROSTER_TYPE_AGENT|ROSTER_TYPE_ROOM))) { |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3604 |
+ scr_LogPrint(LPRINT_NORMAL, "This is not a user."); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3605 |
+ goto do_msay_return; |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3606 |
+ } |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3607 |
+ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3608 |
+ buddy_setflags(bud, ROSTER_FLAG_LOCK, TRUE); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3609 |
+ send_message(msg, scr_get_multimode_subj(), msg_type); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3610 |
} |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3611 |
} |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3612 |
+ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3613 |
scr_set_multimode(FALSE, NULL); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3614 |
scr_LogPrint(LPRINT_NORMAL, "You have left multi-line message mode."); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3615 |
+ |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3616 |
do_msay_return: |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3617 |
- free_arg_lst(paramlst); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3618 |
+ cmdopts_free(&options); |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3619 |
} |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3620 |
|
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3621 |
// load_message_from_file(filename) |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3622 |
@@ -1566,7 +2304,7 @@ |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3623 |
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
|
3624 |
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
|
3625 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3626 |
- fd = fopen(filename, "r"); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3627 |
+ fd = fopen(filename, "r"); // FIXME g_from_utf8 |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3628 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3629 |
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
|
3630 |
scr_LogPrint(LPRINT_LOGNORM, "Cannot open message file (%s)", filename); |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3631 |
@@ -1634,130 +2372,103 @@ |
65 | 3632 |
|
3633 |
static void do_say_to(char *arg) |
|
3634 |
{ |
|
3635 |
- char **paramlst; |
|
3636 |
- 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
|
3637 |
- char *msg; |
65 | 3638 |
- char *unescaped_msg = NULL; |
3639 |
- char *uncompletedfjid = NULL; |
|
3640 |
- 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
|
3641 |
- LmMessageSubType msg_type = LM_MESSAGE_SUB_TYPE_NOT_SET; |
65 | 3642 |
- bool quiet = FALSE; |
3643 |
- bool eval = FALSE; |
|
3644 |
+ cmdopts_t options = { |
|
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3645 |
+ "say_to", |
65 | 3646 |
+ (cmdopt_t[5]){ |
3647 |
+ { CMDOPT_SWITCH, 'n', "normal", { .swc = 0 } }, |
|
3648 |
+ { CMDOPT_SWITCH, 'h', "headline", { .swc = 0 } }, |
|
3649 |
+ { CMDOPT_SWITCH, 'e', "escapes", { .swc = 0 } }, |
|
3650 |
+ { CMDOPT_SWITCH, 'q', "quiet", { .swc = 0 } }, |
|
3651 |
+ { CMDOPT_LAST, 'f', "file", { .opt = NULL } }, |
|
3652 |
+ }, |
|
3653 |
+ (cmdarg_t[2]){ |
|
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3654 |
+ // jid |
65 | 3655 |
+ { CMDOPT_REQUIRED, { .arg = NULL } }, |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3656 |
+ // message |
65 | 3657 |
+ { CMDOPT_LAST | CMDOPT_PLAIN | CMDOPT_CATCHALL, { .arg = NULL } }, |
3658 |
+ }, |
|
3659 |
+ NULL, |
|
3660 |
+ }; |
|
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3661 |
+ char *fjid, *msg, *file; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3662 |
+ gchar *freeme = NULL; // fjid |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3663 |
+ gchar *freeme2 = NULL; // msg |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3664 |
+ msgtype_t msg_type = msgtype_not_set; |
65 | 3665 |
|
3666 |
if (!xmpp_is_online()) { |
|
3667 |
scr_LogPrint(LPRINT_NORMAL, "You are not connected."); |
|
3668 |
return; |
|
3669 |
} |
|
3670 |
||
3671 |
- msg_type = scan_mtype(&arg); |
|
3672 |
- paramlst = split_arg(arg, 2, 1); // jid, message (or option, jid, message) |
|
3673 |
- |
|
3674 |
- if (!*paramlst) { // No parameter? |
|
3675 |
- scr_LogPrint(LPRINT_NORMAL, "Please specify a Jabber ID."); |
|
3676 |
- 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
|
3677 |
+ if (cmdopts_parse(arg, &options)) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3678 |
return; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3679 |
- } |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3680 |
- |
65 | 3681 |
- // Check for an option parameter |
3682 |
- while (*paramlst) { |
|
3683 |
- if (!strcmp(*paramlst, "-q")) { |
|
3684 |
- char **oldparamlst = paramlst; |
|
3685 |
- paramlst = split_arg(*(oldparamlst+1), 2, 1); // jid, message |
|
3686 |
- free_arg_lst(oldparamlst); |
|
3687 |
- quiet = TRUE; |
|
3688 |
- } else if (!strcmp(*paramlst, "-e")) { |
|
3689 |
- char **oldparamlst = paramlst; |
|
3690 |
- paramlst = split_arg(*(oldparamlst+1), 2, 1); // jid, message |
|
3691 |
- free_arg_lst(oldparamlst); |
|
3692 |
- eval = TRUE; |
|
3693 |
- } else if (!strcmp(*paramlst, "-f")) { |
|
3694 |
- char **oldparamlst = paramlst; |
|
3695 |
- paramlst = split_arg(*(oldparamlst+1), 2, 1); // filename, jid |
|
3696 |
- free_arg_lst(oldparamlst); |
|
3697 |
- if (!*paramlst) { |
|
3698 |
- scr_LogPrint(LPRINT_NORMAL, "Wrong usage."); |
|
3699 |
- free_arg_lst(paramlst); |
|
3700 |
- return; |
|
3701 |
- } |
|
3702 |
- file = g_strdup(*paramlst); |
|
3703 |
- // One more parameter shift... |
|
3704 |
- oldparamlst = paramlst; |
|
3705 |
- paramlst = split_arg(*(oldparamlst+1), 2, 1); // jid, nothing |
|
3706 |
- free_arg_lst(oldparamlst); |
|
3707 |
- } else |
|
3708 |
- break; |
|
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3709 |
- } |
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3710 |
- |
65 | 3711 |
- if (!*paramlst) { |
3712 |
- scr_LogPrint(LPRINT_NORMAL, "Wrong usage."); |
|
3713 |
- free_arg_lst(paramlst); |
|
3714 |
- return; |
|
3715 |
- } |
|
3716 |
- |
|
3717 |
- fjid = *paramlst; |
|
3718 |
- msg = *(paramlst+1); |
|
3719 |
- |
|
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3720 |
+ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3721 |
+ if (options.opts[0].value.swc) // n |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3722 |
+ 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
|
3723 |
+ else if (options.opts[1].value.swc) // h |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3724 |
+ msg_type = msgtype_headline; |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
3725 |
+ |
65 | 3726 |
+ fjid = options.args[0].value.arg; |
3727 |
+ msg = options.args[1].value.arg; |
|
3728 |
+ file = options.opts[4].value.opt; |
|
3729 |
+ |
|
3730 |
+ // ideally, this should go to commandline parsing subsystem |
|
3731 |
if (fjid[0] == '.') { |
|
3732 |
const gchar *cjid = (current_buddy ? CURRENT_JID : NULL); |
|
3733 |
if (fjid[1] == '\0') { |
|
3734 |
- fjid = g_strdup(cjid); |
|
3735 |
+ fjid = (char *)cjid; // FIXME |
|
3736 |
} else if (fjid[1] == JID_RESOURCE_SEPARATOR) { |
|
3737 |
char *res_utf8 = to_utf8(fjid+2); |
|
3738 |
- fjid = g_strdup_printf("%s%c%s", cjid, JID_RESOURCE_SEPARATOR, res_utf8); |
|
3739 |
+ freeme = fjid = g_strdup_printf("%s%c%s", cjid, JID_RESOURCE_SEPARATOR, res_utf8); |
|
3740 |
g_free(res_utf8); |
|
3741 |
- } else |
|
3742 |
- fjid = to_utf8(fjid); |
|
3743 |
- } else |
|
3744 |
- fjid = to_utf8(fjid); |
|
3745 |
- |
|
3746 |
+ } |
|
3747 |
+ } |
|
3748 |
+ |
|
3749 |
+ // ditto |
|
3750 |
if (!strchr(fjid, JID_DOMAIN_SEPARATOR)) { |
|
3751 |
const gchar *append_server = settings_opt_get("default_server"); |
|
3752 |
if (append_server) { |
|
3753 |
gchar *res = strchr(fjid, JID_RESOURCE_SEPARATOR); |
|
3754 |
- uncompletedfjid = fjid; |
|
3755 |
if (res) { |
|
3756 |
*res++ = '\0'; |
|
3757 |
fjid = g_strdup_printf("%s%c%s%c%s", fjid, JID_DOMAIN_SEPARATOR, append_server, |
|
3758 |
JID_RESOURCE_SEPARATOR, res); |
|
3759 |
} else |
|
3760 |
fjid = g_strdup_printf("%s%c%s", fjid, JID_DOMAIN_SEPARATOR, append_server); |
|
3761 |
+ g_free(freeme); |
|
3762 |
+ freeme = fjid; |
|
3763 |
} |
|
3764 |
} |
|
3765 |
||
3766 |
+ // as well |
|
3767 |
if (check_jid_syntax(fjid)) { |
|
3768 |
scr_LogPrint(LPRINT_NORMAL, "Please specify a valid Jabber ID."); |
|
3769 |
- free_arg_lst(paramlst); |
|
3770 |
- g_free(uncompletedfjid); |
|
3771 |
- g_free(fjid); |
|
3772 |
+ g_free(freeme); |
|
3773 |
return; |
|
3774 |
} |
|
3775 |
||
3776 |
- if (!file) { |
|
3777 |
- msg_utf8 = to_utf8(msg); |
|
3778 |
- if (eval) { |
|
3779 |
- unescaped_msg = ut_unescape_tabs_cr(msg_utf8); |
|
3780 |
+ if (file == NULL) { |
|
3781 |
+ if (options.opts[2].value.swc) { |
|
3782 |
+ freeme2 = ut_unescape_tabs_cr(msg); |
|
3783 |
// We must not free() if the original string was returned |
|
3784 |
- if (unescaped_msg == msg_utf8) |
|
3785 |
- unescaped_msg = NULL; |
|
3786 |
+ if (freeme2 == msg) |
|
3787 |
+ freeme2 = NULL; |
|
3788 |
+ else |
|
3789 |
+ msg = freeme2; |
|
3790 |
} |
|
3791 |
- msg = (unescaped_msg ? unescaped_msg : msg_utf8); |
|
3792 |
} else { |
|
3793 |
char *filename_xp; |
|
3794 |
if (msg) |
|
3795 |
scr_LogPrint(LPRINT_NORMAL, "say_to: extra parameter ignored."); |
|
3796 |
filename_xp = expand_filename(file); |
|
3797 |
- msg = msg_utf8 = load_message_from_file(filename_xp); |
|
3798 |
+ freeme2 = msg = load_message_from_file(filename_xp); |
|
3799 |
g_free(filename_xp); |
|
3800 |
- g_free(file); |
|
3801 |
} |
|
3802 |
||
3803 |
- send_message_to(fjid, msg, NULL, msg_type, quiet); |
|
3804 |
- |
|
3805 |
- g_free(uncompletedfjid); |
|
3806 |
- g_free(fjid); |
|
3807 |
- g_free(msg_utf8); |
|
3808 |
- g_free(unescaped_msg); |
|
3809 |
- free_arg_lst(paramlst); |
|
3810 |
+ send_message_to(fjid, msg, NULL, msg_type, options.opts[3].value.swc); |
|
3811 |
+ |
|
3812 |
+ cmdopts_free(&options); |
|
3813 |
+ g_free(freeme); |
|
3814 |
+ g_free(freeme2); |
|
3815 |
} |
|
3816 |
||
3817 |
// buffer_updown(updown, nblines) |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3818 |
@@ -1775,27 +2486,10 @@ |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3819 |
scr_buffer_scroll_up_down(updown, nblines); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3820 |
} |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3821 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3822 |
-static void buffer_search(int direction, char *arg) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3823 |
-{ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3824 |
- if (!arg || !*arg) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3825 |
- 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
|
3826 |
- return; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3827 |
- } |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3828 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3829 |
- scr_buffer_search(direction, arg); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3830 |
-} |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3831 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3832 |
static void buffer_date(char *date) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3833 |
{ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3834 |
time_t t; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3835 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3836 |
- 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
|
3837 |
- 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
|
3838 |
- return; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3839 |
- } |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3840 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3841 |
- 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
|
3842 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3843 |
t = from_iso8601(date, 0); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3844 |
if (t) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3845 |
scr_buffer_date(t); |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
3846 |
@@ -1804,98 +2498,156 @@ |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3847 |
"not correctly formatted or invalid."); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3848 |
} |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3849 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3850 |
-static void buffer_percent(char *arg1, char *arg2) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3851 |
+// XXX % command before was able to handle %50 |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3852 |
+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
|
3853 |
{ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3854 |
- // 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
|
3855 |
- // "%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
|
3856 |
- // "% 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
|
3857 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3858 |
- 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
|
3859 |
- 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
|
3860 |
+ enum buffer_scmd_t { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3861 |
+ buffer_scmd_close, buffer_scmd_close_all, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3862 |
+ buffer_scmd_clear, buffer_scmd_purge, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3863 |
+ buffer_scmd_list, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3864 |
+ buffer_scmd_top, buffer_scmd_bottom, buffer_scmd_up, buffer_scmd_down, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3865 |
+ buffer_scmd_date, buffer_scmd_percent, buffer_scmd_readmark, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3866 |
+ buffer_scmd_search_backward, buffer_scmd_search_forward, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3867 |
+ buffer_scmd_scroll_lock, buffer_scmd_scroll_unlock, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3868 |
+ buffer_scmd_scroll_toggle, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3869 |
+ buffer_scmd_save, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3870 |
+ } subcmd; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3871 |
+ cmdopts_t options = { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3872 |
+ "buffer", |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3873 |
+ NULL, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3874 |
+ (cmdarg_t[1]){ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3875 |
+ { CMDOPT_REQUIRED | CMDOPT_SUBCOMMAND | CMDOPT_LAST, { .cmd = NULL } }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3876 |
+ }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3877 |
+ (cmdopts_t[18]){ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3878 |
+ { "close", |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3879 |
+ (cmdopt_t[1]){ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3880 |
+ { CMDOPT_SWITCH | CMDOPT_LAST, 'a', "all", { .swc = 0 } } |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3881 |
+ }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3882 |
+ (cmdarg_t[1]){ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3883 |
+ { CMDOPT_LAST, { .cmd = NULL } } // jid |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3884 |
+ }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3885 |
+ NULL, (gpointer)buffer_scmd_close, 0 }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3886 |
+ { "close_all", NULL, NULL, NULL, (gpointer)buffer_scmd_close_all, 0 }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3887 |
+ { "clear", NULL, NULL, NULL, (gpointer)buffer_scmd_clear, 0 }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3888 |
+ { "purge", NULL, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3889 |
+ (cmdarg_t[1]){ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3890 |
+ { CMDOPT_LAST, { .arg = NULL } }, // jid |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3891 |
+ }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3892 |
+ NULL, (gpointer)buffer_scmd_purge, 0 }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3893 |
+ { "list", NULL, NULL, NULL, (gpointer)buffer_scmd_list, 0 }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3894 |
+ { "top", NULL, NULL, NULL, (gpointer)buffer_scmd_top, 0 }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3895 |
+ { "bottom", NULL, NULL, NULL, (gpointer)buffer_scmd_bottom, 0 }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3896 |
+ { "up", NULL, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3897 |
+ (cmdarg_t[1]){ |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3898 |
+ { CMDOPT_LAST, { .arg = NULL } }, // lines |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3899 |
+ }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3900 |
+ NULL, (gpointer)buffer_scmd_up, 0 }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3901 |
+ { "down", NULL, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3902 |
+ (cmdarg_t[1]){ |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3903 |
+ { CMDOPT_LAST, { .arg = NULL } }, // lines |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3904 |
+ }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3905 |
+ NULL, (gpointer)buffer_scmd_down, 0 }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3906 |
+ { "date", NULL, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3907 |
+ (cmdarg_t[1]){ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3908 |
+ // date |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3909 |
+ { CMDOPT_CATCHALL | CMDOPT_REQUIRED | CMDOPT_LAST, { .arg = "1" } }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3910 |
+ }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3911 |
+ NULL, (gpointer)buffer_scmd_date, 0 }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3912 |
+ { "%", NULL, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3913 |
+ (cmdarg_t[1]){ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3914 |
+ { CMDOPT_REQUIRED | CMDOPT_LAST, { .arg = "100" } }, // percent |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3915 |
+ }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3916 |
+ NULL, (gpointer)buffer_scmd_percent, 0 }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3917 |
+ { "readmark", NULL, NULL, NULL, (gpointer)buffer_scmd_readmark, 0 }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3918 |
+ { "search_backward", NULL, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3919 |
+ (cmdarg_t[1]){ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3920 |
+ { CMDOPT_REQUIRED | CMDOPT_CATCHALL | CMDOPT_LAST, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3921 |
+ { .arg = NULL } }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3922 |
+ }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3923 |
+ NULL, (gpointer)buffer_scmd_search_backward, 0 }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3924 |
+ { "search_forward", NULL, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3925 |
+ (cmdarg_t[1]){ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3926 |
+ { CMDOPT_REQUIRED | CMDOPT_CATCHALL | CMDOPT_LAST, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3927 |
+ { .arg = NULL } }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3928 |
+ }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3929 |
+ NULL, (gpointer)buffer_scmd_search_forward, 0 }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3930 |
+ { "scroll_lock", NULL, NULL, NULL, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3931 |
+ (gpointer)buffer_scmd_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
|
3932 |
+ { "scroll_unlock", NULL, NULL, NULL, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3933 |
+ (gpointer)buffer_scmd_scroll_unlock, 0 }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3934 |
+ { "scroll_toggle", NULL, NULL, NULL, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3935 |
+ (gpointer)buffer_scmd_scroll_toggle, 0 }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3936 |
+ { "save", NULL, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3937 |
+ (cmdarg_t[1]){ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3938 |
+ { CMDOPT_REQUIRED | CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3939 |
+ { .arg = NULL } }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3940 |
+ }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3941 |
+ NULL, (gpointer)buffer_scmd_save, CMDOPT_LAST }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3942 |
+ }, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3943 |
+ }; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3944 |
+ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3945 |
+ 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
|
3946 |
+ return; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3947 |
+ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3948 |
+ if (cmdopts_parse(arg, &options)) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3949 |
+ return; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3950 |
+ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3951 |
+ subcmd = (enum buffer_scmd_t) options.args[0].value.cmd -> userdata; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3952 |
+ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3953 |
+ if (subcmd == buffer_scmd_close && options.cmds[0].opts[0].value.swc) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3954 |
+ subcmd = buffer_scmd_close_all; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3955 |
+ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3956 |
+ 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
|
3957 |
+ subcmd != buffer_scmd_close_all) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3958 |
+ 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
|
3959 |
+ cmdopts_free(&options); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3960 |
return; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3961 |
} |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3962 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3963 |
- 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
|
3964 |
- 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
|
3965 |
- return; |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3966 |
+ if (subcmd == buffer_scmd_close) { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3967 |
+ scr_buffer_purge(1, options.cmds[0].args[0].value.arg); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3968 |
+ } else if (subcmd == buffer_scmd_close_all) { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3969 |
+ scr_buffer_purge_all(1); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3970 |
+ } else if (subcmd == buffer_scmd_clear) { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3971 |
+ scr_buffer_clear(); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3972 |
+ } else if (subcmd == buffer_scmd_purge) { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3973 |
+ scr_buffer_purge(0, options.cmds[3].args[0].value.arg); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3974 |
+ } else if (subcmd == buffer_scmd_list) { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3975 |
+ scr_buffer_list(); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3976 |
+ } else if (subcmd == buffer_scmd_top) { |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3977 |
+ 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
|
3978 |
+ } else if (subcmd == buffer_scmd_bottom) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3979 |
+ scr_buffer_top_bottom(1); |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3980 |
+ } else if (subcmd == buffer_scmd_up) { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3981 |
+ buffer_updown(-1, options.cmds[7].args[0].value.arg); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3982 |
+ } else if (subcmd == buffer_scmd_down) { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3983 |
+ buffer_updown(1, options.cmds[8].args[0].value.arg); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3984 |
+ } else if (subcmd == buffer_scmd_date) { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3985 |
+ buffer_date(options.cmds[9].args[0].value.arg); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3986 |
+ } else if (subcmd == buffer_scmd_percent) { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3987 |
+ scr_buffer_percent(atoi(options.cmds[10].args[0].value.arg)); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3988 |
+ } else if (subcmd == buffer_scmd_readmark) { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3989 |
+ scr_buffer_jump_readmark(); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3990 |
+ } else if (subcmd == buffer_scmd_search_backward) { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3991 |
+ scr_buffer_search(-1, options.cmds[12].args[0].value.arg); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3992 |
+ } else if (subcmd == buffer_scmd_search_forward) { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
3993 |
+ scr_buffer_search(1, options.cmds[13].args[0].value.arg); |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3994 |
+ } else if (subcmd == buffer_scmd_scroll_lock) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3995 |
+ 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
|
3996 |
+ } else if (subcmd == buffer_scmd_scroll_unlock) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3997 |
+ 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
|
3998 |
+ } else if (subcmd == buffer_scmd_scroll_toggle) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
3999 |
+ scr_buffer_scroll_lock(-1); |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4000 |
+ } else { // buffer_scmd_save |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4001 |
+ scr_buffer_dump(options.cmds[17].args[0].value.arg); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4002 |
} |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4003 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4004 |
- 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
|
4005 |
-} |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4006 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4007 |
-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
|
4008 |
-{ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4009 |
- char **paramlst; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4010 |
- char *subcmd; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4011 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4012 |
- 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
|
4013 |
- return; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4014 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4015 |
- 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
|
4016 |
- subcmd = *paramlst; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4017 |
- 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
|
4018 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4019 |
- 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
|
4020 |
- 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
|
4021 |
- 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
|
4022 |
- return; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4023 |
- } |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4024 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4025 |
- 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
|
4026 |
- 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
|
4027 |
- 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
|
4028 |
- 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
|
4029 |
- return; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4030 |
- } |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4031 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4032 |
- 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
|
4033 |
- 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
|
4034 |
- } 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
|
4035 |
- 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
|
4036 |
- } 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
|
4037 |
- 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
|
4038 |
- } 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
|
4039 |
- 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
|
4040 |
- } 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
|
4041 |
- 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
|
4042 |
- } 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
|
4043 |
- 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
|
4044 |
- } 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
|
4045 |
- 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
|
4046 |
- } 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
|
4047 |
- 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
|
4048 |
- } 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
|
4049 |
- 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
|
4050 |
- } 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
|
4051 |
- 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
|
4052 |
- } 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
|
4053 |
- 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
|
4054 |
- } 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
|
4055 |
- 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
|
4056 |
- 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
|
4057 |
- } 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
|
4058 |
- 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
|
4059 |
- 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
|
4060 |
- } 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
|
4061 |
- 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
|
4062 |
- } 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
|
4063 |
- 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
|
4064 |
- } 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
|
4065 |
- 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
|
4066 |
- } 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
|
4067 |
- 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
|
4068 |
- } 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
|
4069 |
- 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
|
4070 |
- } else { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4071 |
- 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
|
4072 |
- } |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4073 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4074 |
- 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
|
4075 |
+ cmdopts_free(&options); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4076 |
} |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4077 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4078 |
static void do_clear(char *arg) // Alias for "buffer clear" |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4079 |
{ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4080 |
- do_buffer("clear"); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4081 |
+ 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
|
4082 |
} |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4083 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4084 |
static void do_info(char *arg) |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4085 |
@@ -2033,29 +2785,20 @@ |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4086 |
} |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4087 |
} |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4088 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4089 |
+enum room_names_style_t { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4090 |
+ room_names_style_normal = 0, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4091 |
+ room_names_style_detail, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4092 |
+ room_names_style_short, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4093 |
+ room_names_style_quiet, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4094 |
+ room_names_style_compact, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4095 |
+}; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4096 |
+ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4097 |
// room_names() is a variation of do_info(), for chatrooms only |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4098 |
-static void room_names(gpointer bud, char *arg) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4099 |
+static void room_names(gpointer bud, enum room_names_style_t style) |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4100 |
{ |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4101 |
const char *bjid; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4102 |
char *buffer; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4103 |
GSList *resources, *p_res; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4104 |
- 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
|
4105 |
- 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
|
4106 |
- |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4107 |
- if (*arg) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4108 |
- 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
|
4109 |
- 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
|
4110 |
- 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
|
4111 |
- 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
|
4112 |
- 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
|
4113 |
- 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
|
4114 |
- 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
|
4115 |
- 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
|
4116 |
- else { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4117 |
- 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
|
4118 |
- return; |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4119 |
- } |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4120 |
- } |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4121 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4122 |
// Enter chat mode |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4123 |
scr_set_chatmode(TRUE); |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4124 |
@@ -2075,12 +2818,12 @@ |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4125 |
rstatus = buddy_getstatus(bud, p_res->data); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4126 |
rst_msg = buddy_getstatusmsg(bud, p_res->data); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4127 |
|
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4128 |
- if (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
|
4129 |
+ if (style == room_names_style_short) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4130 |
snprintf(buffer, 4095, "[%c] %s%s%s", imstatus2char[rstatus], |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4131 |
(char*)p_res->data, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4132 |
rst_msg ? " -- " : "", rst_msg ? rst_msg : ""); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4133 |
scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4134 |
- } else if (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
|
4135 |
+ } else if (style == room_names_style_compact) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4136 |
enum imrole role = buddy_getrole(bud, p_res->data); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4137 |
enum imaffiliation affil = buddy_getaffil(bud, p_res->data); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4138 |
bool showaffil = (affil != affil_none); |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4139 |
@@ -2096,12 +2839,12 @@ |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4140 |
snprintf(buffer, 4095, "[%c] %s", imstatus2char[rstatus], |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4141 |
(char*)p_res->data); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4142 |
scr_WriteIncomingMessage(bjid, buffer, 0, HBB_PREFIX_INFO, 0); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4143 |
- if (rst_msg && 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
|
4144 |
+ if (rst_msg && style != room_names_style_quiet) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4145 |
snprintf(buffer, 4095, "Status message: %s", rst_msg); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4146 |
scr_WriteIncomingMessage(bjid, buffer, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4147 |
0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4148 |
} |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4149 |
- if (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
|
4150 |
+ if (style == room_names_style_detail) { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4151 |
enum imrole role = buddy_getrole(bud, p_res->data); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4152 |
enum imaffiliation affil = buddy_getaffil(bud, p_res->data); |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4153 |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4154 |
@@ -2145,16 +2888,69 @@ |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4155 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4156 |
static void do_rename(char *arg) |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4157 |
{ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4158 |
+ cmdopts_t options = { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4159 |
+ "rename", |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4160 |
+ (cmdopt_t[4]){ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4161 |
+ { CMDOPT_SWITCH, 'r', "reset", { .swc = 0 } }, |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4162 |
+ { 0, 'n', "name", { .opt = NULL } }, |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4163 |
+ { 0, 'g', "group", { .opt = NULL } }, |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4164 |
+ { CMDOPT_LAST, 'j', "jid", { .opt = "." } }, |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4165 |
+ }, |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4166 |
+ (cmdarg_t[1]){ |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4167 |
+ { CMDOPT_CATCHALL | CMDOPT_LAST, { .arg = "" } }, // new name |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4168 |
+ }, |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4169 |
+ NULL, |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4170 |
+ }; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4171 |
gpointer bud; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4172 |
const char *bjid, *group; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4173 |
guint type, on_srv; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4174 |
char *newname, *p; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4175 |
- char *name_utf8; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4176 |
- |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4177 |
- if (!current_buddy) |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4178 |
+ gboolean reset; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4179 |
+ enum findwhat srchwhat = jidsearch; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4180 |
+ guint srchtype = ROSTER_TYPE_USER | ROSTER_TYPE_ROOM | ROSTER_TYPE_AGENT; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4181 |
+ gchar *srchterm; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4182 |
+ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4183 |
+ if (cmdopts_parse(arg, &options)) |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4184 |
return; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4185 |
- bud = BUDDATA(current_buddy); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4186 |
- |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4187 |
+ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4188 |
+ reset = options.opts[0].value.swc; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4189 |
+ newname = options.args[0].value.arg; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4190 |
+ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4191 |
+ if (options.opts[1].value.opt) { // n |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4192 |
+ srchwhat = namesearch; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4193 |
+ srchtype |= ROSTER_TYPE_GROUP; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4194 |
+ srchterm = options.opts[1].value.opt; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4195 |
+ } else if (options.opts[2].value.opt) { // g |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4196 |
+ srchwhat = namesearch; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4197 |
+ srchtype = ROSTER_TYPE_GROUP; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4198 |
+ srchterm = options.opts[2].value.opt; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4199 |
+ } else |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4200 |
+ srchterm = options.opts[3].value.opt; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4201 |
+ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4202 |
+ if (!*srchterm || !strcmp(srchterm, ".")) { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4203 |
+ if (!current_buddy) { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4204 |
+ cmdopts_free(&options); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4205 |
+ return; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4206 |
+ } |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4207 |
+ bud = BUDDATA(current_buddy); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4208 |
+ if (srchtype == ROSTER_TYPE_GROUP) |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4209 |
+ bud = buddy_getgroup(bud); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4210 |
+ } else { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4211 |
+ GSList *found; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4212 |
+ if (srchwhat == jidsearch && check_jid_syntax(srchterm)) { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4213 |
+ scr_log_print(LPRINT_NORMAL, "You must specify a valid jid!"); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4214 |
+ cmdopts_free(&options); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4215 |
+ return; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4216 |
+ } |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4217 |
+ found = roster_find(srchterm, srchwhat, srchtype); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4218 |
+ if (!found) { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4219 |
+ scr_log_print(LPRINT_NORMAL, "Can't find <%s>!", srchterm); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4220 |
+ cmdopts_free(&options); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4221 |
+ return; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4222 |
+ } |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4223 |
+ bud = found -> data; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4224 |
+ } |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4225 |
+ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4226 |
bjid = buddy_getjid(bud); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4227 |
group = buddy_getgroupname(bud); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4228 |
type = buddy_gettype(bud); |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4229 |
@@ -2162,11 +2958,13 @@ |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4230 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4231 |
if (type & ROSTER_TYPE_SPECIAL) { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4232 |
scr_LogPrint(LPRINT_NORMAL, "You can't rename this item."); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4233 |
+ cmdopts_free(&options); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4234 |
return; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4235 |
} |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4236 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4237 |
- if (!*arg && !(type & ROSTER_TYPE_GROUP)) { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4238 |
+ if (!*newname && !reset) { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4239 |
scr_LogPrint(LPRINT_NORMAL, "Please specify a new name."); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4240 |
+ cmdopts_free(&options); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4241 |
return; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4242 |
} |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4243 |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4244 |
@@ -2181,90 +2979,117 @@ |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4245 |
// } |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4246 |
//} |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4247 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4248 |
- newname = g_strdup(arg); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4249 |
// Remove trailing space |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4250 |
for (p = newname; *p; p++) ; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4251 |
while (p > newname && *p == ' ') *p = 0; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4252 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4253 |
- strip_arg_special_chars(newname); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4254 |
- |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4255 |
- name_utf8 = to_utf8(newname); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4256 |
- |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4257 |
if (type & ROSTER_TYPE_GROUP) { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4258 |
// Rename a whole group |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4259 |
- foreach_group_member(bud, &move_group_member, name_utf8); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4260 |
+ foreach_group_member(bud, &move_group_member, newname); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4261 |
// 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
|
4262 |
// disappear when we receive the server answer. |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4263 |
scr_roster_up_down(-1, 1); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4264 |
} else { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4265 |
// Rename a single buddy |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4266 |
- guint del_name = 0; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4267 |
- if (!*newname || !strcmp(arg, "-")) |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4268 |
- del_name = TRUE; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4269 |
if (on_srv) { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4270 |
- /* 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
|
4271 |
- * 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
|
4272 |
- */ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4273 |
- xmpp_updatebuddy(bjid, (del_name ? NULL : name_utf8), |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4274 |
+ // 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
|
4275 |
+ // 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
|
4276 |
+ 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
|
4277 |
group && *group ? group : NULL); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4278 |
} else { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4279 |
// 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
|
4280 |
- 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
|
4281 |
+ 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
|
4282 |
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
|
4283 |
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
|
4284 |
room_bookmark(bud, NULL); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4285 |
} |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4286 |
} |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4287 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4288 |
- g_free(name_utf8); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4289 |
- g_free(newname); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4290 |
+ cmdopts_free(&options); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4291 |
update_roster = TRUE; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4292 |
} |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4293 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4294 |
static void do_move(char *arg) |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4295 |
{ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4296 |
+ cmdopts_t options = { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4297 |
+ "move", |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4298 |
+ (cmdopt_t[4]){ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4299 |
+ { 0, 'n', "name", { .opt = NULL } }, |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4300 |
+ { CMDOPT_LAST, 'j', "jid", { .opt = "." } }, |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4301 |
+ }, |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4302 |
+ (cmdarg_t[1]){ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4303 |
+ { CMDOPT_CATCHALL | CMDOPT_LAST, { .arg = "" } }, // new group name |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4304 |
+ }, |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4305 |
+ NULL, |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4306 |
+ }; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4307 |
gpointer bud; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4308 |
const char *bjid, *name, *oldgroupname; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4309 |
guint type, on_srv; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4310 |
char *newgroupname, *p; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4311 |
- char *group_utf8; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4312 |
- |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4313 |
- if (!current_buddy) |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4314 |
+ enum findwhat srchwhat = jidsearch; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4315 |
+ gchar *srchterm; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4316 |
+ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4317 |
+ if (cmdopts_parse(arg, &options)) |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4318 |
return; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4319 |
- bud = BUDDATA(current_buddy); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4320 |
+ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4321 |
+ newgroupname = options.args[0].value.arg; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4322 |
+ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4323 |
+ if (options.opts[0].value.opt) { // n |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4324 |
+ srchwhat = namesearch; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4325 |
+ srchterm = options.opts[0].value.opt; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4326 |
+ } else |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4327 |
+ srchterm = options.opts[1].value.opt; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4328 |
+ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4329 |
+ if (!*srchterm || !strcmp(srchterm, ".")) { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4330 |
+ if (!current_buddy) { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4331 |
+ cmdopts_free(&options); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4332 |
+ return; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4333 |
+ } |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4334 |
+ bud = BUDDATA(current_buddy); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4335 |
+ } else { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4336 |
+ GSList *found; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4337 |
+ if (srchwhat == jidsearch && check_jid_syntax(srchterm)) { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4338 |
+ scr_log_print(LPRINT_NORMAL, "You must specify a valid jid!"); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4339 |
+ cmdopts_free(&options); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4340 |
+ return; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4341 |
+ } |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4342 |
+ found = roster_find(srchterm, srchwhat, ROSTER_TYPE_USER | |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4343 |
+ ROSTER_TYPE_ROOM | ROSTER_TYPE_AGENT); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4344 |
+ if (!found) { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4345 |
+ scr_log_print(LPRINT_NORMAL, "Can't find <%s>!", srchterm); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4346 |
+ cmdopts_free(&options); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4347 |
+ return; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4348 |
+ } |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4349 |
+ bud = found -> data; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4350 |
+ } |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4351 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4352 |
bjid = buddy_getjid(bud); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4353 |
name = buddy_getname(bud); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4354 |
type = buddy_gettype(bud); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4355 |
on_srv = buddy_getonserverflag(bud); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4356 |
- |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4357 |
oldgroupname = buddy_getgroupname(bud); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4358 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4359 |
if (type & ROSTER_TYPE_GROUP) { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4360 |
scr_LogPrint(LPRINT_NORMAL, "You can't move groups!"); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4361 |
+ cmdopts_free(&options); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4362 |
return; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4363 |
} |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4364 |
if (type & ROSTER_TYPE_SPECIAL) { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4365 |
scr_LogPrint(LPRINT_NORMAL, "You can't move this item."); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4366 |
+ cmdopts_free(&options); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4367 |
return; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4368 |
} |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4369 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4370 |
- newgroupname = g_strdup(arg); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4371 |
// Remove trailing space |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4372 |
for (p = newgroupname; *p; p++) ; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4373 |
while (p > newgroupname && *p == ' ') *p-- = 0; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4374 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4375 |
- strip_arg_special_chars(newgroupname); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4376 |
- |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4377 |
- group_utf8 = to_utf8(newgroupname); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4378 |
- if (strcmp(oldgroupname, group_utf8)) { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4379 |
+ if (strcmp(oldgroupname, newgroupname)) { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4380 |
if (on_srv) { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4381 |
- xmpp_updatebuddy(bjid, name, *group_utf8 ? group_utf8 : NULL); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4382 |
+ xmpp_updatebuddy(bjid, name, *newgroupname ? newgroupname : NULL); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4383 |
scr_roster_up_down(-1, 1); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4384 |
- |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4385 |
- /* 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
|
4386 |
- * 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
|
4387 |
- */ |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4388 |
+ // 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
|
4389 |
+ // 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
|
4390 |
} else { |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4391 |
// 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
|
4392 |
guint msgflag; |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4393 |
@@ -2276,7 +3101,7 @@ |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4394 |
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
|
4395 |
if (msgflag) |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4396 |
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
|
4397 |
- buddy_setgroup(bud, group_utf8); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4398 |
+ buddy_setgroup(bud, newgroupname); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4399 |
if (msgflag) |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4400 |
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
|
4401 |
if ((type & ROSTER_TYPE_ROOM) && xmpp_is_bookmarked(bjid) && |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4402 |
@@ -2285,8 +3110,7 @@ |
72
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4403 |
} |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4404 |
} |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4405 |
|
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4406 |
- g_free(group_utf8); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4407 |
- g_free(newgroupname); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4408 |
+ cmdopts_free(&options); |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4409 |
update_roster = TRUE; |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4410 |
} |
99d64d6ebe89
[cmdopts] Convert /rename and /move, add params for automation
Myhailo Danylenko <isbear@ukrpost.net>
parents:
71
diff
changeset
|
4411 |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4412 |
@@ -2468,50 +3292,33 @@ |
73
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4413 |
|
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4414 |
static void do_rawxml(char *arg) |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4415 |
{ |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4416 |
- char **paramlst; |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4417 |
- char *subcmd; |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4418 |
+ cmdopts_t options = { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4419 |
+ "rawxml", |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4420 |
+ NULL, |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4421 |
+ (cmdarg_t[1]){ |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4422 |
+ { CMDOPT_REQUIRED | CMDOPT_SUBCOMMAND | CMDOPT_LAST, { .cmd = NULL } }, |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4423 |
+ }, |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4424 |
+ (cmdopts_t[1]){ |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4425 |
+ { "send", NULL, |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4426 |
+ (cmdarg_t[1]){ |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4427 |
+ { CMDOPT_REQUIRED | CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4428 |
+ { .arg = NULL } }, |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4429 |
+ }, |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4430 |
+ NULL }, |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4431 |
+ }, |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4432 |
+ }; |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4433 |
|
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4434 |
if (!xmpp_is_online()) { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4435 |
scr_LogPrint(LPRINT_NORMAL, "You are not connected."); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4436 |
return; |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4437 |
} |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4438 |
|
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4439 |
- paramlst = split_arg(arg, 2, 1); // subcmd, arg |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4440 |
- subcmd = *paramlst; |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4441 |
- arg = *(paramlst+1); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4442 |
- |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4443 |
- if (!subcmd || !*subcmd) { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4444 |
- 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
|
4445 |
- " before using /rawxml :-)"); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4446 |
- free_arg_lst(paramlst); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4447 |
+ if (cmdopts_parse(arg, &options)) |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4448 |
return; |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4449 |
- } |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4450 |
- |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4451 |
- if (!strcasecmp(subcmd, "send")) { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4452 |
- gchar *buffer; |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4453 |
- |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4454 |
- if (!subcmd || !*subcmd) { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4455 |
- scr_LogPrint(LPRINT_NORMAL, "Missing parameter."); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4456 |
- free_arg_lst(paramlst); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4457 |
- return; |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4458 |
- } |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4459 |
- |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4460 |
- // 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
|
4461 |
- // 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
|
4462 |
- |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4463 |
- buffer = to_utf8(arg); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4464 |
- if (buffer) { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4465 |
- scr_LogPrint(LPRINT_NORMAL, "Sending XML string"); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4466 |
- lm_connection_send_raw(lconnection, buffer, NULL); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4467 |
- g_free(buffer); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4468 |
- } else { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4469 |
- 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
|
4470 |
- } |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4471 |
- } else { |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4472 |
- scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!"); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4473 |
- } |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4474 |
- |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4475 |
- free_arg_lst(paramlst); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4476 |
+ |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4477 |
+ scr_LogPrint(LPRINT_NORMAL, "Sending XML string"); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4478 |
+ 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
|
4479 |
+ cmdopts_free(&options); |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4480 |
} |
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4481 |
|
feae79fcc408
[cmdopts] Convert /rawxml, fix /buffer arguments
Myhailo Danylenko <isbear@ukrpost.net>
parents:
72
diff
changeset
|
4482 |
// check_room_subcommand(arg, param_needed, buddy_must_be_a_room) |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4483 |
@@ -2874,7 +3681,7 @@ |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4484 |
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
|
4485 |
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
|
4486 |
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
|
4487 |
- 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
|
4488 |
+ 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
|
4489 |
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
|
4490 |
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
|
4491 |
free_arg_lst(paramlst); |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4492 |
@@ -3290,6 +4097,207 @@ |
74 | 4493 |
|
4494 |
static void do_room(char *arg) |
|
4495 |
{ |
|
4496 |
+ enum room_scmd_t { |
|
4497 |
+ room_scmd_join, room_scmd_leave, |
|
4498 |
+ room_scmd_names, |
|
4499 |
+ room_scmd_nick, |
|
4500 |
+ room_scmd_privmsg, |
|
4501 |
+ room_scmd_remove, |
|
4502 |
+ room_scmd_topic, |
|
4503 |
+ room_scmd_unlock, |
|
4504 |
+ room_scmd_destroy, |
|
4505 |
+ room_scmd_whois, |
|
4506 |
+ room_scmd_ban, room_scmd_unban, |
|
4507 |
+ room_scmd_invite, room_scmd_kick, |
|
4508 |
+ room_scmd_role, room_scmd_affil, |
|
4509 |
+ room_scmd_setopt, room_scmd_bookmark, |
|
4510 |
+ } subcmd; |
|
4511 |
+ cmdopts_t options = { |
|
4512 |
+ "room", |
|
4513 |
+ (cmdopt_t[1]){ |
|
4514 |
+ { CMDOPT_LAST, 'j', "jid", { .opt = NULL } }, |
|
4515 |
+ }, |
|
4516 |
+ (cmdarg_t[1]){ |
|
4517 |
+ { CMDOPT_REQUIRED | CMDOPT_SUBCOMMAND | CMDOPT_LAST, { .cmd = NULL } }, |
|
4518 |
+ }, |
|
4519 |
+ (cmdopts_t[18]){ |
|
4520 |
+ { "join", NULL, |
|
4521 |
+ (cmdarg_t[3]){ |
|
4522 |
+ { 0, { .arg = "." } }, // room jid |
|
4523 |
+ { 0, { .arg = NULL } }, // nick |
|
4524 |
+ { CMDOPT_LAST, { .arg = NULL } }, // password |
|
4525 |
+ }, |
|
4526 |
+ NULL, (gpointer)room_scmd_join, 0 }, |
|
4527 |
+ { "leave", NULL, |
|
4528 |
+ (cmdarg_t[1]){ |
|
4529 |
+ // reason |
|
4530 |
+ { CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, { .arg = NULL } }, |
|
4531 |
+ }, |
|
4532 |
+ NULL, (gpointer)room_scmd_join, 0 }, |
|
4533 |
+ { "names", |
|
4534 |
+ (cmdopt_t[4]){ |
|
4535 |
+ { CMDOPT_SWITCH, 'd', "detail", { .swc = 0 } }, |
|
4536 |
+ { CMDOPT_SWITCH, 's', "short", { .swc = 0 } }, |
|
4537 |
+ { CMDOPT_SWITCH, 'q', "quiet", { .swc = 0 } }, |
|
4538 |
+ { CMDOPT_SWITCH | CMDOPT_LAST, 'c', "compact", { .swc = 0 } }, |
|
4539 |
+ }, |
|
4540 |
+ NULL, NULL, (gpointe)room_scmd_names, 0 }, |
|
4541 |
+ { "nick", NULL, |
|
4542 |
+ (cmdarg_t[1]){ |
|
4543 |
+ // nick |
|
4544 |
+ { CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, { .arg = NULL } }, |
|
4545 |
+ }, |
|
4546 |
+ NULL, (gpointer)room_scmd_nick, 0 }, |
|
4547 |
+ { "privmsg", NULL, |
|
4548 |
+ (cmdarg_t[2]) { |
|
4549 |
+ // nick |
|
4550 |
+ { CMDOPT_REQUIRED, { .arg = NULL } }, |
|
4551 |
+ // message |
|
4552 |
+ { CMDOPT_REQUIRED | CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, |
|
4553 |
+ { .arg = NULL } }, |
|
4554 |
+ } |
|
4555 |
+ NULL, (gpointer)room_scmd_privmsg, 0 }, |
|
4556 |
+ { "remove", NULL, NULL, NULL, (gpointer)room_scmd_remove, 0 }, |
|
4557 |
+ { "topic", NULL, |
|
4558 |
+ (cmdarg_t[1]){ |
|
4559 |
+ // topic |
|
4560 |
+ { CMDOPT_REQUIRED | CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, |
|
4561 |
+ { .arg = NULL } }, |
|
4562 |
+ }, |
|
4563 |
+ NULL, (gpointer)room_scmd_topic, 0 }, |
|
4564 |
+ { "unlock", NULL, NULL, NULL, (gpointer)room_scmd_unlock, 0 }, |
|
4565 |
+ { "destroy", NULL, |
|
4566 |
+ (cmdarg_t[1]){ |
|
4567 |
+ { CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, { .arg = NULL } }, |
|
4568 |
+ }, |
|
4569 |
+ NULL, (gpointer)room_scmd_destroy, 0 }, |
|
4570 |
+ { "whois", NULL, |
|
4571 |
+ (cmdarg_t[1]){ |
|
4572 |
+ // nick |
|
4573 |
+ { CMDOPT_REQUIRED | CMDOPT_LAST, { .arg = NULL } }, |
|
4574 |
+ }, NULL, (gpointer)room_scmd_whois, 0 }, |
|
4575 |
+ { "ban", NULL, |
|
4576 |
+ (cmdarg_t[2]){ |
|
4577 |
+ // nick |
|
4578 |
+ { CMDOPT_REQUIRED, { .arg = NULL } }, |
|
4579 |
+ // reason |
|
4580 |
+ { CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, { .arg = NULL } }, |
|
4581 |
+ }, NULL, (gpointer)room_scmd_ban, 0 }, |
|
4582 |
+ { "unban", NULL, |
|
4583 |
+ (cmdarg_t[1]){ |
|
4584 |
+ // nick |
|
4585 |
+ { CMDOPT_REQUIRED | CMDOPT_LAST, { .arg = NULL } }, |
|
4586 |
+ }, NULL, (gpointer)room_scmd_unban, 0 }, |
|
4587 |
+ { "invite", NULL, // XXX [-d|direct] ? |
|
4588 |
+ (cmdarg_t[2]){ |
|
4589 |
+ // jid |
|
4590 |
+ { CMDOPT_REQUIRED, { .arg = NULL } }, |
|
4591 |
+ // reason |
|
4592 |
+ { CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, { .arg = NULL } }, |
|
4593 |
+ }, |
|
4594 |
+ NULL, (gpointer)room_scmd_invite, 0 }, |
|
4595 |
+ { "kick", NULL, |
|
4596 |
+ (cmdarg_t[2]){ |
|
4597 |
+ // jid |
|
4598 |
+ { CMDOPT_REQUIRED, { .arg = NULL } }, |
|
4599 |
+ // reason |
|
4600 |
+ { CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, { .arg = NULL } }, |
|
4601 |
+ }, |
|
4602 |
+ NULL, (gpointer)room_scmd_kick, 0 }, |
|
4603 |
+ { "role", NULL, |
|
4604 |
+ (cmdarg_t[3]){ |
|
4605 |
+ // jid |
|
4606 |
+ { CMDOPT_REQUIRED, { .arg = NULL } }, |
|
4607 |
+ // role |
|
4608 |
+ { CMDOPT_REQUIRED, { .arg = NULL } }, |
|
4609 |
+ // reason |
|
4610 |
+ { CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, { .arg = NULL } }, |
|
4611 |
+ }, NULL, (gpointer)room_scmd_role, 0 }, |
|
4612 |
+ { "affil", NULL, |
|
4613 |
+ (cmdarg_t[3]){ |
|
4614 |
+ // jid |
|
4615 |
+ { CMDOPT_REQUIRED, { .arg = NULL } }, |
|
4616 |
+ // affiliation |
|
4617 |
+ { CMDOPT_REQUIRED, { .arg = NULL } }, |
|
4618 |
+ // reason |
|
4619 |
+ { CMDOPT_CATCHALL | CMDOPT_PLAIN | CMDOPT_LAST, { .arg = NULL } }, |
|
4620 |
+ }, NULL, (gpointer)room_scmd_affil, 0 }, |
|
4621 |
+ // XXX below goes some crazy subcommands stuff, that should be rather static lists |
|
4622 |
+ { "setopt", NULL, |
|
4623 |
+ (cmdarg_t[1]){ |
|
4624 |
+ { CMDOPT_REQUIRED | CMDOPT_SUBCOMMAND | CMDOPT_LAST, { .cmd = NULL } }, |
|
4625 |
+ }, |
|
4626 |
+ (cmdopts_t[3]){ |
|
4627 |
+ { "print_status", NULL, |
|
4628 |
+ (cmdarg_t[1]){ |
|
4629 |
+ { CMDOPT_SUBCOMMAND | CMDOPT_LAST, { .cmd = NULL } }, |
|
4630 |
+ }, |
|
4631 |
+ (cmdopts_t[4]){ |
|
4632 |
+ { "default", NULL, NULL, NULL, NULL, 0 }, |
|
4633 |
+ { "none", NULL, NULL, NULL, NULL, 0 }, |
|
4634 |
+ { "in_and_out", NULL, NULL, NULL, NULL, 0 }, |
|
4635 |
+ { "all", NULL, NULL, NULL, NULL, CMDOPT_LAST }, |
|
4636 |
+ }, NULL, 0 }, |
|
4637 |
+ { "auto_whois", NULL, |
|
4638 |
+ (cmdarg_t[1]){ |
|
4639 |
+ { CMDOPT_SUBCOMMAND | CMDOPT_LAST, { .cmd = NULL } }, |
|
4640 |
+ }, |
|
4641 |
+ (cmdopts_t[3]){ |
|
4642 |
+ { "default", NULL, NULL, NULL, NULL, 0 }, |
|
4643 |
+ { "off", NULL, NULL, NULL, NULL, 0 }, |
|
4644 |
+ { "on", NULL, NULL, NULL, NULL, CMDOPT_LAST }, |
|
4645 |
+ }, NULL, 0 }, |
|
4646 |
+ { "flag_joins", NULL, |
|
4647 |
+ (cmdarg_t[1]){ |
|
4648 |
+ { CMDOPT_SUBCOMMAND | CMDOPT_LAST, { .cmd = NULL } }, |
|
4649 |
+ }, |
|
4650 |
+ (cmdopts_t[4]){ |
|
4651 |
+ { "default", NULL, NULL, NULL, NULL, 0 }, |
|
4652 |
+ { "none", NULL, NULL, NULL, NULL, 0 }, |
|
4653 |
+ { "joins", NULL, NULL, NULL, NULL, 0 }, |
|
4654 |
+ { "all", NULL, NULL, NULL, NULL, CMDOPT_LAST }, |
|
4655 |
+ }, NULL, CMDOPT_LAST }, |
|
4656 |
+ }, (gpointer)room_scmd_setopt, 0 }, |
|
4657 |
+ { "bookmark", NULL, |
|
4658 |
+ (cmdarg_t[1]){ |
|
4659 |
+ { CMDOPT_SUBCOMMAND | CMDOPT_LAST, { .cmd = NULL } }, |
|
4660 |
+ }, |
|
4661 |
+ (cmdopts_t[2]){ |
|
4662 |
+ { "add", NULL, |
|
4663 |
+ (cmdarg_t[1]){ |
|
4664 |
+ { CMDOPT_SUBCOMMAND | CMDOPT_LAST, { .cmd = NULL } }, |
|
4665 |
+ }, |
|
4666 |
+ (cmdopts_t[2]){ |
|
4667 |
+ { "+autojoin", NULL, |
|
4668 |
+ (cmdarg_t[1]){ |
|
4669 |
+ // nick |
|
4670 |
+ { CMDARG_LAST, { .arg = NULL } }, |
|
4671 |
+ }, NULL, NULL, 0 }, |
|
4672 |
+ { "-autojoin", NULL, |
|
4673 |
+ (cmdarg_t[1]){ |
|
4674 |
+ // nick |
|
4675 |
+ { CMDARG_LAST, { .arg = NULL } }, |
|
4676 |
+ }, NULL, NULL, CMDOPT_LAST }, |
|
4677 |
+ }, NULL, 0 }, |
|
4678 |
+ { "del", NULL, |
|
4679 |
+ (cmdarg_t[1]){ |
|
4680 |
+ { CMDOPT_SUBCOMMAND | CMDOPT_LAST, { .cmd = NULL } }, |
|
4681 |
+ }, |
|
4682 |
+ (cmdopts_t[2]){ |
|
4683 |
+ { "+autojoin", NULL, |
|
4684 |
+ (cmdarg_t[1]){ |
|
4685 |
+ // nick |
|
4686 |
+ { CMDARG_LAST, { .arg = NULL } }, |
|
4687 |
+ }, NULL, NULL, 0 }, |
|
4688 |
+ { "-autojoin", NULL, |
|
4689 |
+ (cmdarg_t[1]){ |
|
4690 |
+ // nick |
|
4691 |
+ { CMDARG_LAST, { .arg = NULL } }, |
|
4692 |
+ }, NULL, NULL, CMDOPT_LAST }, |
|
4693 |
+ }, NULL, 0 }, |
|
4694 |
+ }, (gpointer)room_scmd_bookmark, CMDOPT_LAST }, |
|
4695 |
+ }, |
|
4696 |
+ }; |
|
4697 |
char **paramlst; |
|
4698 |
char *subcmd; |
|
4699 |
gpointer bud; |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4700 |
@@ -3347,7 +4355,7 @@ |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4701 |
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
|
4702 |
} 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
|
4703 |
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
|
4704 |
- 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
|
4705 |
+ 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
|
4706 |
} 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
|
4707 |
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
|
4708 |
room_nick(bud, arg); |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4709 |
@@ -4162,5 +5170,6 @@ |
74 | 4710 |
} |
4711 |
mcabber_set_terminate_ui(); |
|
4712 |
} |
|
4713 |
+#endif |
|
4714 |
||
4715 |
/* vim: set expandtab cindent cinoptions=>2\:2(0 sw=2 ts=2: For Vim users... */ |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4716 |
diff -r b527e8800278 mcabber/mcabber/commands.h |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4717 |
--- a/mcabber/mcabber/commands.h Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4718 |
+++ b/mcabber/mcabber/commands.h Tue Mar 12 01:21:22 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4719 |
@@ -5,32 +5,242 @@ |
74 | 4720 |
|
4721 |
#include <mcabber/config.h> |
|
4722 |
||
4723 |
-// Command structure |
|
4724 |
+// |
|
4725 |
+// TODO: |
|
4726 |
+// |
|
4727 |
+// * Clustering of options/switches |
|
4728 |
+// * Multivalue options |
|
4729 |
+// - list |
|
4730 |
+// - special checker |
|
4731 |
+// - or run checker multiple times |
|
4732 |
+// - or run command several times |
|
4733 |
+// - what if there are several of such arguments? |
|
4734 |
+// * --help |
|
4735 |
+// - use argument type names and clarify, if needed in descriptions |
|
4736 |
+// - command/subcommand descriptions |
|
4737 |
+// - or maybe just do "/help foo" |
|
4738 |
+// * Add argument type field and subsystem to check values. Uses so far: |
|
4739 |
+// - fjid (handle . and ./resource, perform check_jid_syntax()) |
|
4740 |
+// - bjid (handle ., strip resource, perform check_jid_syntax()) |
|
4741 |
+// - bjid in roster/buddylist (result - buddy?) |
|
4742 |
+// - name in roster/buddylist (result - buddy?) |
|
4743 |
+// - group in roster (result - buddy?) |
|
4744 |
+// - other non-space string (strip trailing/starting spaces) |
|
4745 |
+// - statusmask (restrictive, check symbols) |
|
4746 |
+// - jidmask (non-restrictive, compl: inform what jids match) |
|
4747 |
+// - search string (non-restrictive, compl: inform what matches, if possible) |
|
4748 |
+// - rosternote (non-restrictive) |
|
4749 |
+// - color (restrictive, semi-defined list) |
|
4750 |
+// - nick (non-restrictive) |
|
4751 |
+// - defined lists (restrictive) |
|
4752 |
+// - date (restrictive) |
|
4753 |
+// - percent (numerical, restrictive) |
|
4754 |
+// - number (result - int) |
|
4755 |
+// - filename (expand_filename(), g_utf8_to_filename()?) |
|
4756 |
+// - custom (maybe some helpers for constant stringlists) |
|
4757 |
+// - text message (compl: nicks in rooms, dictionary?) |
|
4758 |
+// * Non-argument checks for commands/subcommands: |
|
4759 |
+// - xmpp_is_online() |
|
4760 |
+// - current_buddy |
|
4761 |
+// * Subcommands with fallback to argument? |
|
4762 |
+// * [+foo|-foo] support? |
|
4763 |
+// * Usable subsystem for completion, based on user-supplied completors |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4764 |
+ |
74 | 4765 |
+// * for now we'll do without multi-options. |
4766 |
+// * and without clustering. |
|
4767 |
+// * checks |
|
4768 |
+// - argument type == public struct with name and callbacks, simple! |
|
4769 |
+// - command checks should be just single callbacks |
|
4770 |
+// * now, what checker needs? |
|
4771 |
+// - [in] value string (current or default) |
|
4772 |
+// - [in] additional input data for some generic checkers (like string2enum wordlist) |
|
4773 |
+// - [out] replacement value (not necessary string) |
|
4774 |
+// - replacement value may need freeing |
|
4775 |
+// - [out] error string |
|
4776 |
+// - that may need freeing |
|
4777 |
+ |
|
4778 |
+typedef struct cmdopts_struct cmdopts_t; |
|
4779 |
+typedef struct cmdopt_struct cmdopt_t; |
|
4780 |
+typedef struct cmdarg_struct cmdarg_t; |
|
4781 |
+typedef struct cmdarg_type_struct cmdarg_type_t; |
|
4782 |
+ |
|
4783 |
+// note, this is called before options are parsed! |
|
4784 |
+typedef gchar *(*cmd_checker_t)(cmdopts_t *opts); |
|
4785 |
+// command function itself |
|
4786 |
+typedef gchar *(*cmd_handler_t)(cmdopts_t *opts); |
|
4787 |
+// should check arg -> val -> val.arg and replace, if needed |
|
4788 |
+typedef gchar *(*cmdarg_checker_t)(cmdarg_t *arg); |
|
4789 |
+// free resources, used in arg -> val -> val.arg, if needed |
|
4790 |
+typedef void (*cmdarg_destructor_t)(cmdarg_t *arg); |
|
4791 |
+// todo |
|
4792 |
+typedef void (*cmdarg_completor_t)(void); // FIXME |
|
4793 |
+ |
|
4794 |
+typedef union { |
|
4795 |
+ guint uint; // unsigned integer |
|
4796 |
+ gint sint; // signed integer |
|
4797 |
+ guint swc; // switch count |
|
4798 |
+ const gchar *roarg; // default value |
|
4799 |
+ gchar *arg; // string argument |
|
4800 |
+ cmdopts_t *cmd; // subcommand |
|
4801 |
+ gpointer bud; // buddy data (roster entry) |
|
4802 |
+ gpointer ptr; // anything else |
|
4803 |
+} cmdarg_value_t; |
|
4804 |
+ |
|
4805 |
+typedef enum { |
|
4806 |
+ cmd_default = 0, // no flags |
|
4807 |
+ cmd_safe = 1<<0, // command is safe to use in mcabberrc |
|
4808 |
+} cmd_flags_t; |
|
4809 |
+typedef enum { |
|
4810 |
+ cmdopt_default = 0, // no flags |
|
4811 |
+ cmdopt_switch = 1<<0, // option have no argument |
|
4812 |
+} cmdopt_flags_t; |
|
4813 |
+typedef enum { |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4814 |
+ cmdarg_default = 0x0000, // no flags ['u' - user, 'p' - parser, 'c' - checker] |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4815 |
+ cmdarg_catchall = 0x0001, // u2p, argument consumes the end of command line |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4816 |
+ cmdarg_plain = 0x0002, // u2p, quotes and escapes are not processed |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4817 |
+ cmdarg_subcmd = 0x0004, // u2p, argument is subcommand |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4818 |
+ cmdarg_check = 0x0008, // u2p, force checker call on argument |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4819 |
+ cmdarg_required = 0x0010, // u2p[c], treat checker errors as errors or warnings (may be used by checker too) |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4820 |
+ cmdarg_visited = 0x0020, // p2p, marks initialized arguments |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4821 |
+ cmdarg_checked = 0x0040, // p2p, marks checked argument |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4822 |
+ cmdarg_freeme = 0x0080, // c2p, marks argument, that needs freeing |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4823 |
+ // convenience shortcuts |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4824 |
+ cmdarg_eol = 0x0003, // catchall + plain |
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4825 |
+ cmdarg_chreq = 0x0018, // check + required |
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4826 |
+ cmdarg_ppclear = 0x00E0, // pre-parse clear = visited + checked + freeme |
74 | 4827 |
+} cmdarg_flags_t; |
4828 |
+ |
|
4829 |
+struct cmdopts_struct { |
|
4830 |
+ const char *name; // [user,req] command name (error messages, help, subcommands) |
|
4831 |
+ cmd_flags_t flags; // [user,req] safe |
|
4832 |
+ cmd_checker_t check; // [user,req] checker routine |
|
4833 |
+ cmd_handler_t handle; // [user,req] main command processing function |
|
4834 |
+ cmdopt_t **opts; // [user,req] options |
|
4835 |
+ cmdarg_t **args; // [user,req] arguments |
|
4836 |
+ cmdopts_t **cmds; // [user,req] subcommands |
|
4837 |
+ gpointer userdata; // [user] |
|
4838 |
+}; |
|
4839 |
+struct cmdarg_struct { |
|
75
17cd00b2e722
[cmdopts] Struggling in chaos
Myhailo Danylenko <isbear@ukrpost.net>
parents:
74
diff
changeset
|
4840 |
+ const char *name; // [user,req] argument name - errors, help |
74 | 4841 |
+ cmdarg_flags_t flags; // [user,req] catchall, plain, required, subcommand |
4842 |
+ const char *defval; // [user,req] default value |
|
4843 |
+ cmdarg_type_t *type; // [user,req] type cbs - checker and completor |
|
4844 |
+ gpointer chkdata; // [user] instance data for type checker - eg string2enum list |
|
4845 |
+ gpointer userdata; // [user] |
|
4846 |
+ cmdarg_value_t value; // [parser,chk] current value |
|
4847 |
+}; |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4848 |
+struct cmdopt_struct { |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4849 |
+ cmdopt_flags_t flags; // [user,req] switch |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4850 |
+ char shortopt; // [user,req] |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4851 |
+ const char *longopt; // [user,req] |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4852 |
+ cmdarg_t arg; // [user,req] |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4853 |
+}; |
74 | 4854 |
+ |
4855 |
+struct cmdarg_type_struct { |
|
4856 |
+ cmdarg_checker_t check; // [user,req] check string and set argument value |
|
4857 |
+ cmdarg_destructor_t free; // [user,req] free argument value |
|
4858 |
+ cmdarg_completor_t complete; // [user,req] |
|
4859 |
+}; |
|
4860 |
+ |
|
4861 |
+void cmd_define (cmdopts_t *command); |
|
4862 |
+void cmd_undef (cmdopts_t *command); |
|
4863 |
+ |
|
4864 |
+// error cmdopts_parse_argument ( startptr, endptr, flags ) |
|
4865 |
+// Parses next argument according to flags and finishes it with zero. |
|
4866 |
+// Updates current/end pointers. Parsed string MUST be writable. |
|
4867 |
+// String may shrink in size (quotation/escapes), thus endpointer is also |
|
4868 |
+// updated. |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4869 |
+const char *cmdopts_parse_argument(gchar **pr, gchar **er, cmdarg_flags_t flags); |
74 | 4870 |
+ |
4871 |
+typedef enum { |
|
4872 |
+ cmdexe_default = 0, // no flags |
|
4873 |
+ cmdexe_check_safe = 1<<0, // we're parsing main config file |
|
4874 |
+ cmdexe_check_verbatim = 1<<1, // check for verbatim input mode |
|
4875 |
+} cmdexe_flags_t; |
|
4876 |
+typedef enum { |
|
4877 |
+ cmd_result_ok = 0, // all is ok |
|
4878 |
+ cmd_result_syntax_error, // syntax, environment or argument check error |
|
4879 |
+ cmd_result_not_found, // no such command |
|
4880 |
+ cmd_result_runtime_error, // error while executing command |
|
4881 |
+ cmd_result_verbatim, // we're in verbatim mode and this is not "msay" |
|
4882 |
+ cmd_result_input, // [process_line only] line was a message |
|
4883 |
+ cmd_result_quit = 255, // this is hard-coded "quit" command |
|
4884 |
+} cmd_result_t; |
|
4885 |
+ |
|
4886 |
+// error cmd_execute ( command, flags ) |
|
4887 |
+// Checks for "quit", "msay" in verbatim mode, expands aliases, checks command |
|
4888 |
+// for safety of execution, parses command's arguments according to definition, |
|
4889 |
+// executes command function. Returns cmdexe_result_ok (0) if all was ok. |
|
4890 |
+// Non-zero values mean, that command was not executed for some reason. |
|
4891 |
+// One special value is cmd_result_quit (255) - if it is "quit" command. |
|
4892 |
+cmd_result_t cmd_execute (gchar *commandline, cmdexe_flags_t flags); |
|
4893 |
+ |
|
4894 |
+// process_line(line) |
|
4895 |
+// Process a command/message line. If this isn't a command, this is a message |
|
4896 |
+// and it is sent to the currently selected buddy. |
|
4897 |
+// Returns 255 if the line is the /quit command, 0 on success and some other |
|
4898 |
+// error codes. |
|
4899 |
+cmd_result_t process_line(const char *line); |
|
4900 |
+ |
|
4901 |
+// |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4902 |
+// Standard types |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4903 |
+// |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4904 |
+ |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4905 |
typedef struct { |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4906 |
- char name[32]; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4907 |
- const char *help; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4908 |
- guint completion_flags[2]; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4909 |
- void (*func)(char *); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4910 |
- gpointer userdata; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4911 |
-} cmd; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4912 |
+ const char *name; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4913 |
+ guint value; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4914 |
+} string2enum_t; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4915 |
|
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4916 |
-void cmd_init(void); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4917 |
-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
|
4918 |
-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
|
4919 |
-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
|
4920 |
-char *expandalias(const char *line); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4921 |
-#ifdef MODULES_ENABLE |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4922 |
-gpointer cmd_del(gpointer id); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4923 |
-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
|
4924 |
- void (*f)(char*), gpointer userdata); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4925 |
-gboolean cmd_set_safe(const gchar *name, gboolean safe); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4926 |
+void cmdarg_free_gfree (cmdarg_t *arg); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4927 |
+ |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4928 |
+gchar *cmdarg_check_nonspace (cmdarg_t *arg); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4929 |
+gchar *cmdarg_check_roster_bjid (cmdarg_t *arg); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4930 |
+gchar *cmdarg_check_roster_resource (cmdarg_t *arg); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4931 |
+gchar *cmdarg_check_fjid (cmdarg_t *arg); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4932 |
+gchar *cmdarg_check_uint (cmdarg_t *arg); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4933 |
+gchar *cmdarg_check_statusmask (cmdarg_t *arg); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4934 |
+gchar *cmdarg_check_string2enum (cmdarg_t *arg); |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4935 |
+ |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4936 |
+const cmdarg_type_t *cmdarg_type_nonspace; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4937 |
+const cmdarg_type_t *cmdarg_type_roster_bjid; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4938 |
+const cmdarg_type_t *cmdarg_type_roster_resource; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4939 |
+const cmdarg_type_t *cmdarg_type_fjid; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4940 |
+const cmdarg_type_t *cmdarg_type_uint; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4941 |
+const cmdarg_type_t *cmdarg_type_statusmask; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4942 |
+const cmdarg_type_t *cmdarg_type_string2enum; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4943 |
+const cmdarg_type_t *cmdarg_type_color; |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4944 |
+ |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4945 |
+// |
74 | 4946 |
+// Private |
4947 |
+// |
|
4948 |
+ |
|
4949 |
+void cmd_init (void); |
|
4950 |
+void cmd_uninit (void); |
|
4951 |
+ |
|
4952 |
+#if 0 |
|
4953 |
+// error cmdopts_parse_internal ( startptr, endptr, commanddef ) |
|
4954 |
+// Parses command arguments according to command definition. |
|
4955 |
+// Parsed string MUST be writable. Regardless of success or error, input |
|
4956 |
+// string should be considered corrupted by parsing process. |
|
4957 |
+// Even in case of error, commanddef should be passed to cmdopts_free(). |
|
4958 |
+gchar *cmdopts_parse_internal(gchar **pr, gchar **er, cmdopts_t *command); |
|
4959 |
+ |
|
4960 |
+// cmdopts_free ( commanddef ) |
|
4961 |
+// Free various parser data, used in parsing process |
|
4962 |
+void cmdopts_free(cmdopts_t *command); |
|
4963 |
#endif |
|
4964 |
-gboolean cmd_is_safe(const gchar *name); |
|
4965 |
+ |
|
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4966 |
+typedef enum { |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4967 |
+ 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
|
4968 |
+ msgtype_normal, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4969 |
+ msgtype_headline, |
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4970 |
+} msgtype_t; |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4971 |
|
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4972 |
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
|
4973 |
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
|
4974 |
-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
|
4975 |
-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
|
4976 |
+void cmd_setstatus(const char *recipient, |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4977 |
+ const char *status, const char *message); |
71
2bdd3252d918
[cmdopts] Convert /buffer, merge subcmd_t and cmdopts_t, auto-print error
Myhailo Danylenko <isbear@ukrpost.net>
parents:
70
diff
changeset
|
4978 |
+void say_cmd(char *arg, msgtype_t msgtype); |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4979 |
|
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
4980 |
#endif /* __MCABBER_COMMANDS_H__ */ |
70
e2ef34130809
[cmdopts] Convert /group, /say, /msay
Myhailo Danylenko <isbear@ukrpost.net>
parents:
69
diff
changeset
|
4981 |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4982 |
diff -r b527e8800278 mcabber/mcabber/roster.c |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4983 |
--- a/mcabber/mcabber/roster.c Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
4984 |
+++ b/mcabber/mcabber/roster.c Tue Mar 12 01:21:22 2013 +0200 |
66 | 4985 |
@@ -1586,13 +1586,14 @@ |
4986 |
// Look for a buddy whose name or jid contains string. |
|
4987 |
// Search begins at current_buddy; if no match is found in the the buddylist, |
|
4988 |
// return NULL; |
|
4989 |
+// Note: before this function considered its argument to be in local encoding, |
|
4990 |
+// now argument must be in utf8. |
|
4991 |
GList *buddy_search(char *string) |
|
4992 |
{ |
|
4993 |
GList *buddy = current_buddy; |
|
4994 |
roster *roster_usr; |
|
4995 |
if (!buddylist || !current_buddy) return NULL; |
|
4996 |
for (;;) { |
|
4997 |
- gchar *jid_locale, *name_locale; |
|
4998 |
char *found = NULL; |
|
4999 |
||
5000 |
buddy = g_list_next(buddy); |
|
5001 |
@@ -1601,17 +1602,13 @@ |
|
5002 |
||
5003 |
roster_usr = (roster*)buddy->data; |
|
5004 |
||
5005 |
- jid_locale = from_utf8(roster_usr->jid); |
|
5006 |
- if (jid_locale) { |
|
5007 |
- found = strcasestr(jid_locale, string); |
|
5008 |
- g_free(jid_locale); |
|
5009 |
+ if (roster_usr->jid) { |
|
5010 |
+ found = strcasestr(roster_usr->jid, string); |
|
5011 |
if (found) |
|
5012 |
return buddy; |
|
5013 |
} |
|
5014 |
- name_locale = from_utf8(roster_usr->name); |
|
5015 |
- if (name_locale) { |
|
5016 |
- found = strcasestr(name_locale, string); |
|
5017 |
- g_free(name_locale); |
|
5018 |
+ if (roster_usr->name) { |
|
5019 |
+ found = strcasestr(roster_usr->name, string); |
|
5020 |
if (found) |
|
5021 |
return buddy; |
|
5022 |
} |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
5023 |
diff -r b527e8800278 mcabber/mcabber/screen.c |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
5024 |
--- a/mcabber/mcabber/screen.c Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
5025 |
+++ b/mcabber/mcabber/screen.c Tue Mar 12 01:21:22 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
5026 |
@@ -3630,7 +3630,7 @@ |
74 | 5027 |
{ |
5028 |
scr_check_auto_away(TRUE); |
|
5029 |
last_activity_buddy = current_buddy; |
|
5030 |
- if (process_line(inputLine)) |
|
5031 |
+ if (process_line(inputLine) == cmd_result_quit) |
|
5032 |
return 255; |
|
5033 |
// Add line to history |
|
5034 |
scr_cmdhisto_addline(inputLine); |
|
76
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
5035 |
diff -r b527e8800278 mcabber/mcabber/xmpp_iq.c |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
5036 |
--- a/mcabber/mcabber/xmpp_iq.c Mon Mar 11 21:45:31 2013 +0200 |
3c8b784f92c7
[cmdopts,fix-memleak] Start to clean things a bit
Myhailo Danylenko <isbear@ukrpost.net>
parents:
75
diff
changeset
|
5037 |
+++ b/mcabber/mcabber/xmpp_iq.c Tue Mar 12 01:21:22 2013 +0200 |
69
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
5038 |
@@ -289,10 +289,7 @@ |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
5039 |
if (value) { |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
5040 |
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
|
5041 |
if (s->name) { |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
5042 |
- 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
|
5043 |
- message ? message : ""); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
5044 |
- cmd_setstatus(NULL, status); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
5045 |
- g_free(status); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
5046 |
+ cmd_setstatus(NULL, s->status, message ? message : ""); |
1b6295674c07
[cmdopts] Convert /add and /del, fix quotes, add catchall flags
Myhailo Danylenko <isbear@ukrpost.net>
parents:
68
diff
changeset
|
5047 |
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
|
5048 |
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
|
5049 |
"Status has been changed"); |