Applied patch from I.Q. to fix problem with sort -n.
authorMark Whitley <markw@lineo.com>
Tue, 17 Apr 2001 17:47:33 +0000 (17:47 -0000)
committerMark Whitley <markw@lineo.com>
Tue, 17 Apr 2001 17:47:33 +0000 (17:47 -0000)
coreutils/sort.c
sort.c

index 9707efa51c5f65f6e010e4ff9379f36f7407ce8e..b84453d3a4f17b19670490edb676cbc6b5ecbbb6 100644 (file)
@@ -33,7 +33,8 @@ static int compare_ascii(const void *x, const void *y)
 
 static int compare_numeric(const void *x, const void *y)
 {
-       return atoi(*(char **)x) - atoi(*(char **)y);
+       int z = atoi(*(char **)x) - atoi(*(char **)y);
+       return z ? z : strcmp(*(char **)x, *(char **)y);
 }
 
 int sort_main(int argc, char **argv)
@@ -70,6 +71,7 @@ int sort_main(int argc, char **argv)
 
                while ((line = get_line_from_file(fp)) != NULL) {
                        lines = xrealloc(lines, sizeof(char *) * (nlines + 1));
+                       line[strlen(line) - 1] = '\0';
                        lines[nlines++] = line;
                }
        }
@@ -81,10 +83,10 @@ int sort_main(int argc, char **argv)
 #ifdef BB_FEATURE_SORT_REVERSE
        if (reverse)
                for (i = nlines - 1; 0 <= i; i--)
-                       fputs(lines[i], stdout);
+                       puts(lines[i]);
        else
 #endif
        for (i = 0; i < nlines; i++)
-               fputs(lines[i], stdout);
+               puts(lines[i]);
        return EXIT_SUCCESS;
 }
diff --git a/sort.c b/sort.c
index 9707efa51c5f65f6e010e4ff9379f36f7407ce8e..b84453d3a4f17b19670490edb676cbc6b5ecbbb6 100644 (file)
--- a/sort.c
+++ b/sort.c
@@ -33,7 +33,8 @@ static int compare_ascii(const void *x, const void *y)
 
 static int compare_numeric(const void *x, const void *y)
 {
-       return atoi(*(char **)x) - atoi(*(char **)y);
+       int z = atoi(*(char **)x) - atoi(*(char **)y);
+       return z ? z : strcmp(*(char **)x, *(char **)y);
 }
 
 int sort_main(int argc, char **argv)
@@ -70,6 +71,7 @@ int sort_main(int argc, char **argv)
 
                while ((line = get_line_from_file(fp)) != NULL) {
                        lines = xrealloc(lines, sizeof(char *) * (nlines + 1));
+                       line[strlen(line) - 1] = '\0';
                        lines[nlines++] = line;
                }
        }
@@ -81,10 +83,10 @@ int sort_main(int argc, char **argv)
 #ifdef BB_FEATURE_SORT_REVERSE
        if (reverse)
                for (i = nlines - 1; 0 <= i; i--)
-                       fputs(lines[i], stdout);
+                       puts(lines[i]);
        else
 #endif
        for (i = 0; i < nlines; i++)
-               fputs(lines[i], stdout);
+               puts(lines[i]);
        return EXIT_SUCCESS;
 }