iimprovements: - 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 c98811c741255305b3fbff36a7b06bfb263d3ebc /scm/geomyidae/commit/c98811c741255305b3fbff36a7b06bfb263d3ebc.gph bitreich.org 70 1parent 9a2203506973a803e74ffa80a27f2bf1919b68cc /scm/geomyidae/commit/9a2203506973a803e74ffa80a27f2bf1919b68cc.gph bitreich.org 70 hAuthor: Hiltjo Posthuma URL:mailto:hiltjo@codemadness.org bitreich.org 70 iDate: Sat, 10 Jun 2017 15:49:54 +0200 Err bitreich.org 70 i Err bitreich.org 70 iimprovements: Err bitreich.org 70 i Err bitreich.org 70 i- check all memory allocations, rename them to the common used names: Err bitreich.org 70 i xmalloc, xrealloc, xstrdup. Err bitreich.org 70 i- show an error when a CGI program using execl() fails in some way. Err bitreich.org 70 i- minor style and remove an unused variable (len = -1). Err bitreich.org 70 i Err bitreich.org 70 idocumentation improvements: Err bitreich.org 70 i- document root directory must be absolute. Err bitreich.org 70 i- typo fix Err bitreich.org 70 i Err bitreich.org 70 iSigned-off-by: Christoph Lohmann <20h@r-36.net> Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M CGI | 2 +- Err bitreich.org 70 i M geomyidae.8 | 3 ++- Err bitreich.org 70 i M handlr.c | 14 ++++++++------ Err bitreich.org 70 i M ind.c | 73 +++++++++++++++++++------------ Err bitreich.org 70 i M ind.h | 4 +++- Err bitreich.org 70 i M main.c | 4 ++-- Err bitreich.org 70 i Err bitreich.org 70 i6 files changed, 62 insertions(+), 38 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/CGI b/CGI /scm/geomyidae/file/CGI.gph bitreich.org 70 i@@ -51,7 +51,7 @@ is: Err bitreich.org 70 i -> $host = server host Err bitreich.org 70 i -> $port = server port Err bitreich.org 70 i Err bitreich.org 70 i-If borth ways of input are combined, the variables are set as following: Err bitreich.org 70 i+If both ways of input are combined, the variables are set as following: Err bitreich.org 70 i Err bitreich.org 70 i C: /test.cgi?hello=world searchterm (Beware! A Tab!) Err bitreich.org 70 i -> $search = »searchterm« Err bitreich.org 70 1diff --git a/geomyidae.8 b/geomyidae.8 /scm/geomyidae/file/geomyidae.8.gph bitreich.org 70 i@@ -108,7 +108,8 @@ Loglevels: Err bitreich.org 70 i .Ed Err bitreich.org 70 i . Err bitreich.org 70 i .It Fl b Ar base Err bitreich.org 70 i-Root directory to serve (default: /var/gopher) Err bitreich.org 70 i+Root directory to serve (default: /var/gopher). Err bitreich.org 70 i+This directory should be specified as an absolute path. Err bitreich.org 70 i . Err bitreich.org 70 i .It Fl p Ar port Err bitreich.org 70 i Port geomyidae should listen on (default: 70) Err bitreich.org 70 1diff --git a/handlr.c b/handlr.c /scm/geomyidae/file/handlr.c.gph bitreich.org 70 i@@ -32,12 +32,12 @@ handledir(int sock, char *path, char *port, char *base, char *args, Err bitreich.org 70 i USED(args); Err bitreich.org 70 i USED(sear); Err bitreich.org 70 i Err bitreich.org 70 i- pa = gstrdup(path); Err bitreich.org 70 i+ pa = xstrdup(path); Err bitreich.org 70 i e = pa + strlen(pa) - 1; Err bitreich.org 70 i if(e[0] == '/') Err bitreich.org 70 i *e = '\0'; Err bitreich.org 70 i Err bitreich.org 70 i- par = gstrdup(pa); Err bitreich.org 70 i+ par = xstrdup(pa); Err bitreich.org 70 i b = strrchr(par + strlen(base), '/'); Err bitreich.org 70 i if(b != nil) { Err bitreich.org 70 i *b = '\0'; Err bitreich.org 70 i@@ -107,7 +107,6 @@ handlebin(int sock, char *file, char *port, char *base, char *args, Err bitreich.org 70 i char sendb[1024]; Err bitreich.org 70 i int len, fd, sent; Err bitreich.org 70 i Err bitreich.org 70 i- len = -1; Err bitreich.org 70 i USED(port); Err bitreich.org 70 i USED(base); Err bitreich.org 70 i USED(args); Err bitreich.org 70 i@@ -137,7 +136,7 @@ handlecgi(int sock, char *file, char *port, char *base, char *args, 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+ path = xstrdup(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@@ -165,7 +164,10 @@ handlecgi(int sock, char *file, char *port, char *base, char *args, Err bitreich.org 70 i break; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i- execl(file, p, sear, args, ohost, port, (char *)nil); Err bitreich.org 70 i+ if (execl(file, p, sear, args, ohost, port, (char *)nil) == -1) { Err bitreich.org 70 i+ perror(NULL); Err bitreich.org 70 i+ _exit(1); Err bitreich.org 70 i+ } Err bitreich.org 70 i case -1: Err bitreich.org 70 i break; Err bitreich.org 70 i default: Err bitreich.org 70 i@@ -189,7 +191,7 @@ 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+ path = xstrdup(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 1diff --git a/ind.c b/ind.c /scm/geomyidae/file/ind.c.gph bitreich.org 70 i@@ -38,6 +38,43 @@ filetype type[] = { Err bitreich.org 70 i {nil, nil, nil}, Err bitreich.org 70 i }; Err bitreich.org 70 i Err bitreich.org 70 i+void * Err bitreich.org 70 i+xmalloc(size_t size) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ void *p; Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (!(p = malloc(size))) { Err bitreich.org 70 i+ perror("malloc"); Err bitreich.org 70 i+ exit(1); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i+ return p; Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+void * Err bitreich.org 70 i+xrealloc(void *ptr, size_t size) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ if (!(ptr = realloc(ptr, size))) { Err bitreich.org 70 i+ perror("realloc"); Err bitreich.org 70 i+ exit(1); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i+ return ptr; Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+char * Err bitreich.org 70 i+xstrdup(const char *str) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ char *ret; Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (!(ret = strdup(str))) { Err bitreich.org 70 i+ perror("strdup"); Err bitreich.org 70 i+ exit(1); Err bitreich.org 70 i+ } 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 i filetype * Err bitreich.org 70 i gettype(char *filename) Err bitreich.org 70 i { Err bitreich.org 70 i@@ -61,11 +98,7 @@ gmallocz(int l, int d) Err bitreich.org 70 i { Err bitreich.org 70 i char *ret; Err bitreich.org 70 i Err bitreich.org 70 i- ret = malloc(l); Err bitreich.org 70 i- if(ret == nil) { Err bitreich.org 70 i- perror("malloc"); Err bitreich.org 70 i- exit(1); Err bitreich.org 70 i- } Err bitreich.org 70 i+ ret = xmalloc(l); Err bitreich.org 70 i Err bitreich.org 70 i if(d) Err bitreich.org 70 i memset(ret, 0, l); Err bitreich.org 70 i@@ -74,20 +107,6 @@ gmallocz(int l, int d) Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i char * Err bitreich.org 70 i-gstrdup(char *str) Err bitreich.org 70 i-{ Err bitreich.org 70 i- char *ret; Err bitreich.org 70 i- Err bitreich.org 70 i- ret = strdup(str); Err bitreich.org 70 i- if(ret == nil) { Err bitreich.org 70 i- perror("strdup"); Err bitreich.org 70 i- exit(1); Err bitreich.org 70 i- } 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 i-char * Err bitreich.org 70 i readln(int fd) Err bitreich.org 70 i { Err bitreich.org 70 i char *ret; Err bitreich.org 70 i@@ -95,9 +114,9 @@ readln(int fd) Err bitreich.org 70 i Err bitreich.org 70 i len = 1; Err bitreich.org 70 i Err bitreich.org 70 i- ret = malloc(2); Err bitreich.org 70 i+ ret = xmalloc(2); Err bitreich.org 70 i while(read(fd, &ret[len - 1], 1) > 0 && ret[len - 1] != '\n') Err bitreich.org 70 i- ret = realloc(ret, ++len + 1); Err bitreich.org 70 i+ ret = xrealloc(ret, ++len + 1); Err bitreich.org 70 i if(ret[len - 1] != '\n') { Err bitreich.org 70 i free(ret); Err bitreich.org 70 i return nil; Err bitreich.org 70 i@@ -148,7 +167,7 @@ addelem(Elems *e, char *s) Err bitreich.org 70 i slen = strlen(s) + 1; Err bitreich.org 70 i Err bitreich.org 70 i e->num++; Err bitreich.org 70 i- e->e = realloc(e->e, sizeof(char *) * e->num); Err bitreich.org 70 i+ e->e = xrealloc(e->e, sizeof(char *) * e->num); Err bitreich.org 70 i e->e[e->num - 1] = gmallocz(slen, 2); Err bitreich.org 70 i strncpy(e->e[e->num - 1], s, slen - 1); Err bitreich.org 70 i Err bitreich.org 70 i@@ -201,7 +220,7 @@ addindexs(Indexs *idx, Elems *el) Err bitreich.org 70 i { Err bitreich.org 70 i Err bitreich.org 70 i idx->num++; Err bitreich.org 70 i- idx->n = realloc(idx->n, sizeof(Elems) * idx->num); Err bitreich.org 70 i+ idx->n = xrealloc(idx->n, sizeof(Elems) * idx->num); Err bitreich.org 70 i idx->n[idx->num - 1] = el; Err bitreich.org 70 i Err bitreich.org 70 i return; Err bitreich.org 70 i@@ -246,11 +265,11 @@ printelem(int fd, Elems *el, char *addr, char *port) Err bitreich.org 70 i Err bitreich.org 70 i if(!strncmp(el->e[3], "server", 6)) { Err bitreich.org 70 i free(el->e[3]); Err bitreich.org 70 i- el->e[3] = gstrdup(addr); Err bitreich.org 70 i+ el->e[3] = xstrdup(addr); Err bitreich.org 70 i } Err bitreich.org 70 i if(!strncmp(el->e[4], "port", 4)) { Err bitreich.org 70 i free(el->e[4]); Err bitreich.org 70 i- el->e[4] = gstrdup(port); Err bitreich.org 70 i+ el->e[4] = xstrdup(port); Err bitreich.org 70 i } Err bitreich.org 70 i tprintf(fd, "%.1s%s\t%s\t%s\t%s\r\n", el->e[0], el->e[1], el->e[2], Err bitreich.org 70 i el->e[3], el->e[4]); Err bitreich.org 70 i@@ -332,11 +351,11 @@ reverselookup(char *host) Err bitreich.org 70 i client = gethostbyaddr((const void *)&hoststr, Err bitreich.org 70 i sizeof(hoststr), AF_INET); Err bitreich.org 70 i if(client != NULL) Err bitreich.org 70 i- rethost = strdup(client->h_name); Err bitreich.org 70 i+ rethost = xstrdup(client->h_name); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i if(rethost == NULL) Err bitreich.org 70 i- rethost = gstrdup(host); Err bitreich.org 70 i+ rethost = xstrdup(host); Err bitreich.org 70 i Err bitreich.org 70 i return rethost; Err bitreich.org 70 i } Err bitreich.org 70 1diff --git a/ind.h b/ind.h /scm/geomyidae/file/ind.h.gph bitreich.org 70 i@@ -32,7 +32,9 @@ struct filetype { Err bitreich.org 70 i Err bitreich.org 70 i filetype *gettype(char *filename); Err bitreich.org 70 i void *gmallocz(int l, int d); Err bitreich.org 70 i-char *gstrdup(char *str); Err bitreich.org 70 i+void *xmalloc(size_t); Err bitreich.org 70 i+void *xrealloc(void *, size_t); Err bitreich.org 70 i+char *xstrdup(const char *str); Err bitreich.org 70 i Indexs *scanfile(char *fname); Err bitreich.org 70 i Elems *getadv(char *str); Err bitreich.org 70 i void printelem(int fd, Elems *el, char *addr, char *port); Err bitreich.org 70 1diff --git a/main.c b/main.c /scm/geomyidae/file/main.c.gph bitreich.org 70 i@@ -32,7 +32,7 @@ enum { Err bitreich.org 70 i FILES = 1, Err bitreich.org 70 i DIRS = 2, Err bitreich.org 70 i HTTP = 4, Err bitreich.org 70 i- ERRORS = 8, Err bitreich.org 70 i+ ERRORS = 8 Err bitreich.org 70 i }; Err bitreich.org 70 i Err bitreich.org 70 i int glfd = -1; Err bitreich.org 70 i@@ -381,7 +381,7 @@ main(int argc, char *argv[]) Err bitreich.org 70 i return 1; Err bitreich.org 70 i } Err bitreich.org 70 i } else { Err bitreich.org 70 i- ohost = gstrdup(ohost); Err bitreich.org 70 i+ ohost = xstrdup(ohost); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i if(group != nil) { Err bitreich.org 70 .