| Unifying style. - geomyidae - A small C-based gopherd. | |
| git clone git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfri… | |
| Log | |
| Files | |
| Refs | |
| Tags | |
| README | |
| LICENSE | |
| --- | |
| commit b3a670dc6f8379b16c6f86e76b1a6f84fc75bf54 | |
| parent b5deb9c4f2c6c495d553fa22bd16e743848e2de6 | |
| Author: Christoph Lohmann <[email protected]> | |
| Date: Sun, 26 Nov 2017 17:51:03 +0100 | |
| Unifying style. | |
| Diffstat: | |
| M handlr.c | 37 ++++++++++++++++-------------… | |
| M ind.c | 42 ++++++++++++++++-------------… | |
| M main.c | 149 ++++++++++++++++-------------… | |
| 3 files changed, 116 insertions(+), 112 deletions(-) | |
| --- | |
| diff --git a/handlr.c b/handlr.c | |
| @@ -34,12 +34,12 @@ handledir(int sock, char *path, char *port, char *base, cha… | |
| pa = xstrdup(path); | |
| e = pa + strlen(pa) - 1; | |
| - if(e[0] == '/') | |
| + if (e[0] == '/') | |
| *e = '\0'; | |
| par = xstrdup(pa); | |
| b = strrchr(par + strlen(base), '/'); | |
| - if(b != nil) { | |
| + if (b != nil) { | |
| *b = '\0'; | |
| dprintf(sock, "1..\t%s\t%s\t%s\r\n", | |
| par + strlen(base), ohost, port); | |
| @@ -47,13 +47,13 @@ handledir(int sock, char *path, char *port, char *base, cha… | |
| free(par); | |
| ndir = scandir(pa, &dirent, 0, alphasort); | |
| - if(ndir < 0) { | |
| + if (ndir < 0) { | |
| perror("scandir"); | |
| free(pa); | |
| return; | |
| } else { | |
| - for(i = 0; i < ndir && ret >= 0; i++) { | |
| - if(dirent[i]->d_name[0] == '.') { | |
| + for (i = 0; i < ndir && ret >= 0; i++) { | |
| + if (dirent[i]->d_name[0] == '.') { | |
| free(dirent[i]); | |
| continue; | |
| } | |
| @@ -61,7 +61,7 @@ handledir(int sock, char *path, char *port, char *base, char … | |
| type = gettype(dirent[i]->d_name); | |
| file = smprintf("%s/%s", pa, | |
| dirent[i]->d_name); | |
| - if(stat(file, &st) >= 0 && S_ISDIR(st.st_mode)) | |
| + if (stat(file, &st) >= 0 && S_ISDIR(st.st_mode)) | |
| type = gettype("index.gph"); | |
| e = file + strlen(base); | |
| ret = dprintf(sock, "%c%s\t%s\t%s\t%s\r\n", *type->typ… | |
| @@ -88,8 +88,8 @@ handlegph(int sock, char *file, char *port, char *base, char … | |
| USED(sear); | |
| act = scanfile(file); | |
| - if(act != nil) { | |
| - for(i = 0; i < act->num && ret >= 0; i++) { | |
| + if (act != nil) { | |
| + for (i = 0; i < act->num && ret >= 0; i++) { | |
| ret = printelem(sock, act->n[i], ohost, port); | |
| freeelem(act->n[i]); | |
| act->n[i] = nil; | |
| @@ -113,8 +113,8 @@ handlebin(int sock, char *file, char *port, char *base, cha… | |
| USED(ohost); | |
| fd = open(file, O_RDONLY); | |
| - if(fd >= 0) { | |
| - if(xsendfile(fd, sock) < 0) | |
| + if (fd >= 0) { | |
| + if (xsendfile(fd, sock) < 0) | |
| perror("sendfile"); | |
| close(fd); | |
| } | |
| @@ -142,15 +142,15 @@ handlecgi(int sock, char *file, char *port, char *base, c… | |
| if (p == nil) | |
| p = file; | |
| - if(sear == nil) | |
| + if (sear == nil) | |
| sear = ""; | |
| - if(args == nil) | |
| + if (args == nil) | |
| args = ""; | |
| dup2(sock, 0); | |
| dup2(sock, 1); | |
| dup2(sock, 2); | |
| - switch(fork()) { | |
| + switch (fork()) { | |
| case 0: | |
| if (path != nil) { | |
| if (chdir(path) < 0) | |
| @@ -184,7 +184,7 @@ handledcgi(int sock, char *file, char *port, char *base, ch… | |
| USED(base); | |
| - if(pipe(outpipe) < 0) | |
| + if (pipe(outpipe) < 0) | |
| return; | |
| path = xstrdup(file); | |
| @@ -197,17 +197,17 @@ handledcgi(int sock, char *file, char *port, char *base, … | |
| } | |
| p = strrchr(file, '/'); | |
| - if(p == nil) | |
| + if (p == nil) | |
| p = file; | |
| - if(sear == nil) | |
| + if (sear == nil) | |
| sear = ""; | |
| - if(args == nil) | |
| + if (args == nil) | |
| args = ""; | |
| dup2(sock, 0); | |
| dup2(sock, 2); | |
| - switch(fork()) { | |
| + switch (fork()) { | |
| case 0: | |
| dup2(outpipe[1], 1); | |
| close(outpipe[0]); | |
| @@ -254,3 +254,4 @@ handledcgi(int sock, char *file, char *port, char *base, ch… | |
| break; | |
| } | |
| } | |
| + | |
| diff --git a/ind.c b/ind.c | |
| @@ -80,8 +80,8 @@ xsendfile(int fd, int sock) | |
| setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, &optval, sizeof(int)); | |
| #endif | |
| - if(fstat(fd, &st) >= 0) { | |
| - if((bufsiz = st.st_blksize) < BUFSIZ) | |
| + if (fstat(fd, &st) >= 0) { | |
| + if ((bufsiz = st.st_blksize) < BUFSIZ) | |
| bufsiz = BUFSIZ; | |
| count = st.st_size; | |
| } | |
| @@ -96,8 +96,8 @@ xsendfile(int fd, int sock) | |
| if (count == 0) { | |
| sendb = xmalloc(bufsiz); | |
| - while((len = read(fd, sendb, bufsiz)) > 0) { | |
| - while(len > 0) { | |
| + while ((len = read(fd, sendb, bufsiz)) > 0) { | |
| + while (len > 0) { | |
| if ((sent = send(sock, sendb, len, 0)) < 0) { | |
| close(fd); | |
| free(sendb); | |
| @@ -177,12 +177,12 @@ gettype(char *filename) | |
| int i; | |
| end = strrchr(filename, '.'); | |
| - if(end == nil) | |
| + if (end == nil) | |
| return &type[0]; | |
| end++; | |
| - for(i = 0; type[i].end != nil; i++) | |
| - if(!strcasecmp(end, type[i].end)) | |
| + for (i = 0; type[i].end != nil; i++) | |
| + if (!strcasecmp(end, type[i].end)) | |
| return &type[i]; | |
| return &type[0]; | |
| @@ -191,10 +191,10 @@ gettype(char *filename) | |
| void | |
| freeelem(Elems *e) | |
| { | |
| - if(e != nil) { | |
| - if(e->e != nil) { | |
| - for(;e->num > 0; e->num--) | |
| - if(e->e[e->num - 1] != nil) | |
| + if (e != nil) { | |
| + if (e->e != nil) { | |
| + for (;e->num > 0; e->num--) | |
| + if (e->e[e->num - 1] != nil) | |
| free(e->e[e->num - 1]); | |
| free(e->e); | |
| } | |
| @@ -206,9 +206,9 @@ freeelem(Elems *e) | |
| void | |
| freeindex(Indexs *i) | |
| { | |
| - if(i != nil) { | |
| - if(i->n != nil) { | |
| - for(;i->num > 0; i->num--) | |
| + if (i != nil) { | |
| + if (i->n != nil) { | |
| + for (;i->num > 0; i->num--) | |
| freeelem(i->n[i->num - 1]); | |
| free(i->n); | |
| } | |
| @@ -287,7 +287,7 @@ getadv(char *str) | |
| } | |
| b = str; | |
| - if(*str == 't') | |
| + if (*str == 't') | |
| b++; | |
| addelem(ret, "i"); | |
| addelem(ret, b); | |
| @@ -337,7 +337,7 @@ scanfile(char *fname) | |
| free(ln); | |
| fclose(fp); | |
| - if(ret->n == nil) { | |
| + if (ret->n == nil) { | |
| free(ret); | |
| return nil; | |
| } | |
| @@ -348,11 +348,11 @@ scanfile(char *fname) | |
| int | |
| printelem(int fd, Elems *el, char *addr, char *port) | |
| { | |
| - if(!strcmp(el->e[3], "server")) { | |
| + if (!strcmp(el->e[3], "server")) { | |
| free(el->e[3]); | |
| el->e[3] = xstrdup(addr); | |
| } | |
| - if(!strcmp(el->e[4], "port")) { | |
| + if (!strcmp(el->e[4], "port")) { | |
| free(el->e[4]); | |
| el->e[4] = xstrdup(port); | |
| } | |
| @@ -406,14 +406,14 @@ reverselookup(char *host) | |
| rethost = NULL; | |
| - if(inet_pton(AF_INET, host, &hoststr)) { | |
| + if (inet_pton(AF_INET, host, &hoststr)) { | |
| client = gethostbyaddr((const void *)&hoststr, | |
| sizeof(hoststr), AF_INET); | |
| - if(client != NULL) | |
| + if (client != NULL) | |
| rethost = xstrdup(client->h_name); | |
| } | |
| - if(rethost == NULL) | |
| + if (rethost == NULL) | |
| rethost = xstrdup(host); | |
| return rethost; | |
| diff --git a/main.c b/main.c | |
| @@ -66,16 +66,16 @@ char *htredir = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>… | |
| int | |
| dropprivileges(struct group *gr, struct passwd *pw) | |
| { | |
| - if(gr != nil) | |
| - if(setgroups(1, &gr->gr_gid) != 0 || setgid(gr->gr_gid) != 0) | |
| + if (gr != nil) | |
| + if (setgroups(1, &gr->gr_gid) != 0 || setgid(gr->gr_gid) != 0) | |
| return -1; | |
| - if(pw != nil) { | |
| - if(gr == nil) { | |
| - if(setgroups(1, &pw->pw_gid) != 0 || | |
| + if (pw != nil) { | |
| + if (gr == nil) { | |
| + if (setgroups(1, &pw->pw_gid) != 0 || | |
| setgid(pw->pw_gid) != 0) | |
| return -1; | |
| } | |
| - if(setuid(pw->pw_uid) != 0) | |
| + if (setuid(pw->pw_uid) != 0) | |
| return -1; | |
| } | |
| @@ -89,7 +89,7 @@ logentry(char *host, char *port, char *qry, char *status) | |
| struct tm *ptr; | |
| char timstr[128], *ahost; | |
| - if(glfd >= 0) { | |
| + if (glfd >= 0) { | |
| tim = time(0); | |
| ptr = localtime(&tim); | |
| @@ -124,85 +124,86 @@ handlerequest(int sock, char *base, char *ohost, char *po… | |
| return; | |
| c = strchr(recvb, '\r'); | |
| - if(c) | |
| + if (c) | |
| c[0] = '\0'; | |
| c = strchr(recvb, '\n'); | |
| - if(c) | |
| + if (c) | |
| c[0] = '\0'; | |
| memmove(recvc, recvb, len+1); | |
| - if(!strncmp(recvb, "URL:", 4)) { | |
| + if (!strncmp(recvb, "URL:", 4)) { | |
| len = snprintf(path, sizeof(path), htredir, | |
| recvb + 4, recvb + 4, recvb + 4); | |
| - if(len > sizeof(path)) | |
| + if (len > sizeof(path)) | |
| len = sizeof(path); | |
| send(sock, path, len, 0); | |
| - if(loglvl & HTTP) | |
| + if (loglvl & HTTP) | |
| logentry(clienth, clientp, recvc, "HTTP redirect"); | |
| return; | |
| } | |
| sear = strchr(recvb, '\t'); | |
| - if(sear != nil) | |
| + if (sear != nil) | |
| *sear++ = '\0'; | |
| args = strchr(recvb, '?'); | |
| - if(args != nil) | |
| + if (args != nil) | |
| *args++ = '\0'; | |
| - if(recvb[0] == '\0') { | |
| + if (recvb[0] == '\0') { | |
| recvb[0] = '/'; | |
| recvb[1] = '\0'; | |
| } | |
| - if(recvb[0] != '/' || strstr(recvb, "..")) | |
| + if (recvb[0] != '/' || strstr(recvb, "..")) | |
| return; | |
| snprintf(path, sizeof(path), "%s%s", base, recvb); | |
| fd = -1; | |
| - if(stat(path, &dir) != -1 && S_ISDIR(dir.st_mode)) { | |
| - for(i = 0; i < sizeof(indexf)/sizeof(indexf)[0]; i++) { | |
| + if (stat(path, &dir) != -1 && S_ISDIR(dir.st_mode)) { | |
| + for (i = 0; i < sizeof(indexf)/sizeof(indexf)[0]; i++) { | |
| if (strlen(path) + strlen(indexf[i]) >= sizeof(path)) { | |
| - if(loglvl & ERRORS) | |
| + if (loglvl & ERRORS) | |
| logentry(clienth, clientp, recvc, | |
| "path truncation occurred"); | |
| return; | |
| } | |
| strncat(path, indexf[i], sizeof(path) - strlen(path) -… | |
| fd = open(path, O_RDONLY); | |
| - if(fd >= 0) | |
| + if (fd >= 0) | |
| break; | |
| path[strlen(path)-strlen(indexf[i])] = '\0'; | |
| } | |
| } else { | |
| fd = open(path, O_RDONLY); | |
| - if(fd < 0) { | |
| - if(loglvl & ERRORS) | |
| + if (fd < 0) { | |
| + if (loglvl & ERRORS) | |
| logentry(clienth, clientp, recvc, strerror(err… | |
| return; | |
| } | |
| } | |
| - if(fd >= 0) { | |
| + if (fd >= 0) { | |
| close(fd); | |
| - if(loglvl & FILES) | |
| + if (loglvl & FILES) | |
| logentry(clienth, clientp, recvc, "serving"); | |
| c = strrchr(path, '/'); | |
| - if(c == nil) | |
| + if (c == nil) | |
| c = path; | |
| type = gettype(c); | |
| type->f(sock, path, port, base, args, sear, ohost); | |
| } else { | |
| - if(S_ISDIR(dir.st_mode)) { | |
| + if (S_ISDIR(dir.st_mode)) { | |
| handledir(sock, path, port, base, args, sear, ohost); | |
| - if(loglvl & DIRS) | |
| + if (loglvl & DIRS) { | |
| logentry(clienth, clientp, recvc, | |
| "dir listing"); | |
| + } | |
| return; | |
| } | |
| dprintf(sock, err, recvc); | |
| - if(loglvl & ERRORS) | |
| + if (loglvl & ERRORS) | |
| logentry(clienth, clientp, recvc, "not found"); | |
| } | |
| @@ -212,9 +213,9 @@ handlerequest(int sock, char *base, char *ohost, char *port… | |
| void | |
| sighandler(int sig) | |
| { | |
| - switch(sig) { | |
| + switch (sig) { | |
| case SIGCHLD: | |
| - while(waitpid(-1, NULL, WNOHANG) > 0); | |
| + while (waitpid(-1, NULL, WNOHANG) > 0); | |
| break; | |
| case SIGHUP: | |
| case SIGINT: | |
| @@ -222,9 +223,9 @@ sighandler(int sig) | |
| case SIGABRT: | |
| case SIGTERM: | |
| case SIGKILL: | |
| - if(logfile != nil) | |
| + if (logfile != nil) | |
| stoplogging(glfd); | |
| - if(listfd >= 0) { | |
| + if (listfd >= 0) { | |
| shutdown(listfd, SHUT_RDWR); | |
| close(listfd); | |
| } | |
| @@ -259,18 +260,18 @@ getlistenfd(struct addrinfo *hints, char *bindip, char *p… | |
| listfd = -1; | |
| - if(getaddrinfo(bindip, port, hints, &ai)) | |
| + if (getaddrinfo(bindip, port, hints, &ai)) | |
| return -1; | |
| - if(ai == nil) | |
| + if (ai == nil) | |
| return -1; | |
| on = 1; | |
| - for(rp = ai; rp != nil; rp = rp->ai_next) { | |
| + for (rp = ai; rp != nil; rp = rp->ai_next) { | |
| listfd = socket(rp->ai_family, rp->ai_socktype, | |
| rp->ai_protocol); | |
| - if(listfd < 0) | |
| + if (listfd < 0) | |
| continue; | |
| - if(setsockopt(listfd, SOL_SOCKET, SO_REUSEADDR, &on, | |
| + if (setsockopt(listfd, SOL_SOCKET, SO_REUSEADDR, &on, | |
| sizeof(on)) < 0) { | |
| break; | |
| } | |
| @@ -279,18 +280,20 @@ getlistenfd(struct addrinfo *hints, char *bindip, char *p… | |
| (void *)&((struct sockaddr_in *)rp->ai_addr)->sin_ad… | |
| (void *)&((struct sockaddr_in6 *)rp->ai_addr)->sin6_… | |
| - if(bind(listfd, rp->ai_addr, rp->ai_addrlen) == 0) { | |
| - if(loglvl & CONN && inet_ntop(rp->ai_family, sinaddr, | |
| - addstr, sizeof(addstr))) | |
| + if (bind(listfd, rp->ai_addr, rp->ai_addrlen) == 0) { | |
| + if (loglvl & CONN && inet_ntop(rp->ai_family, sinaddr, | |
| + addstr, sizeof(addstr))) { | |
| logentry(addstr, port, "-", "listening"); | |
| + } | |
| break; | |
| } | |
| close(listfd); | |
| - if(loglvl & CONN && inet_ntop(rp->ai_family, sinaddr, | |
| - addstr, sizeof(addstr))) | |
| + if (loglvl & CONN && inet_ntop(rp->ai_family, sinaddr, | |
| + addstr, sizeof(addstr))) { | |
| logentry(addstr, port, "-", "could not bind"); | |
| + } | |
| } | |
| - if(rp == nil) | |
| + if (rp == nil) | |
| return -1; | |
| freeaddrinfo(ai); | |
| @@ -376,9 +379,9 @@ main(int argc, char *argv[]) | |
| usage(); | |
| } ARGEND; | |
| - if(ohost == nil) { | |
| + if (ohost == nil) { | |
| ohost = xcalloc(1, 513); | |
| - if(gethostname(ohost, 512) < 0) { | |
| + if (gethostname(ohost, 512) < 0) { | |
| perror("gethostname"); | |
| free(ohost); | |
| return 1; | |
| @@ -387,22 +390,22 @@ main(int argc, char *argv[]) | |
| ohost = xstrdup(ohost); | |
| } | |
| - if(group != nil) { | |
| - if((gr = getgrnam(group)) == nil) { | |
| + if (group != nil) { | |
| + if ((gr = getgrnam(group)) == nil) { | |
| perror("no such group"); | |
| return 1; | |
| } | |
| } | |
| - if(user != nil) { | |
| - if((us = getpwnam(user)) == nil) { | |
| + if (user != nil) { | |
| + if ((us = getpwnam(user)) == nil) { | |
| perror("no such user"); | |
| return 1; | |
| } | |
| } | |
| - if(dofork) { | |
| - switch(fork()) { | |
| + if (dofork) { | |
| + switch (fork()) { | |
| case -1: | |
| perror("fork"); | |
| return 1; | |
| @@ -413,66 +416,66 @@ main(int argc, char *argv[]) | |
| } | |
| } | |
| - if(logfile != nil) { | |
| + if (logfile != nil) { | |
| glfd = initlogging(logfile); | |
| - if(glfd < 0) { | |
| + if (glfd < 0) { | |
| perror("initlogging"); | |
| return 1; | |
| } | |
| - } else if(!dofork) { | |
| + } else if (!dofork) { | |
| glfd = 1; | |
| } | |
| memset(&hints, 0, sizeof(hints)); | |
| hints.ai_flags = AI_PASSIVE; | |
| hints.ai_socktype = SOCK_STREAM; | |
| - if(bindip) | |
| + if (bindip) | |
| hints.ai_flags |= AI_CANONNAME; | |
| listfd = -1; | |
| - if(v6) { | |
| + if (v6) { | |
| hints.ai_family = PF_INET6; | |
| listfd = getlistenfd(&hints, bindip, port); | |
| - if(!v4 && listfd < 0) { | |
| + if (!v4 && listfd < 0) { | |
| perror("getlistenfd6"); | |
| return 1; | |
| } | |
| } | |
| - if(v4 && listfd < 0) { | |
| + if (v4 && listfd < 0) { | |
| hints.ai_family = PF_INET; | |
| listfd = getlistenfd(&hints, bindip, port); | |
| - if(listfd < 0) { | |
| + if (listfd < 0) { | |
| perror("getlistenfd4"); | |
| return 1; | |
| } | |
| } | |
| - if(listfd < 0) { | |
| + if (listfd < 0) { | |
| perror("You did not specify a TCP port."); | |
| return 1; | |
| } | |
| - if(listen(listfd, 255)) { | |
| + if (listen(listfd, 255)) { | |
| perror("listen"); | |
| close(listfd); | |
| return 1; | |
| } | |
| - if(usechroot) { | |
| - if(chdir(base) < 0) { | |
| + if (usechroot) { | |
| + if (chdir(base) < 0) { | |
| perror("chdir"); | |
| return 1; | |
| } | |
| base = ""; | |
| - if(chroot(".") < 0) { | |
| + if (chroot(".") < 0) { | |
| perror("chroot"); | |
| return 1; | |
| } | |
| - } else if(*base != '/' && !(base = realpath(base, NULL))) { | |
| + } else if (*base != '/' && !(base = realpath(base, NULL))) { | |
| perror("realpath"); | |
| return 1; | |
| } | |
| - if(dropprivileges(gr, us) < 0) { | |
| + if (dropprivileges(gr, us) < 0) { | |
| perror("dropprivileges"); | |
| close(listfd); | |
| return 1; | |
| @@ -481,10 +484,10 @@ main(int argc, char *argv[]) | |
| initsignals(); | |
| cltlen = sizeof(clt); | |
| - while(running) { | |
| + while (running) { | |
| sock = accept(listfd, (struct sockaddr *)&clt, &cltlen); | |
| - if(sock < 0) { | |
| - switch(errno) { | |
| + if (sock < 0) { | |
| + switch (errno) { | |
| case ECONNABORTED: | |
| case EINTR: | |
| if (!running) { | |
| @@ -504,10 +507,10 @@ main(int argc, char *argv[]) | |
| sizeof(clienth), clientp, sizeof(clientp), | |
| NI_NUMERICHOST|NI_NUMERICSERV); | |
| - if(loglvl & CONN) | |
| + if (loglvl & CONN) | |
| logentry(clienth, clientp, "-", "connected"); | |
| - switch(fork()) { | |
| + switch (fork()) { | |
| case -1: | |
| perror("fork"); | |
| shutdown(sock, SHUT_RDWR); | |
| @@ -528,13 +531,13 @@ main(int argc, char *argv[]) | |
| break; | |
| } | |
| close(sock); | |
| - if(loglvl & CONN) | |
| + if (loglvl & CONN) | |
| logentry(clienth, clientp, "-", "disconnected"); | |
| } | |
| shutdown(listfd, SHUT_RDWR); | |
| close(listfd); | |
| - if(logfile != nil) | |
| + if (logfile != nil) | |
| stoplogging(glfd); | |
| free(ohost); | |