iAdd size and date/time to dir listing. - 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 7f132215d36985b9a17a338fb5bb451a09116303 /scm/geomyidae/commit/7f132215d36985b9a17a338fb5bb451a09116303.gph bitreich.org 70 1parent f9779c166558b9b0e70754fa9ce6026e5c10fffa /scm/geomyidae/commit/f9779c166558b9b0e70754fa9ce6026e5c10fffa.gph bitreich.org 70 hAuthor: Christoph Lohmann <20h@r-36.net> URL:mailto:20h@r-36.net bitreich.org 70 iDate: Fri, 12 Jun 2020 21:07:14 +0200 Err bitreich.org 70 i Err bitreich.org 70 iAdd size and date/time to dir listing. Err bitreich.org 70 i Err bitreich.org 70 iThis applies and old patch by Evil_Bob. Dank u! Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M handlr.c | 9 +++++++-- Err bitreich.org 70 i M ind.c | 35 +++++++++++++++++++++++++++++++ Err bitreich.org 70 i M ind.h | 2 ++ Err bitreich.org 70 i M main.c | 2 +- Err bitreich.org 70 i Err bitreich.org 70 i4 files changed, 45 insertions(+), 3 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@@ -66,8 +66,13 @@ handledir(int sock, char *path, char *port, char *base, char *args, Err bitreich.org 70 i if (stat(file, &st) >= 0 && S_ISDIR(st.st_mode)) Err bitreich.org 70 i type = gettype("index.gph"); Err bitreich.org 70 i e = file + strlen(base); Err bitreich.org 70 i- ret = dprintf(sock, "%c%s\t%s\t%s\t%s\r\n", *type->type, Err bitreich.org 70 i- dirent[i]->d_name, e, ohost, port); Err bitreich.org 70 i+ ret = dprintf(sock, Err bitreich.org 70 i+ "%c%-50.50s %10s %16s\t%s\t%s\t%s\r\n", Err bitreich.org 70 i+ *type->type, Err bitreich.org 70 i+ dirent[i]->d_name, Err bitreich.org 70 i+ humansize(st.st_size), Err bitreich.org 70 i+ humantime(&(st.st_mtim.tv_sec)), Err bitreich.org 70 i+ e, ohost, port); Err bitreich.org 70 i free(file); Err bitreich.org 70 i free(dirent[i]); Err bitreich.org 70 i } Err bitreich.org 70 1diff --git a/ind.c b/ind.c /scm/geomyidae/file/ind.c.gph bitreich.org 70 i@@ -10,6 +10,8 @@ Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i+#include Err bitreich.org 70 i+#include Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i@@ -513,3 +515,36 @@ setcgienviron(char *file, char *path, char *port, char *base, char *args, Err bitreich.org 70 i Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i+char * Err bitreich.org 70 i+humansize(off_t n) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ static char buf[16]; Err bitreich.org 70 i+ const char postfixes[] = "BKMGTPE"; Err bitreich.org 70 i+ double size; Err bitreich.org 70 i+ int i = 0; Err bitreich.org 70 i+ Err bitreich.org 70 i+ for (size = n; size >= 1024 && i < strlen(postfixes); i++) Err bitreich.org 70 i+ size /= 1024; Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (!i) { Err bitreich.org 70 i+ snprintf(buf, sizeof(buf), "%ju%c", (uintmax_t)n, Err bitreich.org 70 i+ postfixes[i]); Err bitreich.org 70 i+ } else { Err bitreich.org 70 i+ snprintf(buf, sizeof(buf), "%.1f%c", size, postfixes[i]); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i+ return buf; Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+char * Err bitreich.org 70 i+humantime(const time_t *clock) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ static char buf[32]; Err bitreich.org 70 i+ struct tm *tm; Err bitreich.org 70 i+ Err bitreich.org 70 i+ tm = localtime(clock); Err bitreich.org 70 i+ strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M %Z", tm); Err bitreich.org 70 i+ Err bitreich.org 70 i+ return buf; Err bitreich.org 70 i+} 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@@ -50,6 +50,8 @@ char *reverselookup(char *host); Err bitreich.org 70 i void setcgienviron(char *file, char *path, char *port, char *base, Err bitreich.org 70 i char *args, char *sear, char *ohost, char *chost, Err bitreich.org 70 i int istls); Err bitreich.org 70 i+char *humansize(off_t n); Err bitreich.org 70 i+char *humantime(const time_t *clock); Err bitreich.org 70 i Err bitreich.org 70 i #endif Err bitreich.org 70 i Err bitreich.org 70 1diff --git a/main.c b/main.c /scm/geomyidae/file/main.c.gph bitreich.org 70 i@@ -202,7 +202,7 @@ handlerequest(int sock, char *req, int rlen, char *base, char *ohost, Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i if (recvb[0] != '/' || strstr(recvb, "..")){ Err bitreich.org 70 i- dprintf(sock, selinval); Err bitreich.org 70 i+ dprintf(sock, "%s", selinval); Err bitreich.org 70 i return; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 .