iImplement new escaping in geomyidae. - geomyidae - A small C-based gopherd. Err bitreich.org 70 hgit clone git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae/ URL:git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae/ bitreich.org 70 1Log /scm/geomyidae/log.gph bitreich.org 70 1Files /scm/geomyidae/files.gph bitreich.org 70 1Refs /scm/geomyidae/refs.gph bitreich.org 70 1Tags /scm/geomyidae/tag bitreich.org 70 1README /scm/geomyidae/file/README.gph bitreich.org 70 1LICENSE /scm/geomyidae/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 204c8cedb99683d264e2612a4e126142a20e3042 /scm/geomyidae/commit/204c8cedb99683d264e2612a4e126142a20e3042.gph bitreich.org 70 1parent 25d46ce743e68c9d920190bfe29262f16214b194 /scm/geomyidae/commit/25d46ce743e68c9d920190bfe29262f16214b194.gph bitreich.org 70 hAuthor: Christoph Lohmann <20h@r-36.net> URL:mailto:20h@r-36.net bitreich.org 70 iDate: Tue, 26 Jul 2022 23:39:22 +0200 Err bitreich.org 70 i Err bitreich.org 70 iImplement new escaping in geomyidae. Err bitreich.org 70 i Err bitreich.org 70 iThanks Bob for all of your help and hints! Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M geomyidae.8 | 10 +++++----- Err bitreich.org 70 i M ind.c | 37 ++++++++++--------------------- Err bitreich.org 70 i M index.gph | 6 ++++-- Err bitreich.org 70 i Err bitreich.org 70 i3 files changed, 21 insertions(+), 32 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/geomyidae.8 b/geomyidae.8 /scm/geomyidae/file/geomyidae.8.gph bitreich.org 70 i@@ -257,11 +257,11 @@ Note: geomyidae doesn't require "informational" text to be formally Err bitreich.org 70 i Typed as "[i|...]"; any line Err bitreich.org 70 i .Em not Err bitreich.org 70 i beginning with "[" is treated as informational, greatly simplifying the Err bitreich.org 70 i-formatting of index.gph files. However, if a line begins with a "t", this Err bitreich.org 70 i-"t" is left out. This quirk is there to allow "informational" text lines Err bitreich.org 70 i-beginning with a "[" to display. For dynamically generated index files Err bitreich.org 70 i-it may be desirable to either formally Type informational text or run Err bitreich.org 70 i-it through a filter to add a second "t" - .ie sed 's/^t/&&/' . Err bitreich.org 70 i+formatting of index.gph files. If you want to display some informational Err bitreich.org 70 i+text beginning with "[" you can use the special case of an empty item Err bitreich.org 70 i+type. "[|[some link" will be shortened to "[some link". For dynamically Err bitreich.org 70 i+generated content it may be desirable to either formally type Err bitreich.org 70 i+informational text or run it through a filter to prepend "[|" - .ie sed 's,^[,[|&,' . Err bitreich.org 70 i .Ed Err bitreich.org 70 i .Bd -filled Err bitreich.org 70 i Note 2: You can escape a pipe ("|") character in for example a Err bitreich.org 70 1diff --git a/ind.c b/ind.c /scm/geomyidae/file/ind.c.gph bitreich.org 70 i@@ -255,12 +255,15 @@ getadv(char *str) Err bitreich.org 70 i char *b, *e, *o, *bo; Err bitreich.org 70 i Elems *ret; Err bitreich.org 70 i Err bitreich.org 70 i+ if (strlen(str) == 0) Err bitreich.org 70 i+ return NULL; Err bitreich.org 70 i+ Err bitreich.org 70 i ret = xcalloc(1, sizeof(Elems)); Err bitreich.org 70 i Err bitreich.org 70 i if (strchr(str, '\t')) { Err bitreich.org 70 i addelem(ret, "i"); Err bitreich.org 70 i addelem(ret, "Happy helping ☃ here: You tried to " Err bitreich.org 70 i- "output a spurious tab character. This will " Err bitreich.org 70 i+ "output a spurious TAB character. This will " Err bitreich.org 70 i "break gopher. Please review your scripts. " Err bitreich.org 70 i "Have a nice day!"); Err bitreich.org 70 i addelem(ret, "Err"); Err bitreich.org 70 i@@ -270,7 +273,8 @@ getadv(char *str) Err bitreich.org 70 i return ret; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i- if (str[0] == '[') { Err bitreich.org 70 i+ /* Check for escape sequence. */ Err bitreich.org 70 i+ if (str[0] == '[' && str[1] != '|') { Err bitreich.org 70 i o = xstrdup(str); Err bitreich.org 70 i b = o + 1; Err bitreich.org 70 i bo = b; Err bitreich.org 70 i@@ -294,38 +298,21 @@ getadv(char *str) Err bitreich.org 70 i } Err bitreich.org 70 i free(o); Err bitreich.org 70 i Err bitreich.org 70 i- /* Err bitreich.org 70 i- * TODO: Add new [| escape handling after brcon2022 discussion. Err bitreich.org 70 i- */ Err bitreich.org 70 i- if (ret->e != NULL && ret->e[0] != NULL && ret->e[0][0] == '\0') { Err bitreich.org 70 i- freeelem(ret); Err bitreich.org 70 i- ret = xcalloc(1, sizeof(Elems)); Err bitreich.org 70 i- Err bitreich.org 70 i- addelem(ret, "i"); Err bitreich.org 70 i- addelem(ret, "Happy helping ☃ here: You did not " Err bitreich.org 70 i- "specify an item type on this line. Please " Err bitreich.org 70 i- "review your scripts. " Err bitreich.org 70 i- "Have a nice day!"); Err bitreich.org 70 i- addelem(ret, "Err"); Err bitreich.org 70 i- addelem(ret, "server"); Err bitreich.org 70 i- addelem(ret, "port"); Err bitreich.org 70 i- Err bitreich.org 70 i+ if (ret->e != NULL && ret->e[0] != NULL && Err bitreich.org 70 i+ ret->e[0][0] != '\0' && ret->num == 5) { Err bitreich.org 70 i return ret; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i- if (ret->e != NULL && ret->num == 5) Err bitreich.org 70 i- return ret; Err bitreich.org 70 i- Err bitreich.org 70 i /* Invalid entry: Give back the whole line. */ Err bitreich.org 70 i freeelem(ret); Err bitreich.org 70 i ret = xcalloc(1, sizeof(Elems)); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i- b = str; Err bitreich.org 70 i- if (*str == 't') Err bitreich.org 70 i- b++; Err bitreich.org 70 i addelem(ret, "i"); Err bitreich.org 70 i- addelem(ret, b); Err bitreich.org 70 i+ /* Jump over escape sequence. */ Err bitreich.org 70 i+ if (str[0] == '[' && str[1] == '|') Err bitreich.org 70 i+ str += 2; Err bitreich.org 70 i+ addelem(ret, str); Err bitreich.org 70 i addelem(ret, "Err"); Err bitreich.org 70 i addelem(ret, "server"); Err bitreich.org 70 i addelem(ret, "port"); Err bitreich.org 70 1diff --git a/index.gph b/index.gph /scm/geomyidae/file/index.gph.gph bitreich.org 70 i@@ -1,12 +1,14 @@ Err bitreich.org 70 i comment Err bitreich.org 70 i-tcomment Err bitreich.org 70 i+tcomment (old style comment) Err bitreich.org 70 i [1|R-36|/|server|port] Err bitreich.org 70 i [0|file - comment|/file.txt|server|port] Err bitreich.org 70 i [h|http://www.heise.de|URL:http://www.heise.de|server|port] Err bitreich.org 70 i [0|some \| escape and [ special characters ] test|error|server|port] Err bitreich.org 70 i [9|binary data file|/file.dat|server|port] Err bitreich.org 70 i+[9|unclosed entry|/file.dat|server|port Err bitreich.org 70 i [|empty type||server|port] Err bitreich.org 70 i-[|Escape something Err bitreich.org 70 i+[|Escape something, [| is skipped. Err bitreich.org 70 i some invalid line Err bitreich.org 70 i Err bitreich.org 70 i+[|[9|binary data file (escaped entry, shown as 'i')|/file.dat|server|port] Err bitreich.org 70 i Err bitreich.org 70 .