]> Sergey Matveev's repositories - nnn.git/commitdiff
Add check to defer name to number conversion
authorArun Prakash Jana <engineerarun@gmail.com>
Tue, 16 May 2017 02:02:21 +0000 (07:32 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Tue, 16 May 2017 02:02:21 +0000 (07:32 +0530)
nnn.c

diff --git a/nnn.c b/nnn.c
index 0a01160de2bb2dd3bcd136723992420d744a1c70..122f8c410934d14fd6a1fe0f422f31462864da80 100644 (file)
--- 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;