id: fix infinite loop on some systems
[coreutils/ericb.git] / old / textutils / NEWS
bloba6f6a2b67732ecda9e228d04497c60e5de4329ad
1 Changes in release 2.1
2 [2.0.22]
3 * `od -t f8' works once again [bug introduced in textutils-2.0.8]
4 * various portability fixes, and general clean-up
5 * various minor, corner-case bug fixes
6 [2.0.21]
7 * split accepts new option -a or --suffix-length.
8 * split no longer generates longer suffixes than requested; instead, it reports
9   an error when suffixes are exhausted.  POSIX requires this behavior.
10 * The _POSIX2_VERSION environment variable lets you select which version
11   of POSIX the utilities should conform to.  Its default value is system
12   dependent.  Set _POSIX2_VERSION=199209 to cause the utilities to support
13   obsolete usage like "sort +1".
14 * The following obsolete usages are no longer supported when conforming
15   to POSIX 1003.1-2001, which (at the time this change was made) was thought
16   to say that implementations must reject most digit-string options:
17     expand -N   (instead, use expand -t N)
18     head -N     (instead, use head -c N or head -n N)
19     fold -N     (instead, use fold -w N)
20     split -N    (instead, use split -l N)
21     tail -N     (instead, use tail -c N or tail -n N)
22     unexpand -N (instead, use unexpand --first-only -t N)
23     uniq -N     (instead, use uniq -f N)
24   The following obsolete usages (options without arguments) are no
25   longer supported when conforming to POSIX 1003.1-2001, which (at the
26   time this change was made) was thought to say that implementations must
27   reject options with optional arguments:
28     od -s       (instead, use od --strings)
29     od -w       (instead, use od --width)
30     pr -S       (instead, use pr --sep-string)
31 [2.0.20]
32 * tr no longer gets failed a assertion for [==] or [::]
33 * The following obsolete usages are no longer supported when conforming
34   to POSIX 1003.1-2001, which says that arguments with leading "+"
35   are file names in these contexts:
36     sort +POS1          (instead, use sort -k)
37     tail +N             (instead, use tail -c +N or tail -n +N)
38     uniq +N             (instead, use uniq -s N)
39 * Warnings are issued for obsolete usages on older hosts,
40   unless POSIXLY_CORRECT is set in the environment.
41 * sort -m no longer segfaults when given an empty file
42 * sort -S now accepts 'K' as a synonym for 'k'.
43 * wc recognizes all locale-defined white-space characters, not just those
44     in the "C" locale.
45 [2.0.19]
46 * portability tweak to make lib/regex.c compile
47 * split translatable strings only in the middle of sentences
48 [2.0.18]
49 * sort could segfault on systems without a working mkstemp function and
50     with a gettimeofday function that clobbers the static buffer that
51     localtime uses for it's return value -- introduced in 2.0.17
52 [2.0.17]
53 * csplit no longer gets a failed assertion for this:
54     printf 'a\n\n'|csplit - '/^$/' 2
55 * sort detects physical memory attributes more portably
56 * tail no longer gets a segfault on Linux's /proc/ksyms
57 * sum -s produces the proper 16-bit checksum for large files
58     (this fixes a bug that was introduced in 2.0f)
59 * uniq is now about 3 times faster than the version from 2.0 on Linux systems;
60     the code uses lock-avoiding variants of common I/O functions
61 [2.0.16]
62 * tail -F no longer segfaults
63 [2.0.15]
64 * `head -c N' and `od -N N' now read no more than N bytes of input
65 * tail accepts new option: -F, equivalent to `--follow=name --retry',
66     for compatibility with the FreeBSD and NetBSD versions of tail.
67 * fmt no longer segfaults when using a maximum line width larger than 32767
68 * uniq's --all-repeated option has new modes to delimit groups
69     of duplicate lines: --all-repeated={precede,separate,none(default)}
70 [2.0.14]
71 * sort now accepts long options like "--reverse" and "--".
72 * sort now checks option syntax as POSIX requires, except that (as usual
73   for GNU) options can follow file names unless POSIXLY_CORRECT is set.
74   For example, invalid positional combinations like "sort +1 -r -2" are
75   now rejected as per POSIX.
76 * The next POSIX standard will require that obsolescent 'sort'
77   positional options like +1 be treated as file names, not options.
78   Please use 'sort -k' instead.
79 [2.0.13]
80 * pr accepts new -D or --date option, to specify date format.
81 * The following changes are required by POSIX:
82   - If POSIXLY_CORRECT is set, dates in pr headers now look something like
83     'Dec  4 23:59 2001', with the exact appearance affected by LC_TIME.
84   - pr -h now affects only the center header string, not the entire header.
85   - pr no longer truncates headers.
86 * Spacing in pr headers has been adjusted slightly.
87 * `fmt --prefix=S' now works when S contains a byte with the high bit set
88 [2.0.12]
89 * sort has improved performance when using very little main memory
90 * sort has improved memory management
91 * sort is no longer susceptible to certain denial of service attacks
92 * sort no longer suffers from a race condition whereby an interrupt received
93     during cleanup could cause it to fail to remove temporary files.
94     This problem could arise only on hosts without sigaction.
95 [2.0.11]
96 * sort accepts new -S SIZE option, to specify main-memory usage.
97 [2.0.10]
98 * od is faster and more portable than it was in 2.0.9
99 * tail avoids an uninitialized memory reference
100 [2.0.9]
101 * od now prints valid addresses for offsets of 2^32 and larger, and allows
102     the byte offset (-j) and byte count (-N) arguments to be 2^32 and larger.
103 * tail now works with line and byte counts of 2^32 and larger, on systems
104     with large file support
105 * join now works with an 8-bit delimiter
106 * fix a compilation failure on some Solaris systems with wc.c
107 [2.0.8]
108 * od now supports 8-byte integers, assuming they're printable with e.g., %lld
109 * new program: sha1sum
110 * wc accepts new -m option: count (potentially multi-byte) characters
111 * wc's `--chars' option is now equivalent to -m, not --bytes as it used to be
112 * `cat -n' works properly when processing 2^31 or more lines
113 [2.0g]
114 * sort's --help output now warns that it is locale-aware
115 * tail: fix a buffer underrun error that occurred on an empty pipe,
116   also thanks to bounded pointers
117 * pr: fix a bounds violation found by Greg McGary's bounded-pointers-enabled gcc
118   It could have caused (with low probability) the columns on the last page of
119   output *not* to be `balanced' when they should have been.
120 * sort: if the -T tmpdir option is given multiple times, all the given
121   directories are used; this can improve performance for huge sort/merges.
122 [2.0f]
123 * all programs fail when printing --help or --version output to a full device
124 * cut no longer gets a segfault under some circumstances
125 * unexpand accepts new option: --first-only
126 [2.0e]
127 * `tail -f directory' no longer gets a failed assertion
128 * sort: big performance improvement when sorting many small files;
129   from Charles Randall
130 * configure and portability changes in m4/ and lib/
131 [2.0d]
132 * preliminary sort performance improvements
133 * tsort now works more like the traditional UNIX tsort.  Before it would
134   exit when it found a loop.  Now it continues and outputs all items.
135 * unexpand no longer infloops on certain sequences of white space
136 * unified lib/: now that directory and most of the configuration framework
137   is common between fileutils, textutils, and sh-utils
138 [2.0c]
139 * include lib/nanosleep.h.
140 [2.0b]
141 * portability tweaks for error.c vs. systems with deficient strerror_r
142 [2.0a]
143 * `tail --follow=name' no longer gets a failed assertion for a
144   dev,inode-reusing race condition
145 * sort and comm no longer consider newlines to be part of the line,
146   as this requirement will likely be removed from POSIX.2.
147   This undoes some changes made for textutils 1.22m and 1.22n.
148 * tail's (short only) -f option no longer accepts an optional argument,
149   so e.g., `tail -fn 2 file' works again.
150 * tail no longer refuses to operate on certain types of files
151 * fixed bug in tsort's handling of cycles
153 Changes in release 2.0
154 [1.22q]
155 * HPUX portability fix: md5sum would dump core due to use of libc's getline
156 [1.22p]
157 * portability fixes from Paul Eggert based largely on tar-1.13 reports
158 * `tail --pid=PID' now works even when PID belongs to some other user
159 [1.22o]
160 * tail accepts new option: --pid=PID
161 [1.22n]
162 * tail accepts the following new options (some of which were added in 1.22g):
163   --retry
164   --follow[={name|descriptor}]
165   --max-unchanged-stats=N
166   --max-consecutive-size-changes=N
167   --sleep-interval=S
168 * wc uses the POSIX-mandated output format when POSIXLY_CORRECT is set
169 * To maintain compatibility with sort, comm and join now obey the LC_COLLATE
170   locale, and comm now considers newlines to be part of the lines.
171 * use lib/memchr.c only if it's not provided by the system -- this means
172   that on systems with a fast library memchr function you may notice an
173   improvement.  If you use a system with a buggy or signifcantly slower
174   memchr, please report it.
175 [1.22m]
176 * sort now considers newlines to be part of the line, as required by POSIX.2.
177   E.g. a line starting with a tab now sorts before an empty line,
178   since tab precedes newline in the ASCII collating sequence.
179 * sort handles NUL bytes correctly when configured/compiled with --enable-nls
180 * fix typos in my version of AC_SEARCH_LIBS.
181 * fix dates on config files so builders don't need autoconf/automake
182 [1.22l]
183 * sort no longer autodetects the locale of numbers and months,
184    as that conflicts with POSIX.2
185 * `join -tC' now works when input contains trailing spaces
186 * portability tweaks for Irix's cc
187 [1.22k]
188 * `sort -n' works with negative numbers when configured/compiled
189    with --enable-nls
190 * head accepts byte and line counts of type uintmax_t (so up to 2^64 - 1)
191 [1.22j]
192 * tail: fix bug introduced in 1.22i
193 [1.22i]
194 * tail now terminates in `yes > k & sleep 1; tail -2c k'
195 * `tail -f' now ensures that stdout is unbuffered
196 * fix a bug in cut to allow use of 8-bit delimiters
197 * pr accepts POSIX compliant options -s and -w,
198   the new capital letter options -J, -S and _W turn off the
199   unexpected interferences of the small letter options -s and -w
200   if used together with the column options.
201 * pr output has been adapted to other UNIXes in some cases.
202 [1.22h]
203 * portability tweaks
204 * Window/NT/DOS support
205 [1.22g]
206 * uniq accepts new option: --all-repeated (-D).
207 * Windows/DOS portability fixes
208 * new program: tsort
209 * tail has several new options
210 * md5sum can handle file names with embedded backslash characters
211 * pr accepts long option names (see `pr --help')
212 * new program: ptx (moved to this package from being its own distribution)
213 [1.22f]
214 * cut accepts new --output-delimiter=STR option
215 * `sort -o no-such-file no-such-file' now fails, as it should
216 * fix pr bug: pr -td didn't double space
217 * fix tac bug when using -b, -r, and -s SEPARATOR
218 * fix sort bug whereby using key-local `d' option would cause following
219   key specs to be ignored when any two keys (in the `d'-modified test)
220   compared equal.
221 [1.22e]
222 * remove maintainer mode
223 [1.22d]
224 * wc accepts new option: --max-line-length (-L)
225 * sort can sort according to your locale if your C library supports that
226 [1.22c]
227 [1.22b]
228 * od supports a new trailing `z' character in a type specification:
229     $ od -tx1z .
230     0000000 be ef c6 0f fd f9 d7 e0 ec cb f3 c6 00 db e8 00  >................<
231     0000020 00 00 d2 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
232     0000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
233     *
234     0000600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 35 cc  >..............5.<
235     0000620 05 63 76 74 2e 6f 00 00 29 ac 08 70 72 6f 6a 65  >.cvt.o..)..proje<
236     0000640 63 74 73 00 00 00 18 9a 05 63 76 74 2e 63 00 00  >cts......cvt.c..<
237     0000660 18 d9 03 52 43 53 00 00 18 c0 05 78 2e 64 61 74  >...RCS.....x.dat<
239 [1.22a]
240 * sort -c reports both the number and the contents of the first out-of-order
241   line, in addition to the file name.
242 * `head -c 4096m' is no longer treated just like `head -c 0'
243   now it gets a diagnostic about 4096m being too large.
244 * pr: For compatibility (also more POSIX compliant): Include default
245   separator `TAB' when merging lines of full length.
246 * When POSIXLY_CORRECT is not set, tail -N now accepts more than one file
247   argument, to be consistent with the way head -N works.  If POSIXLY_CORRECT
248   is set, using two or more file arguments with the obsolescent form (-N)
249   evokes an error.  To avoid the warning or failure, use the POSIX -n N option
250   or the GNU --lines=N option.
252 Changes in release 1.22
253 [1.21a]
254 * Fix a bug in tail when invoked with an argument like `+NUMBERc'
255 * Add test suite for tail
257 Changes in release 1.21
258 * Using --program-prefix no longer applies the prefix twice
260 Changes in release 1.20
261 * fix pr: -l now uses total number of lines per page also with -f
262 * fix pr: use left-hand-side truncation of header string to avoid line
263   overflow
264 * fix pr: it now accepts `form feeds set in input files', also with -m
265   and multiple form feeds at different pages in each file
266 * pr now accepts: -h "", print a blank line header
267 * pr: when skipping pages (+FIRST_PAGE option) line counting (-n option)
268   starts with 1st line of input file (not of 1st page printed) by default
269 * pr accepts new option: -N, start printing with an optional line number
270 * pr -t retains `form feeds set in input files' (`don't destroy page layout')
271 * pr accepts new option: -T, equivalent to -t, but eliminate also form feeds
272   (`clear file')
273 * pr accepts the extension: +FIRST_PAGE[:LAST_PAGE]
274 * pr -w and -s option disentangled (`use a separator' no longer destroys
275   column alignment)
276 * pr accepts new option: -j, merge lines of full length
277 * pr accepts the extension: -s[STRING], use separator string instead of
278   character only
279 * pr -b is no longer an independent option, balancing is always used
280   with -COLUMN (a requirement of unrestricted use of form feeds)
281 * pr accepts new option: --test, to run the pr tests with a constant
282   header string
283 * join passes all of its tests on Alpha OSF 4.0.
284 * sort no longer improperly ignores blanks in determining starting and ending
285   positions for keys with explicit character offsets
286 * fix bug in csplit with regexp and negative offset that led to infinite loop
287  Changes in test release 1.19q
288 * fix bug in sort -c that sometimes resulted in a segfault
289  Changes in test release 1.19p
290 * md5sum's --string option is being deprecated and is no longer documented.
291   It is still accepted, but will be removed altogether in 1.22.
292 * tr '[:lower:]' '[:upper:]' no longer fails when LC_CTYPE is set to
293   iso_8859_1 on Solaris -- or any other character set with differing
294   numbers of uppercase and lowercase characters
295 * split and tail diagnose unrecognized multiplier suffixes, in e.g.,
296   `split --bytes=1M' (should be `-b 1m' or `--bytes=1m')
297 * fix bug in md5sum's handling of partial reads
298 * fix bug in treatment by sort -f of bytes with high-bit set
299 * update configuration system to use automake's aclocal program
300 * configure performs sanity check on CC and CFLAGS to avoid a misleading
301   failure that suggested cross-compiling was the cause
302 * distribute test suites for cut, join, sort, and tr
303 * unexpand no longer gets in endless loop
304 * when verifying checksums, md5sum uses the binary mode flag from the
305   input stream rather than the one from the command line
307 Changes in release 1.19
308 * md5sum can verify digests of files with names containing newline characters
309 * update from gettext-0.10.20.
311 Changes in release 1.18
312 * when building sort, link with -lm on systems that use the replacement strtod
313 * update from gettext-0.10.17.
315 Changes in release 1.17
316 * include texinfo.tex in the distribution
318 Changes in release 1.16
319 * sort is compatible with Unix sort when a key-end spec refers to the N'th
320   character in a field that has fewer than N characters
321 * tail with old-style options like -20k and +31m operates on units of bytes,
322   as the --help usage message says.  Before, it used units of lines.
324 Changes in release 1.15
325 * od gives better diagnostics for invalid format specs
326 * uses automake-generated Makefile templates
327 * configure takes a new option: --enable-maintainer-mode
328 * fix a bug in fmt when prefix has trailing white space
329 * internationalized diagnostic messages
330 * fix a couple bugs in tr involving use of -c and/or -d flags -- see ChangeLog
331 * diagnose some improper or questionable invocations of csplit
332 * properly handle `echo |csplit - 1 1', rather than aborting
333 * fix join: without -t it now ignores leading blanks
334 * sort accepts new option: -z for NUL terminated records
335 * join accepts new option: --ignore-case, -i
336 * uniq accepts new option: --ignore-case, -i
338 User-visible changes in release 1.14
339 * sort -i and sort -d properly order strings containing ignored characters
340 * nl: rename misleading --first-page=N option to --starting-line-number=N.
341 * sort diagnoses invalid arguments to -k, then fails
342 * sort -n properly orders invalid integers with respect to valid integers
343 * sorting works with character offsets larger than corresponding field width
344 * sort's -b option and `b' modifier work
345 * sort -k2,2 works.
346 * csplit detects integer overflow when converting command line arguments
347 * sort accepts new option/flag, -g, for sorting numbers in scientific notation
348 * join accepts POSIX `-o 0' field specifier.
349 * tr 'a[b*512]' '[a*]' < /dev/null terminates
350 * tr '[:*3][:digit:]' 'a-m' and tr 'a[=*2][=c=]' 'xyyz' no longer fail
351 * special characters in tr's string1 and string2 may be escaped with backslash
353 User-visible changes in release 1.13
354 * md5sum: with --check, distinguish between open/read failure and bad checksum
355 * md5sum: remove -h, -s, -v short options
356 * md5sum: rename --verbose to --warn, --quiet to --status
357 * md5sum --check fails if it finds no properly formatted checksum lines
358 * sort -c prints `disorder on...' message on standard error, not stdout
359 * sort -k works as described in the texinfo documentation
360 * tail works on NetBSD
361 * md5sum reads and writes (de facto) standard Plumb/Lankester format
362 * sort accepts -.1 +.2 options for compatibility
363 * od works properly when dump limit is specified and is a multiple of
364   bytes_per_block (set by --width, 16 by default).
366 User-visible changes in release 1.12
367 * sort no longer reports spurious errors on Ultrix systems
368 * new program: md5sum
369 * all --help messages have been improved
370 * join's -a1 and -a2 options work
371 * tr '[:upper:]' '[:lower:]' no longer reads uninitialized memory
372 * sort properly handles command line arguments like `+7.2n'
373 * fmt properly formats paragraphs not terminated by a newline
374 * tail -f flushes stdout before sleeping so that it will output partial
375   lines sooner
376 * sort properly orders fields where one field is a proper prefix of the other
377 * sort properly interprets field offsets specified via the -k option
378 * dd, od, and tail work on systems for which off_t is long long (e.g. BSD4.4)
379 * wc is faster when not counting words
380 * wc now works even when file pointer isn't at beginning of file
381 * expand no longer seg faults with very long tab lists
383 User-visible changes in release 1.11
384 * fmt is built
386 User-visible changes in release 1.10
387 * skeletal texinfo documentation (mainly just the `invoking' nodes)
388 * new program: fmt
389 * tail -f on multiple files reports file truncation
390 * tail -q has been fixed so it never prints headers
391 * wc -c is much faster when operating on non-regular files
392 * unexpand gives a diagnostic (rather than a segfault) when given a name of
393   a nonexistent file.
394 * cat, csplit, head, split, sum, tac, tail, tr, and wc no longer fail
395   gratuitously when continued after a suspended read or write system call.
396 * cut interprets -d '' to mean `use the NUL byte as the delimiter' rather
397   than reporting that no delimiter was specified and failing.
398 * `echo a:b:c: | cut -d: -f3,4' prints `c:'.  Before it printed just `c'.
399 * cut has been rewritten, is markedly faster for large inputs, and passes a
400   fairly large test suite.
401 * sort properly handles the argument to the -T option.
403 Major changes in release 1.9.1:
404 * cut no longer ignores the last line of input when that line lacks a
405   trailing newline character
407 Major changes in release 1.9:
408 * `echo a:b:c: | cut -d: -f3-' prints `c:' and
409   `echo a:b | cut -d: -f1' prints `a'.
410 * the command `printf '\t\n' |fold -w n' now terminates.
411   Before, it wouldn't stop for n less than 8.
412 * sort accepts and ignores -y[string] options for compatibilty with Solaris.
413 * cat -v /dev/null works on more systems
414 * od's --compatible (-C) flag renamed to --traditional (no short option)
415 * --help and --version exit successfully
416 * --help gives a one-line description of each option and shows the
417   correspondence between short and long-named options.
418 * fix bug in cut.  Now `echo 'a:b:c:' | cut -d: -f3-' works.
419   Before it printed `c' instead of `c:'
420 * csplit allows repeat counts to be specified via `{*}'.
421 * csplit accepts a new option, --suffix=format that supercedes the
422   --digits option.  The --digits option will continue to work.
423 * csplit accepts a new option, --elide-empty-files.
424 * configure uses config.h, so DEFS won't exceed preprocessor limits of
425   some compilers on the number of symbols defined via -D.
426 * work around problem where $(srcdir)/config.h was used instead of
427   ../config.h -- this happened only when building in a subdirectory
428   and when config.h remained in $(srcdir) from a previous ./configure.
430 Major changes in release 1.8:
431 * added non-ANSIfied version of memchr.c from GNU libc.
433 Major changes in release 1.7:
434 * none
435 Major changes in release 1.6:
436 * with the --version option programs print the version and exit immediately
437 * pr -2a really terminates
438 * pr -n produces multi-column output
440 Major changes in release 1.5:
441 * sort is 8-bit clean
442 * sort's -n and -M options no longer imply -b
443 * several bugs in sort have been fixed
444 * all programs accept --help and --version options
445 * od --compatible accepts pre-POSIX arguments
446 * pr -2a terminates
448 Major changes in release 1.4:
449 * add od and cksum programs
450 * move cmp to GNU diff distribution
451 * tail -f works for multiple files
452 * pr prints the file name in error messages
453 * fix some off by 1 errors in pr and fold
454 * optimize wc -c on regular files
455 * sort handles `-' argument correctly
456 * sort supports -T option
457 * tr ranges like a-a work
458 * tr x '' fails gracefully
459 * default sum output format is BSD compatible
460 * paste -d '' works
462 ========================================================================
464 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
465 2001, 2002, 2006 Free Software Foundation, Inc.
467 Permission is granted to copy, distribute and/or modify this document
468 under the terms of the GNU Free Documentation License, Version 1.3 or
469 any later version published by the Free Software Foundation; with no
470 Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
471 Texts.  A copy of the license is included in the ``GNU Free
472 Documentation License'' file as part of this distribution.