The last patch didn't update the cls help message... This one does.

Oskar ([EMAIL PROTECTED])
diff -u src/FileSet.cc.v0 src/FileSet.cc
--- src/FileSet.cc.v0   2003-01-25 10:18:09.000000000 +0100
+++ src/FileSet.cc      2003-01-25 10:23:36.000000000 +0100
@@ -197,6 +197,15 @@
    return p1->GetRank()<p2->GetRank() ? -1 : 1;
 }
 
+static int sort_date(const void *s1, const void *s2)
+{
+   const FileInfo *p1 = *(const FileInfo **) s1;
+   const FileInfo *p2 = *(const FileInfo **) s2;
+   if(p1->date==p2->date)
+      return sort_name(s1,s2);
+   return p1->date>p2->date ? -1 : 1;
+}
+
 /* files_sort is an alias of files when sort == NAME (since
  * files is always sorted by name), and an independant array
  * of pointers (pointing to the same data) otherwise. */
@@ -223,6 +232,7 @@
    case BYSIZE: qsort(files_sort, fnum, sizeof(FileInfo *), sort_size); break;
    case DIRSFIRST: qsort(files_sort, fnum, sizeof(FileInfo *), sort_dirs); break;
    case BYRANK: qsort(files_sort, fnum, sizeof(FileInfo *), sort_rank); break;
+   case BYDATE: qsort(files_sort, fnum, sizeof(FileInfo *), sort_date); break;
    }
 }
 
diff -u src/FileSet.h.v0 src/FileSet.h
--- src/FileSet.h.v0    2003-01-25 10:20:52.000000000 +0100
+++ src/FileSet.h       2003-01-25 10:21:06.000000000 +0100
@@ -108,7 +108,7 @@
 class FileSet
 {
 public:
-   enum sort_e { BYNAME, BYSIZE, DIRSFIRST, BYRANK };
+   enum sort_e { BYNAME, BYSIZE, DIRSFIRST, BYRANK, BYDATE };
 
 private:
    FileInfo **files;
diff -u src/commands.cc.v0 src/commands.cc
--- src/commands.cc.v0  2003-01-25 10:20:29.000000000 +0100
+++ src/commands.cc     2003-01-25 10:51:03.000000000 +0100
@@ -185,7 +185,7 @@
            " -i, --nocase         - case-insensitive pattern matching\n"
            " -I, --sortnocase     - sort names case-insensitively\n"
            " -D, --dirsfirst      - list directories first\n"
-           "     --sort=OPT       - \"name\", \"size\"\n"
+           "     --sort=OPT       - \"name\", \"size\", \"date\"\n"
            " -S                   - sort by file size\n"
            " --user, --group, --perms, --date, --linkcount, --links\n"
            "                      - show individual fields\n"
@@ -1332,6 +1332,7 @@
         if(!strcmp(cls_options[longopt].name, "sort")) {
            if(!strcasecmp(optarg, "name")) sort = FileSet::BYNAME;
            else if(!strcasecmp(optarg, "size")) sort = FileSet::BYSIZE;
+           else if(!strcasecmp(optarg, "date")) sort = FileSet::BYDATE;
            else return _("invalid argument for `--sort'");
         } else if(!strcmp(cls_options[longopt].name, "filesize")) {
            size_filesonly = true;


Reply via email to