Add pipe escaping to descriptions of items. - geomyidae - A small C-based gopherd.
git clone git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae/
Log
Files
Refs
Tags
README
LICENSE
---
commit ca5a2fc2bbcaf990979b29c43c8f0e4b69c2761e
parent c015b09cb45af558167c6dc2053c6c20810a97ad
Author: Christoph Lohmann <20h@r-36.net>
Date:   Tue, 10 Oct 2017 20:00:49 +0200

Add pipe escaping to descriptions of items.

Diffstat:
  M ind.c                               |      11 +++++++++--
  M index.gph                           |       1 +

2 files changed, 10 insertions(+), 2 deletions(-)
---
diff --git a/ind.c b/ind.c
@@ -236,18 +236,25 @@ addelem(Elems *e, char *s)
 Elems *
 getadv(char *str)
 {
-        char *b, *e, *o;
+        char *b, *e, *o, *bo;
         Elems *ret;
 
         ret = xcalloc(1, sizeof(Elems));
         if (str[0] == '[') {
                 o = xstrdup(str);
                 b = o + 1;
-                while ((e = strchr(b, '|')) != nil) {
+                bo = b;
+                while ((e = strchr(bo, '|')) != nil) {
+                        if (e != bo && e[-1] == '\\') {
+                                memmove(&e[-1], e, strlen(e));
+                                bo = e;
+                                continue;
+                        }
                         *e = '\0';
                         e++;
                         addelem(ret, b);
                         b = e;
+                        bo = b;
                 }
 
                 e = strchr(b, ']');
diff --git a/index.gph b/index.gph
@@ -3,4 +3,5 @@ tcomment
 [1|R-36|/|server|port]
 [0|file - comment|/file.dat|server|port]
 [h|http://www.heise.de|URL:http://www.heise.de|server|port]
+[0|some \| escape and [ special characters ] test|error|server|port]