dynamic-layout.diff
author Myhailo Danylenko <isbear@ukrpost.net>
Wed, 15 May 2013 13:07:05 +0300
changeset 85 93c3cc0d7891
parent 42 0ee5e9903fa1
permissions -rw-r--r--
[refresh] Add round-high-priority.diff, refresh => API 41-42 * add round-high-priority.diff * refresh patches according to changes in upstream * API version bump - 41-42
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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