handlr.c: use basename() to get the base filename - geomyidae - A small C-based gopherd. HTML git clone git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae/ DIR Log DIR Files DIR Refs DIR Tags DIR README DIR LICENSE --- DIR commit 31cab7f26e390b9e29a3f9fa185df6bd67abd826 DIR parent e418a673b849daeac362148c6dfcb3dc9355f4dc HTML Author: Hiltjo Posthuma <hiltjo@codemadness.org> Date: Sat, 22 Jul 2023 19:15:03 +0200 handlr.c: use basename() to get the base filename Signed-off-by: Christoph Lohmann <20h@r-36.net> Diffstat: M handlr.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) --- DIR diff --git a/handlr.c b/handlr.c @@ -144,7 +144,7 @@ handlecgi(int sock, char *file, char *port, char *base, char *args, char *sear, char *ohost, char *chost, char *bhost, int istls, char *sel, char *traverse) { - char *script, *path, *filec; + char *script, *path, *filec, *scriptc; USED(base); USED(port); @@ -157,8 +157,9 @@ handlecgi(int sock, char *file, char *port, char *base, char *args, printf("sel = %s; traverse = %s;\n", sel, traverse); filec = xstrdup(file); + scriptc = xstrdup(file); path = dirname(filec); - script = path + strlen(path) + 1; + script = basename(scriptc); if (sear == NULL) sear = ""; @@ -189,6 +190,7 @@ handlecgi(int sock, char *file, char *port, char *base, char *args, default: wait(NULL); free(filec); + free(scriptc); break; } } @@ -199,7 +201,7 @@ handledcgi(int sock, char *file, char *port, char *base, char *args, char *sel, char *traverse) { FILE *fp; - char *script, *path, *filec, *ln = NULL; + char *script, *path, *filec, *scriptc, *ln = NULL; size_t linesiz = 0; ssize_t n; int outsocks[2], ret = 0; @@ -216,8 +218,9 @@ handledcgi(int sock, char *file, char *port, char *base, char *args, return; filec = xstrdup(file); + scriptc = xstrdup(file); path = dirname(filec); - script = path + strlen(path) + 1; + script = basename(scriptc); if (sear == NULL) sear = ""; @@ -276,6 +279,7 @@ handledcgi(int sock, char *file, char *port, char *base, char *args, fclose(fp); wait(NULL); free(filec); + free(scriptc); break; } }