1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
Summary: 0001591: inconsistent behavior of sort -z
URL: http://busybox.net/bugs/view.php?id=1591
http://www.busybox.net/cgi-bin/viewcvs.cgi/trunk/busybox/coreutils/sort.c?rev=21004&r1=20435&r2=21004&makepatch=1&diff_format=u
Description:
busybox sort -z does:
use NUL instead of EOL on input
GNU sort -z does:
use NUL instead of EOL on input and output
GNU sort -z documents:
use NUL instead of EOL on input
Additional Information:
Note that sort -z is not part of any standard. But several applications
(e. g. GNU findutils updatedb) depends on the NUL-on-output behavior.
GNU sort documentation bug was reported to coreutils maintainers.
Notes:
vda 02-13-08 06:30 (0004364)
Fixed in revision 21004. Thanks!
--- busybox/coreutils/sort.c 2007/11/16 12:39:16 20435
+++ busybox/coreutils/sort.c 2008/02/13 14:30:33 21004
@@ -32,7 +32,7 @@
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 @@
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);
}
|