iReadd arguments after realpath after latest printelem() changes. - 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 3401df4e6802a68dd34581ae0de6b7e34f45ea12 /scm/geomyidae/commit/3401df4e6802a68dd34581ae0de6b7e34f45ea12.gph bitreich.org 70 1parent 6f22091df20685c8b7a8a89823aa31606bea2be0 /scm/geomyidae/commit/6f22091df20685c8b7a8a89823aa31606bea2be0.gph bitreich.org 70 hAuthor: Christoph Lohmann <20h@r-36.net> URL:mailto:20h@r-36.net bitreich.org 70 iDate: Mon, 5 Apr 2021 22:05:11 +0200 Err bitreich.org 70 i Err bitreich.org 70 iReadd arguments after realpath after latest printelem() changes. Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M ind.c | 15 +++++++++++++-- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 13 insertions(+), 2 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@@ -403,7 +403,7 @@ scanfile(char *fname) Err bitreich.org 70 i int Err bitreich.org 70 i printelem(int fd, Elems *el, char *file, char *base, char *addr, char *port) Err bitreich.org 70 i { Err bitreich.org 70 i- char *path, *p, *argbase, buf[PATH_MAX+1]; Err bitreich.org 70 i+ char *path, *p, *argbase, buf[PATH_MAX+1], *argp; Err bitreich.org 70 i int len, blen; Err bitreich.org 70 i Err bitreich.org 70 i if (!strcmp(el->e[3], "server")) { Err bitreich.org 70 i@@ -439,6 +439,7 @@ printelem(int fd, Elems *el, char *file, char *base, char *addr, char *port) Err bitreich.org 70 i else Err bitreich.org 70 i len = strlen(path); Err bitreich.org 70 i Err bitreich.org 70 i+ /* Strip off arguments for realpath. */ Err bitreich.org 70 i argbase = strchr(el->e[2], '?'); Err bitreich.org 70 i if (argbase != NULL) Err bitreich.org 70 i blen = argbase - el->e[2]; Err bitreich.org 70 i@@ -451,8 +452,18 @@ printelem(int fd, Elems *el, char *file, char *base, char *addr, char *port) Err bitreich.org 70 i if ((path = realpath(buf, NULL)) && Err bitreich.org 70 i !strncmp(base, path, strlen(base))) { Err bitreich.org 70 i p = path + strlen(base); Err bitreich.org 70 i+ Err bitreich.org 70 i+ /* Err bitreich.org 70 i+ * Do not forget to readd arguments which were Err bitreich.org 70 i+ * stripped off. Err bitreich.org 70 i+ */ Err bitreich.org 70 i+ if (argbase != NULL) Err bitreich.org 70 i+ argp = smprintf("%s%s", p[0]? p : "/", argbase); Err bitreich.org 70 i+ else Err bitreich.org 70 i+ argp = xstrdup(p[0]? p : "/"); Err bitreich.org 70 i+ Err bitreich.org 70 i free(el->e[2]); Err bitreich.org 70 i- el->e[2] = xstrdup(p[0]? p : "/"); Err bitreich.org 70 i+ el->e[2] = argp; Err bitreich.org 70 i } Err bitreich.org 70 i free(path); Err bitreich.org 70 i } Err bitreich.org 70 .