Changes in release 2.0
Changes in release 2.0
[1.22q]
* HPUX portability fix: md5sum would dump core due to use of libc's getline
[1.22p]
* portability fixes from Paul Eggert based largely on tar-1.13 reports
* `tail --pid=PID' now works even when PID belongs to some other user
[1.22o]
* tail accepts new option: --pid=PID
[1.22n]
* tail accepts the following new options (some of which were added in 1.22g):
  --retry
  --follow[={name|descriptor}]
  --max-unchanged-stats=N
  --max-consecutive-size-changes=N
  --sleep-interval=S
* wc uses the POSIX-mandated output format when POSIXLY_CORRECT is set
* To maintain compatibility with sort, comm and join now obey the LC_COLLATE
  locale, and comm now considers newlines to be part of the lines.
* use lib/memchr.c only if it's not provided by the system -- this means
  that on systems with a fast library memchr function you may notice an
  improvement.  If you use a system with a buggy or signifcantly slower
  memchr, please report it.
[1.22m]
* sort now considers newlines to be part of the line, as required by POSIX.2.
  E.g. a line starting with a tab now sorts before an empty line,
  since tab precedes newline in the ASCII collating sequence.
* sort handles NUL bytes correctly when configured/compiled with --enable-nls
* fix typos in my version of AC_SEARCH_LIBS.
* fix dates on config files so builders don't need autoconf/automake
[1.22l]
* sort no longer autodetects the locale of numbers and months,
   as that conflicts with POSIX.2
* `join -tC' now works when input contains trailing spaces
* portability tweaks for Irix's cc
[1.22k]
* `sort -n' works with negative numbers when configured/compiled
   with --enable-nls
* head accepts byte and line counts of type uintmax_t (so up to 2^64 - 1)
[1.22j]
* tail: fix bug introduced in 1.22i
[1.22i]
* tail now terminates in `yes > k & sleep 1; tail -2c k'
* `tail -f' now ensures that stdout is unbuffered
* fix a bug in cut to allow use of 8-bit delimiters
* pr accepts POSIX compliant options -s and -w,
  the new capital letter options -J, -S and _W turn off the
  unexpected interferences of the small letter options -s and -w
  if used together with the column options.
* pr output has been adapted to other UNIXes in some cases.
[1.22h]
* portability tweaks
* Window/NT/DOS support
[1.22g]
* uniq accepts new option: --all-repeated (-D).
* Windows/DOS portability fixes
* new program: tsort
* tail has several new options
* md5sum can handle file names with embedded backslash characters
* pr accepts long option names (see `pr --help')
* new program: ptx (moved to this package from being its own distribution)
[1.22f]
* cut accepts new --output-delimiter=STR option
* `sort -o no-such-file no-such-file' now fails, as it should
* fix pr bug: pr -td didn't double space
* fix tac bug when using -b, -r, and -s SEPARATOR
* fix sort bug whereby using key-local `d' option would cause following
  key specs to be ignored when any two keys (in the `d'-modified test)
  compared equal.
[1.22e]
* remove maintainer mode
[1.22d]
* wc accepts new option: --max-line-length (-L)
* sort can sort according to your locale if your C library supports that
[1.22c]
[1.22b]
* od supports a new trailing `z' character in a type specification:
    $ od -tx1z .
    0000000 be ef c6 0f fd f9 d7 e0 ec cb f3 c6 00 db e8 00  >................<
    0000020 00 00 d2 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
    0000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
    *
    0000600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 35 cc  >..............5.<
    0000620 05 63 76 74 2e 6f 00 00 29 ac 08 70 72 6f 6a 65  >.cvt.o..)..proje<
    0000640 63 74 73 00 00 00 18 9a 05 63 76 74 2e 63 00 00  >cts......cvt.c..<
    0000660 18 d9 03 52 43 53 00 00 18 c0 05 78 2e 64 61 74  >...RCS.....x.dat<

[1.22a]
* sort -c reports both the number and the contents of the first out-of-order
  line, in addition to the file name.
* `head -c 4096m' is no longer treated just like `head -c 0'
  now it gets a diagnostic about 4096m being too large.
* pr: For compatibility (also more POSIX compliant): Include default
  separator `TAB' when merging lines of full length.
* When POSIXLY_CORRECT is not set, tail -N now accepts more than one file
  argument, to be consistent with the way head -N works.  If POSIXLY_CORRECT
  is set, using two or more file arguments with the obsolescent form (-N)
  evokes an error.  To avoid the warning or failure, use the POSIX -n N option
  or the GNU --lines=N option.

Changes in release 1.22
[1.21a]
* Fix a bug in tail when invoked with an argument like `+NUMBERc'
* Add test suite for tail

