URI: 
       Add patch to allow directory sort by date. - 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 c62c2fe3b1ab53fca1df7f14f6256c84c6276f73
   DIR parent 3401df4e6802a68dd34581ae0de6b7e34f45ea12
  HTML 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:
         A patches/order-directories-by-date.… |      69 ++++++++++++++++++++++++++++++
       
       1 file changed, 69 insertions(+), 0 deletions(-)
       ---
   DIR 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
       +