From c500373deff3f2bf94bf30a720bc52b569743d68 Mon Sep 17 00:00:00 2001 From: Christian Neukirchen Date: Mon, 26 Oct 2015 14:40:49 +0100 Subject: sort by extension --- lr.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'lr.c') diff --git a/lr.c b/lr.c index e1a13df..30be4d4 100644 --- a/lr.c +++ b/lr.c @@ -532,6 +532,16 @@ basenam(const char *s) return r ? r + 1 : s; } +static const char * +extnam(const char *s) +{ + char *r = strrchr(s, '/'); + char *e = strrchr(s, '.'); + if (!r || r < e) + return e ? e + 1 : ""; + return ""; +} + static const char * readlin(const char *p, const char *alt) { @@ -740,6 +750,8 @@ order(const void *a, const void *b) "ZZZZAZZZZZZZZZZZ"[(fa->sb.st_mode >> 12) & 0x0f]); case 'n': STRCMP(fa->fpath, fb->fpath); case 'N': STRCMP(fb->fpath, fa->fpath); + case 'e': STRCMP(extnam(fa->fpath), extnam(fb->fpath)); + case 'E': STRCMP(extnam(fb->fpath), extnam(fa->fpath)); default: STRCMP(fa->fpath, fb->fpath); } } -- cgit 1.4.1