diff options
| author | 2017-04-02 01:48:33 +0530 | |
|---|---|---|
| committer | 2017-04-02 01:48:33 +0530 | |
| commit | 951d32361699ede7d42f06f72cd3b3813a0be71c (patch) | |
| tree | 07b879fe7affe30cfaba0a6d3002186a713ca7ca | |
| parent | 0e82544199866ce217a2a6e8dd50f553fa5cc582 (diff) | |
| download | nnn-951d32361699ede7d42f06f72cd3b3813a0be71c.tar.gz | |
Show directories first
| -rw-r--r-- | README.md | 3 | ||||
| -rw-r--r-- | nnn.c | 18 |
2 files changed, 17 insertions, 4 deletions
@@ -54,11 +54,12 @@ I chose to fork because: - current item in reverse video - number of items in current directory - full name of currently selected file + - Directories first + - Sort numeric names in numeric order - Case-insensitive alphabetic content listing instead of upper case first - Roll over at the first and last entries of a directory (with Up/Down keys) - Removed navigation restriction with relative paths (and let permissions handle it) - Sort entries by file size (largest to smallest) - - Sort numeric names in numeric order - Shortcut to invoke file name copier (set using environment variable `NNN_COPIER`) - File associations - Environment variable `NNN_OPENER` to let desktop opener handle it all. E.g.: @@ -395,13 +395,25 @@ visible(regex_t *regex, char *file) static int entrycmp(const void *va, const void *vb) { + static pEntry pa, pb; + + pa = (pEntry)va; + pb = (pEntry)vb; + + /* Sort directories first */ + if (S_ISDIR(pb->mode) && !S_ISDIR(pa->mode)) + return 1; + else if (S_ISDIR(pa->mode) && !S_ISDIR(pb->mode)) + return -1; + + /* Do the actual sorting */ if (mtimeorder) - return ((pEntry)vb)->t - ((pEntry)va)->t; + return pb->t - pa->t; if (sizeorder) - return ((pEntry)vb)->size - ((pEntry)va)->size; + return pb->size - pa->size; - return xstricmp(((pEntry)va)->name, ((pEntry)vb)->name); + return xstricmp(pa->name, pb->name); } static void |