author | Myhailo Danylenko <isbear@isbear.org.ua> |
Fri, 09 Dec 2016 02:12:34 +0200 | |
changeset 92 | 66f7e2aa040c |
parent 42 | 0ee5e9903fa1 |
permissions | -rw-r--r-- |
42
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
1 |
# HG changeset patch |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
2 |
# Parent ebe29230ffb5572d2c37ab811d34ae970d6293ca |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
3 |
[work-in-progress] Allow user to specify top to bottom window order |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
4 |
|
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
5 |
diff -r ebe29230ffb5 mcabber/mcabber/utils.c |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
6 |
--- a/mcabber/mcabber/utils.c Wed Aug 01 23:44:09 2012 +0300 |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
7 |
+++ b/mcabber/mcabber/utils.c Fri Aug 03 14:35:36 2012 +0300 |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
8 |
@@ -650,6 +650,42 @@ |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
9 |
g_free(arglst); |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
10 |
} |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
11 |
|
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
12 |
+// parse_list(arg, cb, udata) |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
13 |
+// Calls cb for every element in space/semicolon/comma-separated list. |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
14 |
+// Designed to work in-place, so, no escapes, quoting etc. |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
15 |
+// Terminates parsing if callback returns false. |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
16 |
+void parse_list(const char *arg, parse_list_cb_t cb, void *udata) |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
17 |
+{ |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
18 |
+ const char *p, *start; |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
19 |
+ enum { |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
20 |
+ in_space, |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
21 |
+ in_string, |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
22 |
+ } state; |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
23 |
+ |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
24 |
+ if (!arg) |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
25 |
+ return; |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
26 |
+ |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
27 |
+ state = in_space; |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
28 |
+ while ( *p ) { |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
29 |
+ if ( *p == ' ' || *p == ';' || *p == ',' ) { |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
30 |
+ if ( state == in_string ) { |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
31 |
+ if ( ! cb ( start, p, udata ) ) |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
32 |
+ return; |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
33 |
+ state = in_space; |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
34 |
+ } |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
35 |
+ } else { |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
36 |
+ if ( state == in_space ) { |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
37 |
+ start = p; |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
38 |
+ state = in_string; |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
39 |
+ } |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
40 |
+ } |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
41 |
+ p ++; |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
42 |
+ } |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
43 |
+ |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
44 |
+ if ( state == in_string ) |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
45 |
+ cb ( start, p, udata ); |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
46 |
+} |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
47 |
+ |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
48 |
// replace_nl_with_dots(bufstr) |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
49 |
// Replace '\n' with "(...)" (or with a NUL if the string is too short) |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
50 |
void replace_nl_with_dots(char *bufstr) |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
51 |
diff -r ebe29230ffb5 mcabber/mcabber/utils.h |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
52 |
--- a/mcabber/mcabber/utils.h Wed Aug 01 23:44:09 2012 +0300 |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
53 |
+++ b/mcabber/mcabber/utils.h Fri Aug 03 14:35:36 2012 +0300 |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
54 |
@@ -43,6 +43,11 @@ |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
55 |
char **split_arg(const char *arg, unsigned int n, int dontstriplast); |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
56 |
void free_arg_lst(char **arglst); |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
57 |
|
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
58 |
+/* fast in-place string split on space/semicolon/comma |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
59 |
+ * stops processing if callback returns false value */ |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
60 |
+typedef int (*parse_list_cb_t)(const char *start, const char *end, void *udata); |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
61 |
+void parse_list(const char *arg, parse_list_cb_t cb, void *udata); |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
62 |
+ |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
63 |
void replace_nl_with_dots(char *bufstr); |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
64 |
char *ut_expand_tabs(const char *text); |
0ee5e9903fa1
Add fix-create-new-cat.diff
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff
changeset
|
65 |