From 3243a3082ad807914e8bb0c434e0793cb02a1a5c Mon Sep 17 00:00:00 2001 From: Arun Prakash Jana Date: Tue, 16 May 2017 07:32:21 +0530 Subject: [PATCH] Add check to defer name to number conversion --- nnn.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/nnn.c b/nnn.c index 0a01160d..122f8c41 100644 --- a/nnn.c +++ b/nnn.c @@ -378,15 +378,31 @@ xgetenv(char *name, char *fallback) * If the absolute numeric values are same, we fallback to alphasort. */ static int -xstricmp(const char *s1, const char *s2) +xstricmp(char *s1, char *s2) { static char *c1, *c2; - static long long num1, num2; - num1 = strtoll(s1, &c1, 10); - num2 = strtoll(s2, &c2, 10); + c1 = s1; + while (isspace(*c1)) + c1++; + if (*c1 == '-' || *c1 == '+') + c1++; + while(*c1 >= '0' && *c1 <= '9') + c1++; + + c2 = s2; + while (isspace(*c2)) + c2++; + if (*c2 == '-' || *c2 == '+') + c2++; + while(*c2 >= '0' && *c2 <= '9') + c2++; if (*c1 == '\0' && *c2 == '\0') { + static long long num1, num2; + + num1 = strtoll(s1, &c1, 10); + num2 = strtoll(s2, &c2, 10); if (num1 != num2) { if (num1 > num2) return 1;