iSave geomyidae from invalid gph files. - 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 aef0076447d9ca07b4e758287f611e6cbbda224e /scm/geomyidae/commit/aef0076447d9ca07b4e758287f611e6cbbda224e.gph bitreich.org 70 1parent 387ac8be93c952305d9ef77e95ca21852cd47f4a /scm/geomyidae/commit/387ac8be93c952305d9ef77e95ca21852cd47f4a.gph bitreich.org 70 hAuthor: Christoph Lohmann <20h@r-36.net> URL:mailto:20h@r-36.net bitreich.org 70 iDate: Wed, 14 Jun 2017 22:54:50 +0200 Err bitreich.org 70 i Err bitreich.org 70 iSave geomyidae from invalid gph files. Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M ind.c | 58 ++++++++++++++++--------------- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 30 insertions(+), 28 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/ind.c b/ind.c /scm/geomyidae/file/ind.c.gph bitreich.org 70 i@@ -177,41 +177,43 @@ addelem(Elems *e, char *s) Err bitreich.org 70 i Elems * Err bitreich.org 70 i getadv(char *str) Err bitreich.org 70 i { Err bitreich.org 70 i- char *b, *e; Err bitreich.org 70 i+ char *b, *e, *o; Err bitreich.org 70 i Elems *ret; Err bitreich.org 70 i Err bitreich.org 70 i ret = xcalloc(1, sizeof(Elems)); Err bitreich.org 70 i- if(*str != '[') { 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- 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- return ret; Err bitreich.org 70 i- } Err bitreich.org 70 i+ if (str[0] == '[') { Err bitreich.org 70 i+ o = xstrdup(str); Err bitreich.org 70 i+ b = o + 1; Err bitreich.org 70 i+ while ((e = strchr(b, '|')) != nil) { Err bitreich.org 70 i+ *e = '\0'; Err bitreich.org 70 i+ e++; Err bitreich.org 70 i+ addelem(ret, b); Err bitreich.org 70 i+ b = e; Err bitreich.org 70 i+ } Err bitreich.org 70 i Err bitreich.org 70 i- b = str + 1; Err bitreich.org 70 i- while((e = strchr(b, '|')) != nil) { Err bitreich.org 70 i- *e = '\0'; Err bitreich.org 70 i- e++; Err bitreich.org 70 i- addelem(ret, b); Err bitreich.org 70 i- b = e; Err bitreich.org 70 i- } Err bitreich.org 70 i+ e = strchr(b, ']'); Err bitreich.org 70 i+ if (e != nil) { Err bitreich.org 70 i+ *e = '\0'; Err bitreich.org 70 i+ addelem(ret, b); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ free(o); Err bitreich.org 70 i+ if (ret->e != nil && ret->num == 5) Err bitreich.org 70 i+ return ret; Err bitreich.org 70 i Err bitreich.org 70 i- e = strchr(b, ']'); Err bitreich.org 70 i- if(e != nil) { Err bitreich.org 70 i- *e = '\0'; Err bitreich.org 70 i- addelem(ret, b); Err bitreich.org 70 i- } Err bitreich.org 70 i- if(ret->e == nil) { Err bitreich.org 70 i- free(ret); Err bitreich.org 70 i- return nil; 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+ 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 return ret; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 .