sort is good to go.
authorJohn Beppu <beppu@lbox.org>
Thu, 23 Dec 1999 22:46:10 +0000 (22:46 -0000)
committerJohn Beppu <beppu@lbox.org>
Thu, 23 Dec 1999 22:46:10 +0000 (22:46 -0000)
Changelog
coreutils/sort.c
sort.c

index 10e59233ef230a85e0065a033b474e799d4f910d..4b5ac711bb769b5d52aaefc271abacd740ea1b5c 100644 (file)
--- a/Changelog
+++ b/Changelog
@@ -9,6 +9,7 @@
            with the 2.0.x Linux kernel.
        * Added 'grep -q' thanks to a patch from "Konstantin Boldyshev" 
            <konst@voshod.com>.
+       * Implemented sort. -beppu
 
        -Erik Andersen
 
index 127d683198039470a1623aeff360a8924d8b5476..0fe7bf99bb0ce7532ddc55669aa5e08706cbc35b 100644 (file)
@@ -256,11 +256,19 @@ sort_main(int argc, char **argv)
            opt = argv[i][1];
            switch (opt) {
                case 'g':
-                   compare = compare_numeric;
+                   /* what's the diff between -g && -n? */
+                   compare = compare_numeric;      
                    break;
                case 'h':
                    usage(sort_usage);
                    break;
+               case 'n':
+                   /* what's the diff between -g && -n? */
+                   compare = compare_numeric;      
+                   break;
+               case 'r':
+                   /* reverse */
+                   break;
                default:
                    fprintf(stderr, "sort: invalid option -- %c\n", opt);
                    usage(sort_usage);
@@ -270,7 +278,9 @@ sort_main(int argc, char **argv)
        }
     }
 
-    /* go through remaining args (if any) */
+    /* this could be factored better */
+
+    /* work w/ stdin */
     if (i >= argc) {
        while ( (l = line_newFromFile(stdin))) {
            list_insert(&list, l);
@@ -278,32 +288,25 @@ sort_main(int argc, char **argv)
        list_sort(&list, compare);
        list_writeToFile(&list, stdout);
        list_release(&list);
+
+    /* work w/ what's left in argv[] */
     } else {
+       FILE    *src;
+
        for ( ; i < argc; i++) {
+           src = fopen(argv[i], "r");
+           if (src == NULL) { break; }
+           while ( (l = line_newFromFile(src))) {
+               list_insert(&list, l);
+           }
+           fclose(src);
        }
+       list_sort(&list, compare);
+       list_writeToFile(&list, stdout);
+       list_release(&list);
     }
 
     exit(0);
 }
 
-/* $Id: sort.c,v 1.7 1999/12/23 00:02:49 beppu Exp $ */
-/* 
- * $Log: sort.c,v $
- * Revision 1.7  1999/12/23 00:02:49  beppu
- *     implemented numeric sort (sort -g)
- *
- * Revision 1.6  1999/12/22 23:02:12  beppu
- *     oops..  qsort(2) misunderstanding on my part.
- *     it's ok, now.
- *
- * Revision 1.5  1999/12/22 22:27:01  beppu
- * playing w/ $Log: sort.c,v $
- * playing w/ Revision 1.7  1999/12/23 00:02:49  beppu
- * playing w/  implemented numeric sort (sort -g)
- * playing w/
- * playing w/ Revision 1.6  1999/12/22 23:02:12  beppu
- * playing w/  oops..  qsort(2) misunderstanding on my part.
- * playing w/  it's ok, now.
- * playing w/
- *
- */
+/* $Id: sort.c,v 1.8 1999/12/23 22:46:10 beppu Exp $ */
diff --git a/sort.c b/sort.c
index 127d683198039470a1623aeff360a8924d8b5476..0fe7bf99bb0ce7532ddc55669aa5e08706cbc35b 100644 (file)
--- a/sort.c
+++ b/sort.c
@@ -256,11 +256,19 @@ sort_main(int argc, char **argv)
            opt = argv[i][1];
            switch (opt) {
                case 'g':
-                   compare = compare_numeric;
+                   /* what's the diff between -g && -n? */
+                   compare = compare_numeric;      
                    break;
                case 'h':
                    usage(sort_usage);
                    break;
+               case 'n':
+                   /* what's the diff between -g && -n? */
+                   compare = compare_numeric;      
+                   break;
+               case 'r':
+                   /* reverse */
+                   break;
                default:
                    fprintf(stderr, "sort: invalid option -- %c\n", opt);
                    usage(sort_usage);
@@ -270,7 +278,9 @@ sort_main(int argc, char **argv)
        }
     }
 
-    /* go through remaining args (if any) */
+    /* this could be factored better */
+
+    /* work w/ stdin */
     if (i >= argc) {
        while ( (l = line_newFromFile(stdin))) {
            list_insert(&list, l);
@@ -278,32 +288,25 @@ sort_main(int argc, char **argv)
        list_sort(&list, compare);
        list_writeToFile(&list, stdout);
        list_release(&list);
+
+    /* work w/ what's left in argv[] */
     } else {
+       FILE    *src;
+
        for ( ; i < argc; i++) {
+           src = fopen(argv[i], "r");
+           if (src == NULL) { break; }
+           while ( (l = line_newFromFile(src))) {
+               list_insert(&list, l);
+           }
+           fclose(src);
        }
+       list_sort(&list, compare);
+       list_writeToFile(&list, stdout);
+       list_release(&list);
     }
 
     exit(0);
 }
 
-/* $Id: sort.c,v 1.7 1999/12/23 00:02:49 beppu Exp $ */
-/* 
- * $Log: sort.c,v $
- * Revision 1.7  1999/12/23 00:02:49  beppu
- *     implemented numeric sort (sort -g)
- *
- * Revision 1.6  1999/12/22 23:02:12  beppu
- *     oops..  qsort(2) misunderstanding on my part.
- *     it's ok, now.
- *
- * Revision 1.5  1999/12/22 22:27:01  beppu
- * playing w/ $Log: sort.c,v $
- * playing w/ Revision 1.7  1999/12/23 00:02:49  beppu
- * playing w/  implemented numeric sort (sort -g)
- * playing w/
- * playing w/ Revision 1.6  1999/12/22 23:02:12  beppu
- * playing w/  oops..  qsort(2) misunderstanding on my part.
- * playing w/  it's ok, now.
- * playing w/
- *
- */
+/* $Id: sort.c,v 1.8 1999/12/23 22:46:10 beppu Exp $ */