sort: -z outputs NUL terminated lines. Closes bug 1591.
authorDenis Vlasenko <vda.linux@googlemail.com>
Wed, 13 Feb 2008 14:30:33 +0000 (14:30 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Wed, 13 Feb 2008 14:30:33 +0000 (14:30 -0000)
coreutils/sort.c
testsuite/README
testsuite/runtest
testsuite/sort.tests

index 1d6c599709773fb9496eb1c7c369e70f162c30a5..d8df4c53260e63a8aa9de10c3a9a6f375e034562 100644 (file)
@@ -32,7 +32,7 @@ enum {
        FLAG_u  = 8,            /* Unique */
        FLAG_c  = 0x10,         /* Check: no output, exit(!ordered) */
        FLAG_s  = 0x20,         /* Stable sort, no ascii fallback at end */
-       FLAG_z  = 0x40,         /* Input is null terminated, not \n */
+       FLAG_z  = 0x40,         /* Input and output is NUL terminated, not \n */
 /* These can be applied to search keys, the previous four can't */
        FLAG_b  = 0x80,         /* Ignore leading blanks */
        FLAG_r  = 0x100,        /* Reverse */
@@ -396,8 +396,9 @@ int sort_main(int argc, char **argv)
                if (linecount) linecount = flag+1;
        }
        /* Print it */
+       flag = (option_mask32 & FLAG_z) ? '\0' : '\n';
        for (i = 0; i < linecount; i++)
-               fprintf(outfile, "%s\n", lines[i]);
+               fprintf(outfile, "%s%c", lines[i], flag);
 
        fflush_stdout_and_exit(EXIT_SUCCESS);
 }
index a44846dbbd9f2501c25a9eaaaedc24f1f524db6b..b4719e64cc17186a65c628c6a8313e79655fa03e 100644 (file)
@@ -1,6 +1,3 @@
-Update: doesn't work as described. Try "make check" from parent dir...
-* * *
-
 To run the test suite, change to this directory and run "./runtest".  It will
 run all of the test cases, and list those with unexpected outcomes.  Adding the
 -v option will cause it to show expected outcomes as well.  To only run the test
index 93d5ed6e1728baa2f6437cf2fcc1b32c5f66fa00..fc8392ac537dacf9527e59f03d1fddf870be3c33 100755 (executable)
@@ -1,5 +1,8 @@
 #!/bin/sh
 
+# Usage:
+# runtest [applet1] [applet2...]
+
 # Run one old-style test.
 # Tests are stored in applet/testcase shell scripts.
 # They are run using "sh -x -e applet/testcase".
index 1db7870d4b94e61037883f33dcff74fc92915a3e..f700dc0c16ca1992e82be9e955b41d586fe45ef9 100755 (executable)
@@ -107,6 +107,12 @@ a c
 b c
 " ""
 
+testing "sort -z outputs NUL terminated lines" "sort -z input" "\
+one\0three\0two\0\
+" "\
+one\0two\0three\0\
+" ""
+
 testing "sort key doesn't strip leading blanks, disables fallback global sort" \
 "sort -n -k2 -t ' '" " a \n 1 \n 2 \n" "" " 2 \n 1 \n a \n"