iNow scripts are run in their directory. - 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 8df91710dfdf1f9091be9ed40a259933c7b62951 /scm/geomyidae/commit/8df91710dfdf1f9091be9ed40a259933c7b62951.gph bitreich.org 70 1parent bb858e05c4c1e15bd54b5bcb37ebac0f9356af47 /scm/geomyidae/commit/bb858e05c4c1e15bd54b5bcb37ebac0f9356af47.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:37:10 +0100 Err bitreich.org 70 i Err bitreich.org 70 iNow scripts are run in their directory. Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M handlr.c | 15 ++++++++++++++- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 14 insertions(+), 1 deletion(-) 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@@ -194,7 +194,7 @@ void Err bitreich.org 70 i handledcgi(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, *ln, addr[512]; Err bitreich.org 70 i+ char *p, *path, *ln, addr[512]; Err bitreich.org 70 i int outpipe[2]; Err bitreich.org 70 i Elems *el; Err bitreich.org 70 i Err bitreich.org 70 i@@ -203,6 +203,15 @@ handledcgi(int sock, char *file, char *port, char *base, char *args, Err bitreich.org 70 i if(pipe(outpipe) < 0) Err bitreich.org 70 i return; 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 p = file; Err bitreich.org 70 i@@ -224,6 +233,8 @@ handledcgi(int sock, char *file, char *port, char *base, char *args, Err bitreich.org 70 i case 0: Err bitreich.org 70 i dup2(outpipe[1], 1); Err bitreich.org 70 i close(outpipe[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@@ -242,6 +253,8 @@ handledcgi(int sock, char *file, char *port, char *base, char *args, Err bitreich.org 70 i tprintf(sock, "\r\n.\r\n\r\n"); Err bitreich.org 70 i 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 .