commit c62c2fe3b1ab53fca1df7f14f6256c84c6276f73
parent 3401df4e6802a68dd34581ae0de6b7e34f45ea12
Author: Christoph Lohmann <20h@r-36.net>
Date: Fri, 6 Aug 2021 22:48:20 +0200
Add patch to allow directory sort by date.
Thanks IanJ for sending it in!
Diffstat:
1 file changed, 69 insertions(+), 0 deletions(-)
diff --git a/patches/order-directories-by-date.patch b/patches/order-directories-by-date.patch
@@ -0,0 +1,69 @@
+From 38a2a15d8b803ce5b725a6cb1f2b3ac75ab686c7 Mon Sep 17 00:00:00 2001
+From: root <ian@contractcoder.biz>
+Date: Fri, 6 Aug 2021 20:09:46 +0100
+Subject: [PATCH] Modification to allow directories to be ordered by date by
+ adding a file named .datesort to the directory.
+
+---
+ handlr.c | 38 +++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 37 insertions(+), 1 deletion(-)
+
+diff --git a/handlr.c b/handlr.c
+index 0c230d3..e2e35a8 100644
+--- a/handlr.c
++++ b/handlr.c
+@@ -21,6 +21,33 @@
+ #include "ind.h"
+ #include "arg.h"
+
++char DIR_PATH[PATH_MAX];
++int datesort (const struct dirent **, const struct dirent **);
++
++int
++datesort(const struct dirent **a, const struct dirent **b)
++{
++ int rval;
++ struct stat sbuf1, sbuf2;
++ char path1[PATH_MAX], path2[PATH_MAX];
++
++ snprintf(path1, PATH_MAX, "%s/%s", DIR_PATH, (*a)->d_name);
++ snprintf(path2, PATH_MAX, "%s/%s", DIR_PATH, (*b)->d_name);
++
++ rval = stat(path1, &sbuf1);
++ if (rval) {
++ perror("stat");
++ return 0;
++ }
++ rval = stat(path2, &sbuf2);
++ if (rval) {
++ perror("stat");
++ return 0;
++ }
++
++ return sbuf1.st_mtime < sbuf2.st_mtime;
++}
++
+ void
+ handledir(int sock, char *path, char *port, char *base, char *args,
+ char *sear, char *ohost, char *chost, int istls)
+@@ -48,7 +75,16 @@ handledir(int sock, char *path, char *port, char *base, char *args,
+ }
+ free(par);
+
+- ndir = scandir(pa[0] ? pa : ".", &dirent, 0, alphasort);
++ strcpy(DIR_PATH, pa);
++
++ char ds[PATH_MAX];
++ strcpy(ds, pa);
++ strcat(ds, "/.datesort");
++
++ int (*sortorder) (const struct dirent **, const struct dirent **) =\
++ (access(ds, F_OK) != -1) ? datesort : alphasort;
++
++ ndir = scandir(pa[0] ? pa : ".", &dirent, 0, sortorder);
+ if (ndir < 0) {
+ perror("scandir");
+ free(pa);
+--
+2.20.1
+