iTrying to fix the base path. - 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 bb858e05c4c1e15bd54b5bcb37ebac0f9356af47 /scm/geomyidae/commit/bb858e05c4c1e15bd54b5bcb37ebac0f9356af47.gph bitreich.org 70 1parent 708d5eec1eaa6e7b3189515adcc353ff4058d592 /scm/geomyidae/commit/708d5eec1eaa6e7b3189515adcc353ff4058d592.gph bitreich.org 70 hAuthor: Christoph Lohmann <20h@r-36.net> URL:mailto:20h@r-36.net bitreich.org 70 iDate: Wed, 16 Mar 2011 06:26:06 +0100 Err bitreich.org 70 i Err bitreich.org 70 iTrying to fix the base path. Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M handlr.c | 17 +++++++++++++++-- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 15 insertions(+), 2 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/handlr.c b/handlr.c /scm/geomyidae/file/handlr.c.gph bitreich.org 70 i@@ -149,13 +149,22 @@ void Err bitreich.org 70 i handlecgi(int sock, char *file, char *port, char *base, char *args, Err bitreich.org 70 i char *sear) Err bitreich.org 70 i { Err bitreich.org 70 i- char *p; Err bitreich.org 70 i+ char *p, *path; Err bitreich.org 70 i Err bitreich.org 70 i USED(base); Err bitreich.org 70 i USED(port); Err bitreich.org 70 i Err bitreich.org 70 i+ path = gstrdup(file); Err bitreich.org 70 i+ p = strrchr(path, '/'); Err bitreich.org 70 i+ if (p != nil) Err bitreich.org 70 i+ p[1] = '\0'; Err bitreich.org 70 i+ else { Err bitreich.org 70 i+ free(path); Err bitreich.org 70 i+ path = nil; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i p = strrchr(file, '/'); Err bitreich.org 70 i- if(p == nil) Err bitreich.org 70 i+ if (p == nil) Err bitreich.org 70 i p = file; Err bitreich.org 70 i Err bitreich.org 70 i if(sear == nil) Err bitreich.org 70 i@@ -166,11 +175,15 @@ handlecgi(int sock, char *file, char *port, char *base, char *args, Err bitreich.org 70 i dup2(sock, 2); Err bitreich.org 70 i switch(fork()) { Err bitreich.org 70 i case 0: Err bitreich.org 70 i+ if (path != nil) Err bitreich.org 70 i+ chdir(path); Err bitreich.org 70 i execl(file, p, sear, args, (char *)nil); Err bitreich.org 70 i case -1: Err bitreich.org 70 i break; Err bitreich.org 70 i default: Err bitreich.org 70 i wait(NULL); Err bitreich.org 70 i+ if (path != nil) Err bitreich.org 70 i+ free(path); Err bitreich.org 70 i shutdown(sock, SHUT_RDWR); Err bitreich.org 70 i close(sock); Err bitreich.org 70 i break; Err bitreich.org 70 .