Changes in release 1.21
* Using --program-prefix no longer applies the prefix twice

Changes in release 1.20
* fix pr: -l now uses total number of lines per page also with -f
* fix pr: use left-hand-side truncation of header string to avoid line
  overflow
* fix pr: it now accepts `form feeds set in input files', also with -m
  and multiple form feeds at different pages in each file
* pr now accepts: -h "", print a blank line header
* pr: when skipping pages (+FIRST_PAGE option) line counting (-n option)
  starts with 1st line of input file (not of 1st page printed) by default
* pr accepts new option: -N, start printing with an optional line number
* pr -t retains `form feeds set in input files' (`don't destroy page layout')
* pr accepts new option: -T, equivalent to -t, but eliminate also form feeds
  (`clear file')
* pr accepts the extension: +FIRST_PAGE[:LAST_PAGE]
* pr -w and -s option disentangled (`use a separator' no longer destroys
  column alignment)
* pr accepts new option: -j, merge lines of full length
* pr accepts the extension: -s[STRING], use separator string instead of
  character only
* pr -b is no longer an independent option, balancing is always used
  with -COLUMN (a requirement of unrestricted use of form feeds)
* pr accepts new option: --test, to run the pr tests with a constant
  header string
* join passes all of its tests on Alpha OSF 4.0.
* sort no longer improperly ignores blanks in determining starting and ending
  positions for keys with explicit character offsets
* fix bug in csplit with regexp and negative offset that led to infinite loop
 Changes in test release 1.19q
* fix bug in sort -c that sometimes resulted in a segfault
 Changes in test release 1.19p
* md5sum's --string option is being deprecated and is no longer documented.
  It is still accepted, but will be removed altogether in 1.22.
* tr '[:lower:]' '[:upper:]' no longer fails when LC_CTYPE is set to
  iso_8859_1 on Solaris -- or any other character set with differing
  numbers of uppercase and lowercase characters
* split and tail diagnose unrecognized multiplier suffixes, in e.g.,
  `split --bytes=1M' (should be `-b 1m' or `--bytes=1m')
* fix bug in md5sum's handling of partial reads
* fix bug in treatment by sort -f of bytes with high-bit set
* update configuration system to use automake's aclocal program
* configure performs sanity check on CC and CFLAGS to avoid a misleading
  failure that suggested cross-compiling was the cause
* distribute test suites for cut, join, sort, and tr
* unexpand no longer gets in endless loop
* when verifying checksums, md5sum uses the binary mode flag from the
  input stream rather than the one from the command line

Changes in release 1.19
* md5sum can verify digests of files with names containing newline characters
* update from gettext-0.10.20.

Changes in release 1.18
* when building sort, link with -lm on systems that use the replacement strtod
* update from gettext-0.10.17.

Changes in release 1.17
* include texinfo.tex in the distribution

Changes in release 1.16
* sort is compatible with Unix sort when a key-end spec refers to the N'th
  character in a field that has fewer than N characters
* tail with old-style options like -20k and +31m operates on units of bytes,
  as the --help usage message says.  Before, it used units of lines.

Changes in release 1.15
* od gives better diagnostics for invalid format specs
* uses automake-generated Makefile templates
* configure takes a new option: --enable-maintainer-mode
* fix a bug in fmt when prefix has trailing white space
* internationalized diagnostic messages
* fix a couple bugs in tr involving use of -c and/or -d flags -- see ChangeLog
* diagnose some improper or questionable invocations of csplit
* properly handle `echo |csplit - 1 1', rather than aborting
* fix join: without -t it now ignores leading blanks
* sort accepts new option: -z for NUL terminated records
* join accepts new option: --ignore-case, -i
* uniq accepts new option: --ignore-case, -i

User-visible changes in release 1.14
* sort -i and sort -d properly order strings containing ignored characters
* nl: rename misleading --first-page=N option to --starting-line-number=N.
* sort diagnoses invalid arguments to -k, then fails
* sort -n properly orders invalid integers with respect to valid integers
* sorting works with character offsets larger than corresponding field width
* sort's -b option and `b' modifier work
* sort -k2,2 works.
* csplit detects integer overflow when converting command line arguments
* sort accepts new option/flag, -g, for sorting numbers in scientific notation
* join accepts POSIX `-o 0' field specifier.
* tr 'a[b*512]' '[a*]' < /dev/null terminates
* tr '[:*3][:digit:]' 'a-m' and tr 'a[=*2][=c=]' 'xyyz' no longer fail
* special characters in tr's string1 and string2 may be escaped with backslash

User-visible changes in release 1.13
* md5sum: with --check, distinguish between open/read failure and bad checksum
* md5sum: remove -h, -s, -v short options
* md5sum: rename --verbose to --warn, --quiet to --status
* md5sum --check fails if it finds no properly formatted checksum lines
* sort -c prints `disorder on...' message on standard error, not stdout
* sort -k works as described in the texinfo documentation
* tail works on NetBSD
* md5sum reads and writes (de facto) standard Plumb/Lankester format
* sort accepts -.1 +.2 options for compatibility
* od works properly when dump limit is specified and is a multiple of
  bytes_per_block (set by --width, 16 by default).

