From: Jim Meyering Date: Tue, 5 Dec 1995 17:53:39 +0000 (+0000) Subject: (numcompare): Properly handle all cases in which signs differ. From Karl Heuer. X-Git-Tag: TEXTUTILS-1_13h~36 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5cf455d73662078073e2192e0070fbceda7340c2;p=thirdparty%2Fcoreutils.git (numcompare): Properly handle all cases in which signs differ. From Karl Heuer. --- diff --git a/src/sort.c b/src/sort.c index 3fc2f7873e..707df9cfb2 100644 --- a/src/sort.c +++ b/src/sort.c @@ -779,19 +779,30 @@ numcompare (register const char *a, register const char *b) if (tmpa == '-') { - tmpa = UCHAR (*++a); + do + tmpa = UCHAR (*++a); + while (tmpa == '0'); if (tmpb != '-') { - if ((tmpa == 0 || digits[tmpa]) && digits[tmpb]) + if (tmpa == '.') + do + tmpa = UCHAR (*++a); + while (tmpa == '0'); + if (digits[tmpa]) + return -1; + while (tmpb == '0') + tmpb = UCHAR (*++b); + if (tmpb == '.') + do + tmpb = *++b; + while (tmpb == '0'); + if (digits[tmpb]) return -1; return 0; } - tmpb = UCHAR (*++b); - - while (tmpa == '0') - tmpa = UCHAR (*++a); - while (tmpb == '0') + do tmpb = UCHAR (*++b); + while (tmpb == '0'); while (tmpa == tmpb && digits[tmpa]) tmpa = UCHAR (*++a), tmpb = UCHAR (*++b); @@ -821,8 +832,22 @@ numcompare (register const char *a, register const char *b) } else if (tmpb == '-') { - ++b; - if (digits[UCHAR (tmpa)] && (UCHAR (*b) == 0 || digits[UCHAR (*b)])) + do + tmpb = UCHAR (*++b); + while (tmpb == '0'); + if (tmpb == '.') + do + tmpb = *++b; + while (tmpb == '0'); + if (digits[tmpb]) + return 1; + while (tmpa == '0') + tmpa = UCHAR (*++a); + if (tmpa == '.') + do + tmpa = UCHAR (*++a); + while (tmpa == '0'); + if (digits[tmpa]) return 1; return 0; }