User-visible changes in release 1.12
* sort no longer reports spurious errors on Ultrix systems
* new program: md5sum
* all --help messages have been improved
* join's -a1 and -a2 options work
* tr '[:upper:]' '[:lower:]' no longer reads uninitialized memory
* sort properly handles command line arguments like `+7.2n'
* fmt properly formats paragraphs not terminated by a newline
* tail -f flushes stdout before sleeping so that it will output partial
  lines sooner
* sort properly orders fields where one field is a proper prefix of the other
* sort properly interprets field offsets specified via the -k option
* dd, od, and tail work on systems for which off_t is long long (e.g. BSD4.4)
* wc is faster when not counting words
* wc now works even when file pointer isn't at beginning of file
* expand no longer seg faults with very long tab lists

User-visible changes in release 1.11
* fmt is built

User-visible changes in release 1.10
* skeletal texinfo documentation (mainly just the `invoking' nodes)
* new program: fmt
* tail -f on multiple files reports file truncation
* tail -q has been fixed so it never prints headers
* wc -c is much faster when operating on non-regular files
* unexpand gives a diagnostic (rather than a segfault) when given a name of
  a nonexistent file.
* cat, csplit, head, split, sum, tac, tail, tr, and wc no longer fail
  gratuitously when continued after a suspended read or write system call.
* cut interprets -d '' to mean `use the NUL byte as the delimiter' rather
  than reporting that no delimiter was specified and failing.
* `echo a:b:c: | cut -d: -f3,4' prints `c:'.  Before it printed just `c'.
* cut has been rewritten, is markedly faster for large inputs, and passes a
  fairly large test suite.
* sort properly handles the argument to the -T option.

Major changes in release 1.9.1:
* cut no longer ignores the last line of input when that line lacks a
  trailing newline character

Major changes in release 1.9:
* `echo a:b:c: | cut -d: -f3-' prints `c:' and
  `echo a:b | cut -d: -f1' prints `a'.
* the command `printf '\t\n' |fold -w n' now terminates.
  Before, it wouldn't stop for n less than 8.
* sort accepts and ignores -y[string] options for compatibilty with Solaris.
* cat -v /dev/null works on more systems
* od's --compatible (-C) flag renamed to --traditional (no short option)
* --help and --version exit successfully
* --help gives a one-line description of each option and shows the
  correspondence between short and long-named options.
* fix bug in cut.  Now `echo 'a:b:c:' | cut -d: -f3-' works.
  Before it printed `c' instead of `c:'
* csplit allows repeat counts to be specified via `{*}'.
* csplit accepts a new option, --suffix=format that supercedes the
  --digits option.  The --digits option will continue to work.
* csplit accepts a new option, --elide-empty-files.
* configure uses config.h, so DEFS won't exceed preprocessor limits of
  some compilers on the number of symbols defined via -D.
* work around problem where $(srcdir)/config.h was used instead of
  ../config.h -- this happened only when building in a subdirectory
  and when config.h remained in $(srcdir) from a previous ./configure.

Major changes in release 1.8:
* added non-ANSIfied version of memchr.c from GNU libc.

Major changes in release 1.7:
* none
Major changes in release 1.6:
* with the --version option programs print the version and exit immediately
* pr -2a really terminates
* pr -n produces multi-column output

Major changes in release 1.5:
* sort is 8-bit clean
* sort's -n and -M options no longer imply -b
* several bugs in sort have been fixed
* all programs accept --help and --version options
* od --compatible accepts pre-POSIX arguments
* pr -2a terminates

Major changes in release 1.4:
* add od and cksum programs
* move cmp to GNU diff distribution
* tail -f works for multiple files
* pr prints the file name in error messages
* fix some off by 1 errors in pr and fold
* optimize wc -c on regular files
* sort handles `-' argument correctly
* sort supports -T option
* tr ranges like a-a work
* tr x '' fails gracefully
* default sum output format is BSD compatible
* paste -d '' works