.
authorJim Meyering <jim@meyering.net>
Wed, 4 Jan 2006 18:27:03 +0000 (18:27 +0000)
committerJim Meyering <jim@meyering.net>
Wed, 4 Jan 2006 18:27:03 +0000 (18:27 +0000)
ChangeLog-2005 [new file with mode: 0644]

diff --git a/ChangeLog-2005 b/ChangeLog-2005
new file mode 100644 (file)
index 0000000..ec0b23b
--- /dev/null
@@ -0,0 +1,11002 @@
+2005-10-22  Jim Meyering  <jim@meyering.net>
+
+       * Version 5.92.
+
+       * configure.ac: Remove -cvs suffix from version string.
+       * NEWS: Add today's date.
+
+       * tests/mkdir/writable-under-readonly: New test, neither run
+       nor distributed via tarballs.
+
+2005-10-20  Jim Meyering  <jim@meyering.net>
+
+       * tests/chmod/octal: New file/test, to exercise today's
+       lib/modechange.c fix.
+       * tests/chmod/Makefile.am (TESTS): Add octal.
+       * NEWS: Mention this chmod fix as well as the dircolors one.
+
+2005-10-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/dircolors.c (append_quoted): Quote ' correctly.
+       Problem reported by Eric Blake.
+
+2005-10-19  Jim Meyering  <jim@meyering.net>
+
+       * tests/dircolors/simple (quote): Add test for the above fix.
+
+2005-10-18  Jim Meyering  <jim@meyering.net>
+
+       * tests/chgrp/basic: Add a comment explaining (probably) why this
+       test fails on OpenBSD 3.2 when run in an NFS-mounted directory.
+
+2005-10-17  Jim Meyering  <jim@meyering.net>
+
+       * configure.ac: Use 5.92-cvs as the version string.
+       * NEWS: Adjust accordingly.
+
+       * Makefile.maint (my-distcheck): Depend on
+       $(release_archive_dir)/$(prev-tgz) here, so that if it's missing
+       we fail earlier.
+
+2005-10-16  Jim Meyering  <jim@meyering.net>
+
+       * Version 5.91.
+
+       * Makefile.maint (VERSION_REGEXP): New variable.
+       (news-date-check, changelog-check): Use tighter regular expressions.
+
+       * configure.ac: Remove -cvs suffix from version string.
+       * NEWS: Add today's date.
+
+       * NEWS: Mention the `mkdir -p' bug fix.
+
+2005-10-15  Jim Meyering  <jim@meyering.net>
+
+       * src/who.c (usage): Undocument deprecated --idle (-i) option.
+
+       * src/df.c (main): Warn about the deprecated --kilobytes option.
+       * src/ls.c (decode_switches): Likewise.
+
+       * src/du.c (usage): Document -m, once again.
+       (main): Warn about use of deprecated long options:
+       --kilobytes and --megabytes.
+       * src/tail.c (parse_options): Remove --allow-missing option.
+       You can use --retry instead.
+       * src/stat.c (main): Remove --link -l options.
+       You can use --dereference (-L) instead.
+
+2005-09-30  Eric Blake  <ebb9@byu.net>  (tiny change)
+
+       * man/Makefile.am (.x.1): Remove temp directory first.
+       * NEWS: Document dircolors change of 2005-09-05.
+
+2005-10-07  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/sort.c (sortlines_temp): Redo previous change, since I'm
+       no longer confident that the m4/stdbool.m4 patch suffices.
+
+2005-10-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/sort.c (sortlines_temp): Undo previous change, since
+       today's change to m4/stdbool.m4 should catch it.
+
+2005-10-06  Jim Meyering  <jim@meyering.net>
+
+       * TODO: rm: add support for a -I option, like that from FreeBSD's.
+
+2005-10-05  Jim Meyering  <jim@meyering.net>
+
+       * src/sort.c (sortlines_temp): Declare temporary as `int' rather
+       than `bool' to work around AIX 5.3 compiler bug in 64-bit mode.
+       From James Lemley.
+
+2005-10-03  Jim Meyering  <jim@meyering.net>
+
+       * src/factor.c (MAX_N_FACTORS): Define in terms of sizeof (uintmax_t)
+       rather than hard-coding to 128.  From Thomas M.Ott.
+
+2005-10-02  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (sc_unmarked_diagnostics):
+       Search only cvs-controlled files.
+       * .x-sc_unmarked_diagnostics: New file.
+       * Makefile.am (EXTRA_DIST): Add it.
+
+2005-10-01  Jim Meyering  <jim@meyering.net>
+
+       * src/factor.c (main): Don't stop processing arguments upon
+       the first invalid one.  Suggestion from Eric Blake
+       * tests/factor/basic: Add a test for this.
+
+2005-09-30  Jim Meyering  <jim@meyering.net>
+
+       * configure.ac: Use 5.91-cvs as the version string.
+       * NEWS: Adjust accordingly.
+
+2005-09-29  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/dd.c (main): Don't assume size_t has the same width
+       as unsigned long.  Problem reported by Eric Blake.
+
+       * NEWS: Clarify "tail - f" example.
+
+2005-09-29  Jim Meyering  <jim@meyering.net>
+
+       * Version 5.90.
+
+       * configure.ac: Remove -cvs suffix from version string.
+       * NEWS: Add today's date.
+
+       * NEWS: Mention this bug fix:
+       stat now exits nonzero if a file operand does not exist
+
+2005-09-28  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/system.h (LONGEST_MODIFIER): Use ULONG_MAX_LT_ULLONG_MAX
+       instead of ULLONG_MAX, as the latter doesn't work with GCC 2.7.2.1.
+
+2005-09-28  Jim Meyering  <jim@meyering.net>
+
+       * configure.ac: Use 5.90-cvs as the version string, not 5.3.1-cvs.
+       * NEWS: Adjust accordingly.
+
+       * README: Remove note about FreeBSD make test failure.
+
+2005-09-28  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * tests/install/trap: Work around a bug in FreeBSD 5.0.
+
+2005-09-28  Jim Meyering  <jim@meyering.net>
+
+       * README: Warn about a (now-)known problem on FreeBSD 5.0:
+
+2005-09-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/touch.c (touch): Handle "touch -c - >&-" by checking for EBADF
+       and ENOSYS.
+       Do not pass "-" to futimens; pass NULL instead.
+       If close (STDIN_FILENO) fails, report the error separately instead
+       of letting the 'close' pollute errno.
+       * tests/touch/empty-file: Test "touch -" too.
+       * tests/touch/no-create-missing: Likewise.
+       * tests/touch/read-only: Likewise.
+
+2005-09-26  Jim Meyering  <jim@meyering.net>
+
+       * tests/touch/read-only: New test, for root of chmod/usage failure.
+       * tests/touch/Makefile.am (TESTS): Add read-only.
+
+       Work around the root cause of alpha-linux-1.sf.net test failure.
+       * tests/chmod/usage: Remove *all* files before each inner loop
+       iteration.  Otherwise, with a touch program that fails on unwritable
+       files, (this happens at least on linux-2.2.20) a -w file left behind
+       from a previous iteration could cause a spurious test failure.
+
+2005-09-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * tests/chmod/usage: Undo the s/files/file/ change, but add
+       comments about why the old version was desired.
+
+2005-09-25  Jim Meyering  <jim@meyering.net>
+
+       * tests/ls-2/tests (setuid-etc): Work around output mismatch when
+       a just-created test file cannot be made set-group-ID.
+
+       Avoid test failures on alpha-linux-1.sf.net.
+       * tests/chmod/usage: Use newer trap and tmpdir-creation framework.
+       Fix apparent typos (s/files/file/) in inner loop.
+
+2005-09-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: "touch -" now touches standard output.
+       * src/touch.c (touch): Implement this.
+       (usage): Document this.
+
+       * src/copy.c (HAVE_FCHMOD, HAVE_FCHOWN): Define to 0 if not defined.
+       (copy_reg): New args CHOWN_SUCCEDED and DST_SB.  All callers changed.
+       Add a "goto close_src_and_dst_desc;" that was missing in the
+       previous patch.
+       (copy_reg) [HAVE_FCHOWN]: Prefer fchown to chown.
+       (copy_reg) [HAVE_FCHMOD]: Prefer fchmod to chmod.
+       (copy_internal): Don't invoke chown if fchown worked,
+       and likewise for chmod and fchmod.
+
+2005-09-24  Jim Meyering  <jim@meyering.net>
+
+       * src/shred.c: Use `#ifdef HAVE_CONFIG_H', not `#if HAVE_CONFIG_H',
+       for consistency with gnulib.
+       * src/dircolors.c: Likewise.
+
+       * Makefile.maint (sc_no_if_have_config_h): New rule.
+       (syntax-check-rules): Add it.
+       .x-sc_no_if_have_config_h: New file.
+       * Makefile.am (EXTRA_DIST): Add it.
+
+       * tests/seq/basic (eq-wid-1, eq-wid-2): Disable these tests for now.
+       They fail with non-gcc compilers and some combinations
+       of options and libraries on Solaris systems.
+
+       * tests/misc/date (uninit-64): Restore this test.
+       Add start-up code to detect, and work around, the cases in
+       which the test might fail.
+
+2005-09-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * tests/misc/date (uninit-64): Remove this test.  It wasn't
+       portable in theory (it doesn't work on hosts where 'int' is 64
+       bits, example) or in practice (Solaris 8 localtime returns garbage
+       in tm_year for the specified date, but that's not coreutils's
+       fault).
+
+2005-09-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/copy.c (copy_reg): Preserve time stamps if
+       x->preserve_timestamps is set, using futimens so that
+       we needn't resolve the path again.
+       (copy_internal): Don't preserve time stamps if copy_reg did it
+       already.
+       * src/install.c (change_timestamps): First arg is source
+       struct stat, not file name.  All uses changed.
+       (install_file_in_file): Stat the source file.
+       Don't try to change time stamps if copy_file did it.
+       * src/system.h: Don't include utime.h; not needed.
+       (struct utimbuf) [!defined HAVE_STRUCT_UTIMBUF]: Remove; not needed.
+
+2005-09-23  Jim Meyering  <jim@meyering.net>
+
+       * src/od.c: Use `verify' to ensure that our hard-coded
+       bytes_to_*_digits arrays are long enough.  Of course, 17+-byte
+       integral types aren't on the near horizon, but just in case...
+       (MAX_INTEGRAL_TYPE_SIZE): Move definition to precede new first use.
+       (bytes_to_oct_digits, bytes_to_signed_dec_digits):
+       (bytes_to_unsigned_dec_digits, bytes_to_hex_digits): Change base
+       type from `char' to the clearer `unsigned int'.
+
+2005-09-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/rmdir.c (EEXIST, ENOTEMPTY): Remove unused macros.
+
+       Sync from gnulib.
+
+       * src/dircolors.c: Include strcase.h.
+       * src/pinky.c: Include canon-host.h rather than declaring
+       canon_host ourselves.
+       * src/who.c: Likewise.
+
+       * src/system.h (X2NREALLOC, X2REALLOC): Moved here from
+       ../lib/xalloc.h, with args properly parenthesized, and using
+       verify_expr rather than the old VERIFY_EXPR.
+
+2005-09-21  Jim Meyering  <jim@meyering.net>
+
+       * tests/install/basic-1: Require that this test be run as non-root.
+       Otherwise, it fails due to the fact that the chmod 0 . doesn't
+       affect root.
+
+2005-09-20  Jim Meyering  <jim@meyering.net>
+
+       * src/remove.c (write_protected_non_symlink): Change comment to
+       agree with the code.
+
+2005-09-19  Jim Meyering  <jim@meyering.net>
+
+       * src/remove.c (remove_dir): Return RM_ERROR, not `1',
+       when attempting to remove `/' with --preserve-root.
+
+       * src/remove.c (remove_cwd_entries): Syntactic tweak: move an
+       assignment out of an if-expression.
+
+2005-09-17  Jim Meyering  <jim@meyering.net>
+
+       * src/extract-magic (usage): Request that additions be sent to
+       bug-coreutils@gnu.org, too.
+
+2005-09-16  Jim Meyering  <jim@meyering.net>
+
+       * tests/misc/date (rfc822-1): Compensate for Solaris 5.9's /bin/sh,
+       which emits a diagnostic to stderr when this test's LC_ALL=de_DE
+       setting cannot be honored.
+
+       * tests/misc/date (subfmt-up1): Put quotes around format string
+       to protect `^' from interpretation by some shells.
+       Add a use of OUT_SUBST to compensate for Solaris strftime's slightly
+       different formatting of %c.
+
+       * src/dd.c (main): When failing to truncate, mention both the seek
+       block count and the block size, in case the block size is very large.
+       Now `make distcheck' should pass, once again.
+
+2005-09-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/copy.c: Include stat-time.h.
+       (copy_internal): Use its functions instead of the obsolete
+       TIMESPEC_NS macro.
+       * src/cp.c (re_protect): Likewise.
+       * src/date.c (main): Likewise.
+       * src/du.c (struct duinfo, duinfo_init, duinfo_set, duinfo_add):
+       (show_date, print_size, process_file): Likewise.
+       * src/install.c (change_timestamps): Likewise.
+       * src/ls.c (cmp_ctime, cmp_mtime, cmp_atime, print_long_format):
+       Likewise.
+       * src/pr.c (init_header): Likewise.
+       * src/stat.c (human_time, print_stat): Likewise.
+       * src/tail.c (record_open_fd, tail_forever): Likewise.
+       * src/test.c (get_mtime, binary_operator): Likewise.
+       * src/touch.c (touch, main): Likewise.
+       * src/test.c (get_mtime): Renamed from age_of.  All uses changed.
+
+2005-09-16  Jim Meyering  <jim@meyering.net>
+
+       Date no longer needs to allocate virtual memory to do its job,
+       so it can no longer fail due to an out-of-memory condition.
+
+       * src/date.c: Include fprintftime.h.
+       Don't include strftime.h or xanstrftime.h -- no longer needed.
+       (show_date): Use new fprintftime function rather than xanstrftime.
+       Correct comment: this function no longer handles a NULL format string.
+       * src/du.c: Likewise.
+       * NEWS: Mention this.
+
+       * tests/misc/date (subfmt-up1): Test the combination of the
+       to-upper-case modifier (^) and a conversion specifier that
+       expands to a string containing lower case characters.
+
+2005-09-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: uname -a no longer generates the -p and -i outputs if they
+       are unknown.
+       * src/uname.c (usage): Document this.
+       (main): Implement this.
+
+2005-09-14  Jim Meyering  <jim@meyering.net>
+
+       * tests/misc/date (tz-5w, tz-5wf): Test new %:z format with
+       a field width.
+
+2005-09-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/dd.c: Detect some very unlikely buffer overflows.
+       (INPUT_BLOCK_SLOP, OUTPUT_BLOCK_SLOP): New macros.
+       (MAX_BLOCKSIZE): Now accepts an arg.  All uses changed.
+       (page_size): New var.
+       (scanargs, skip, main): Use more-straightforward way to detect overflow.
+       (dd_copy): Use page_size rather than invoking getpagesize.
+       Use INPUT_BLOCK_SLOP, OUTPUT_BLOCK_SLOP.
+       (main): Set page_size.
+       Avoid a call to stat in the usual case where ftruncate succeeds.
+
+       * src/expr.c (docolon): Add IF_LINT check to avoid GCC warning.
+
+       * configure.ac: Don't invoke AC_CONFIGURE_HOST directly; AB_INIT
+       does it for us, and our invocation evokes a diagnostic from
+       Autoconf 2.59.
+
+       * NEWS: date has a new --rfc-3339 option, and the old --iso-8601
+       option is deprecated.  date, du, ls, and pr also have new time format
+       specifiers %:z, %::z, %:::z.
+       * src/date.c (TIME_SPEC_DATE): No longer needs to be nonzero, so
+       remove the "=1".
+       (TIME_SPEC_HOURS, TIME_SPEC_MINUTES): Must be at end now, so put
+       them there.
+       (time_spec_string, time_spec): Hours and minutes must be at
+       start now, so put them there.
+       (rfc_2822_format): Now a string constant, not a boolean.  All uses
+       changed.
+       (iso_8601_format, rfc_format): Remove.
+       (RFC_3339_OPTION): New constant.
+       (long_options): Add --rfc-3339.
+       (usage): Add --rfc-3339.  Don't mention --iso-8601.
+       Mention %:z, %::z, %:::z.
+       (main): Simplify calculation of 'format'; it was getting too hairy
+       to follow.  Add --rfc-3339.
+       (show_date): Assume format arg is not NULL, which is the case
+       now.  The default code is moved to 'main'.  This simplifies things
+       and allows the default to be calculated just once.
+       * tests/misc/date: Add tests for --rfc-3339, %:z, %::z, %:::z.
+
+2005-09-13  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (GZIP_ENV): Add --rsyncable option.
+       (makefile-check): Escape a `$' in a diagnostic.
+
+       * configure.ac: Use AB_INIT (from autobuild).
+
+2005-09-11  Jim Meyering  <jim@meyering.net>
+
+       * src/factor.c (usage): Remove leading spaces in 2-line
+       description, so that help2man doesn't mangle it.
+       Reported by Justin Pryzby.
+
+2005-09-10  Jim Meyering  <jim@meyering.net>
+
+       csplit could produce corrupt output, given input lines longer than 8KB
+
+       * src/csplit.c (load_buffer): Don't read from free'd memory
+       when handling lines longer than the initial buffer length.
+       (save_to_hold_area): Don't leak the previous hold_area buffer.
+       Reported by Tristan Miller and Luke Kendall.
+       * NEWS: Mention this.
+       * tests/misc/csplit: New test for this.
+
+       * src/csplit.c (load_buffer): Avoid integer overflow in buffer
+       size calculations for very long lines.
+
+2005-09-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Support regular expressions in 64-bit code correctly, by
+       importing the latest gnulib regexp code, and not assuming
+       that sizes fit in 32 bits.
+       * src/csplit.c (process_regexp): Store match length in regoff_t,
+       not int.  Assume that negative return values less than -2
+       represent regoff_t overflow.
+       * src/expr.c (docolon): Likewise.
+       * src/nl.c (proc_text): Likewise.
+       * src/ptx.c (SKIP_SOMETHING, find_occurs_in_text): Likewise.
+       * src/tac.c (tac_seekable): Likewise.
+       * src/expr.c (docolon) Check for size calculation overflow.
+       * src/nl.c (build_type_arg): Likewise.
+       * src/ptx.c (matcher_error): New function.
+       (SKIP_SOMETHING): Use it to report matcher errors.
+       (alloc_and_compile_regex): No longer any need to worry about
+       int versus size_t mismatch.
+
+       * NEWS: Document "niceness" vs "nice value".
+       * configure.ac (utils_cv_func_setpriority): Simplify the tests.
+       Define HAVE_NICE rather than NICE_PRIORITY (since a niceness is
+       not a priority); all uses changed.
+       * src/nice.c (main): Hoist errno=0 outside the ifdef.
+
+2005-09-09  Jim Meyering  <jim@meyering.net>
+
+       * tests/misc/date (neg-secs2, fill-1, fill-2): Add new tests.
+
+2005-09-07  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Use the phrase "niceness" instead of "nice value" to describe
+       the biased nice value that can go negative.  This corrects
+       a discrepancy with POSIX, which states that nice values are
+       nonnegative.
+       * src/nice.c (GET_NICENESS): Renamed from GET_NICE_VALUE.
+       All uses changed.
+       (usage): Say "niceness" rather than "nice value".
+       (main): Say "niceness" rather than "priority" (which is something else
+       entirely nowadays).
+
+2005-09-07  Jim Meyering  <jim@meyering.net>
+
+       * src/du.c (time_args): Use NULL in place of 0.
+
+2005-09-05  Jim Meyering  <jim@meyering.net>
+
+       * src/dcgen: Don't omit comments until there is better documentation.
+
+       Colorize set-user-ID and set-group-ID files and sticky,
+       other-writable, and sticky-and-other-writable directories.
+       * src/dircolors.c (slack_codes): Add new dircolors mode names.
+       (ls_codes): Add corresponding two-letter ls mode strings.
+       * src/ls.c (indicator_no[]): Add new symbols.
+       (indicator_name[]): Add corresponding mode strings.
+       (color_indicator[]): Add an entry for each new mode string.
+       (print_color_indicator): Honor new types.
+       * src/dircolors.hin: Document the default colors for the new strings.
+       From Mike Frysinger, based on a patch from Fedora.
+       * tests/ls-2/tests (setuid-etc): New test, for the above.
+
+2005-08-29  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: "rm -FOO" now suggests "rm ./-FOO" if the file "-FOO"
+       exists and "-FOO" is not a valid option.
+       * src/rm.c: Include lstat.h, quotearg.h.
+       (diagnose_leading_hyphen): New function.
+       (main): Use it.
+
+2005-08-27  Jim Meyering  <jim@meyering.net>
+
+       * src/du.c: Go ahead and leave the patch in (i.e., revert
+       today's change).  It doesn't cause a problem after all, since
+       --exclude-from=- is always handled before --files0-from=F.
+
+       * src/du.c: Revert the du.c part of the change from 2005-07-02:
+       That change (to reopen stdin on F for --files0-from=F) made it so
+       --exclude-from=- and --files0-from=F would not work together.
+
+2005-08-23  Jim Meyering  <jim@meyering.net>
+
+       * configure.ac: Use `5.3.1-cvs' as the version string.
+       * NEWS: Adjust accordingly.
+
+       * Makefile.maint (sc_useless_cpp_parens): New rule.
+       (syntax-check-rules): Add it.
+       * .x-sc_useless_cpp_parens: New file.
+       * Makefile.am (EXTRA_DIST): Add it.
+
+       * src/od.c: Include <float.h> unconditionally.
+       * src/uptime.c (print_uptime): Remove unnecessary parens in
+       `#if defined (SYMBOL)' expressions.
+       * src/system.h: Likewise.
+       * src/hostname.c: Likewise.
+       * src/su.c: Likewise.
+       * src/test.c: Likewise.
+
+2005-08-22  Jim Meyering  <jim@meyering.net>
+
+       * src/tail.c (xwrite_stdout): Rename from xwrite.  Remove always-
+       equal-to-STDOUT_FILENO parameter and associated assertion.
+       Adjust all callers.
+
+2005-08-21  Jim Meyering  <jim@meyering.net>
+
+       * src/ln.c (do_link): If ln is invoked with --interactive (-i),
+       encounters an existing destination file, and gets an affirmative
+       response, then first try to unlink the destination file rather
+       than simply failing.  Suggestion from Karl Berry.
+       FIXME: add test for this
+
+       * src/ln.c (main): Declare `target_directory' with const attribute.
+       * src/du.c (time_style): Add `const' attribute.
+       (tot_dui): Remove unnecessary (and too-short) initializer list.
+
+2005-08-19  Jim Meyering  <jim@meyering.net>
+
+       * src/sort.c (usage) [-b,-t]: Ensure that there are at least two
+       spaces between each option and the corresponding description -- this
+       lets help2man format entries properly.  Reported by Edward Welbourne.
+
+2005-08-17  Jim Meyering  <jim@meyering.net>
+
+       * src/sort.c (usage): Fix typo s/POS 2/POS2/.
+       Reported by Edward Welbourne.
+
+       * tests/misc/date [neg-secs]: New test for today's strftime.c bug fix.
+       * tests/misc/date: Remove terminating "\n"s once again.
+       Automatically add them whenever EXIT != 0.
+
+2005-08-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/df.c (show_dev): New arg STAT_FILE.  All uses changed.
+       This sometimes gives better results on networked file systems
+       that do not respect POSIX semantics.  Problem reported by
+       Bruno Haible.
+
+2005-08-15  Jim Meyering  <jim@meyering.net>
+
+       Don't print uninitialized data (or anything else) to stdout
+       upon localtime failure.
+       * src/date.c (show_date): Remove stray `puts (buf);' (debugging?)
+       from the 2004-02-02 change.
+       * tests/misc/date (uninit-64): New test for the above.
+       Rewrite all other OUT strings to include the terminating "\n".
+
+2005-08-14  Jim Meyering  <jim@meyering.net>
+
+       * src/md5sum.c (usage): Fix typo s/formated/formatted/ reported
+       by Norbert Kiesel.
+
+       Use one fewer file descriptor in a common case.
+       * src/touch.c: Include "fd-reopen.h", rather than "fcntl--.h".
+       Use fd_reopen rather than open.
+
+2005-08-14  James Youngman  <jay@gnu.org>
+
+       * src/test.c (age_of): Return the nanoseconds part of the timestamp,
+       if available.
+       (binary_operator) [-nt, -ot]: Use nanosecond values to break ties.
+
+2005-08-14  Jim Meyering  <jim@meyering.net>
+
+       * src/ls.c (long_time_expected_width): Revert last change, just to
+       be paranoid, and add a comment explaining why.  Paul Eggert mentioned
+       the possibility.
+
+       * src/wc.c: Don't define mbrtowc at all.
+       If mbstate_t is not defined, then AC_TYPE_MBSTATE_T will define
+       it to `int' for us.  Now wc.c really does compile on HP-UX 11.23.
+
+2005-08-13  Jim Meyering  <jim@meyering.net>
+
+       * tests/date: Remove directory
+       * tests/Makefile.am (SUBDIRS): Remove date.
+       * configure.ac (AC_CONFIG_FILES): Remove tests/date/Makefile.
+
+       * tests/Coreutils.pm: New keywords, ENV and ENV_DEL, to support
+       tests/misc/date.
+
+       With todays additions, the generated shell script,
+       tests/date/date-tests had becoming far too large (over 350KB),
+       so use the superior-but-perl-requiring framework instead.
+       * tests/date/Test.pm: Move all tests from here...
+       * tests/misc/date: ...to this new file.
+       * tests/misc/Makefile.am (TESTS): Add date.
+
+       * tests/date/Test.pm (test_vector) [cross-dst]: New test for
+       just-fixed getdate.y bug.
+       * tests/date/Test.pm (test_vector): Add 364 more tests like the above.
+       Remove unused $sunos4 variable.
+
+2005-08-12  Jim Meyering  <jim@meyering.net>
+
+       * src/nohup.c (main): Explain why we reopen stdin for write-only access.
+
+       * src/ls.c (long_time_expected_width): Don't test for failed localtime.
+       That cannot happen when the result date's year is in range.
+       Add an assertion instead.
+
+       * src/ls.c (sort_files): Use cleaner `sizeof *VAR_NAME'
+       rather than `sizeof (TYPE_NAME)'.
+       * src/ptx.c (sort_found_occurs, digest_word_file): Likewise.
+       (alloc_and_compile_regex): Likewise.
+
+       * src/wc.c: Test `!defined HAVE_MBSTATE_T' rather than
+       `defined mbstate_t' to detect missing support for mbstate_t.
+       The latter didn't work for HP-UX 11.23.
+
+       Add bulletproofing in case stdin is closed.
+       * src/dircolors.c (have_read_stdin): Remove global variable.
+       (dc_parse_stream): Always use stdin (freopen, if needed) rather
+       than sometimes using fopen to get a new file descriptor.
+       Call fclose unconditionally.
+       (main): Don't close stdin here.  If needed, now it's already done
+       by dc_parse_stream.
+
+       * src/dircolors.c (dc_parse_file): Remove comment about
+       now-removed OPENOPTS.
+
+       * src/fold.c (fold_file): Cosmetic: use X2REALLOC rather than x2realloc.
+       * src/pr.c (main): Likewise.
+
+       * src/csplit.c (new_control_record): Cosmetic: use X2NREALLOC (only
+       two arguments) rather than x2nrealloc (with three).
+       * src/cut.c (ADD_RANGE_PAIR): Likewise.
+       * src/expand.c (add_tab_stop): Likewise.
+       * src/join.c (extract_field, getseq): Likewise.
+       * src/od.c (decode_format_string): Likewise.
+       * src/sort.c (add_temp_dir): Likewise.
+       * src/unexpand.c (add_tab_stop): Likewise.
+
+       * src/pr.c (main): Cosmetic: use '\0' in place of 0.
+
+2005-08-02  Jim Meyering  <jim@meyering.net>
+
+       * src/date.c: Include "xanstrftime.h".
+       (show_date): Use xanstrftime instead of open-coding it.
+       * src/du.c: Likewise.
+
+2005-07-29  Jim Meyering  <jim@meyering.net>
+
+       * src/date.c (show_date): Remove now-unnecessary code that
+       treated an empty format string as a special case.
+       * tests/date/Test.pm (empty-format): New test, for this case.
+
+2005-07-19  Jim Meyering  <jim@meyering.net>
+
+       * src/md5sum.c (usage): Adjust printf argument list to match
+       new format string.
+
+2005-07-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: md5sum --check now accepts multiple input files, and
+       similarly for sha1sum.  Extension suggested by Chris Girling.
+       * src/md5sum.c (usage, main): Support this new usage.
+
+2005-07-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix a problem noted by James Youngman: VPATH-style builds don't
+       work because of po file problems.
+       * src/Makefile.am (BUILT_SOURCES): Remove false.c.
+       (false.c): Remove; it's now a source file.
+       * src/false.c: New file.
+       * src/true.c (EXIT_STATUS): New macro.
+       (PROGRAM_NAME, usage): Behave like "false" if EXIT_STATUS indicates.
+       (usage): Remove "These option names may not be abbreviated."
+
+2005-07-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/nohup.c (main): Don't worry about POSIXLY_CORRECT.  Today's
+       Austin Group Minutes says that the GNU behavior will be put
+       forward as proposed text for a future revision.
+
+2005-07-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/Makefile.am (nanosec_libs): Remove $(FESETROUND_LIBM); no longer
+       needed.  Problem reported by Jeff Bailey.
+
+2005-07-12  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (copyright-check): Reflect rearrangement in
+       version-etc files.
+
+2005-07-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Binary input and output are now implemented more consistently.
+       These changes affect only platforms like MS-DOS that distinguish
+       between binary and text files.
+       * src/cat.c (usage, main, long_options) [O_BINARY]:
+       Remove support for -B.  Use same rules as other programs to decide
+       whether to use binary I/O, except that the -bensAE options always
+       select text mode.
+       * src/cat.c (main): Avoid setmode; use POSIX-specified routines instead.
+       * src/cksum.c (cksum): Likewise.
+       * src/head.c (head_lines, head_file): Likewise.
+       * src/od.c (open_next_file): Likewise.
+       * src/split.c (main): Likewise.
+       * src/sum.c (bsd_sum_file, sysv_sym_file): Likewise.
+       * src/tac.c (copy_to_temp, tac_file, main): Likewise.
+       * src/tail.c (tail_bytes, tail_lines, tail_file, main): Likewise.
+       * src/tee.c (tee): Likewise.
+       * src/tr.c (main): Likewise.
+       * src/wc.c (wc): Likewise.
+       * src/copy.c (copy_reg): Always copy in binary mode.
+       * src/expand.c (expand): Always copy in text mode.  POSIX says
+       the input and output must be text.
+       * src/unexpand.c (unexpand): Likewise.
+       * src/head.c (elide_tail_bytes_file, elide_tail_lines_file, head_bytes):
+       (head_lines, head_file): Always use binary mode except for std tty.
+       * src/md5sum.c (usage): Clarify whether text or binary is the default.
+       (split_3, main): BINARY is now a 3-way value.  All uses changed.
+       (digest_file): Likewise.  Clear *BINARY if we determine the file
+       to be text.  All uses changed.
+       (main): Don't report a file to be binary if we actually read it
+       as text in MS-DOS, because it was a terminal.
+       * src/shred.c (wipefile): Always use binary mode.  Clearly this
+       never worked right on DOS!
+       * src/system.h (setmode, fileno): Remove; no longer needed, we think.
+       (SET_MODE, SET_BINARY, SET_BINARY2): Remove.
+       [defined __DJGPP__]: Don't include <io.h> or <sys/exceptn.h>.
+       * src/wc.c (wc_file): FILE might be null now.
+       (main): Simplify code a bit, so that fewer places need the
+       setmode fixes.
+
+2005-07-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/comm.c, src/csplit.c, src/dd.c, src/join.c, src/md5sum.c:
+       * src/pr.c, src/sort.c, src/tee.c:
+       Don't include stdio.h; no longer needed.
+
+2005-07-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix porting problems reported by Eric Blake.
+
+       * configure.ac: Remove check for AC_HEADER_TIOCGWINSZ.
+       * src/cat.c, src/ls.c, src/stty.c: Include stropts.h if available,
+       because POSIX says that's where ioctl is declared.
+       * src/cat.c: Use HAVE_SYS_IOCTL_H instead of _POSIX_SOURCE
+       to decide whether to include <sys/ioctl.h>.
+       * src/stty.c: Use only HAVE_SYS_IOCTL_H to decide whether
+       to include <sys/ioctl.h>.
+
+       * src/id.c (print_user): Don't assume uid fits in unsigned int.
+       (print_group): Likewise, for gid.
+
+2005-07-05  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/system.h (DECIMAL_DIGIT_ACCUMULATE): Generate a hard error
+       (not just a warning) if GCC is used and the types don't match.
+
+2005-07-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/system.h (VERIFY_W_TYPEOF): Remove; no longer needed.
+       (DECIMAL_DIGIT_ACCUMULATE): Change last arg from T's maximum value
+       to T itself.  All callers changed.  Check that T is unsigned, and
+       that Accum is of type T.  This fixes a bug in the unlikely case
+       where SIZE_MAX <= INT_MAX, and it no longer requires typeof to do
+       the proper validity checks.
+
+       * src/od.c: Adjust to verify.h change.
+       * src/system.h (VERIFY_W_TYPEOF): Likewise.
+
+2005-07-04  Jim Meyering  <jim@meyering.net>
+
+       * src/system.h: Include "verify.h".
+
+       * src/system.h (verify): Rename from VERIFY_EXPR, to be lower case,
+       like assert.  Use sizeof, rather than equivalent ((...)0), for
+       it's slightly simpler syntax.  Suggestions from Paul Eggert.
+       (verify_decl): Rename from VERIFY.
+       * src/od.c: Reflect name change.
+
+2005-07-03  Jim Meyering  <jim@meyering.net>
+
+       * NEWS: cp and mv: the --reply=X option is deprecated
+       Suggested by Bob Proulx, after numerous user complaints
+       about how --reply=no appeared not to work.
+       * src/mv.c (main): Using --reply now evokes a warning.
+       (usage): Remove description of --reply.
+       * src/cp.c (main): Using --reply now evokes a warning.
+       (usage): Remove description of --reply.
+       * tests/mv/i-link-no: Adjust for new diagnostic.
+       * tests/mv/reply-no: Likewise.
+
+       * src/printf.c (verify_numeric): Rename from verify.
+       Update caller.
+
+2005-07-03  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/copy.h: Include "lstat.h" rather than rolling our own.
+       * src/ls.c: Likewise.
+       * src/remove.c: Likewise.
+
+2005-07-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Cleanup to isolate "safer" functions to a small part of the code.
+       * src/comm.c: Include stdio--.h, not stdio-safer.h.
+       (compare_files): Use fopen, not fopen_safer.
+       * src/copy.c: Include fcntl--.h, not unistd-safer.h.
+       (copy_reg): Don't call fd_safer; no longer needed
+       now that we include fcntl--.h.
+       * src/csplit.c: Include fd-reopen.h.
+       Include stdio--.h, not stdio-safer.h.
+       (input_desc): Remove.  All uses changed to STDIN_FILENO.
+       (set_input_file): Reopen stdin, to simplify code.
+       (create_output_file): Use fopen, not fopen_safer.
+       * src/dd.c: Include fd-reopen.h.
+       (open_fd): Remove.  All callers changed to use fd_reopen instead.
+       * src/join.c: Include stdio--.h, not stdio-safer.h.
+       (main): Use fopen, not fopen_safer.
+       * src/md5sum.c: Include stdio--.h.
+       (digest_check): Don't try to read both checksums and data from stdin.
+       * src/nohup.c: Include fd-reopen.h.
+       Include unistd--.h, not unistd-safer.h.
+       (main): Use fd_reopen to simplify code.  When replacing stdin,
+       use "/dev/null" not "/", as that's less likely to go wrong these days.
+       (main): Use dup, not dup_safer.
+       * src/pr.c: Include stdio--.h, not stdio-safer.h.
+       (open_file): Invoke fopen, not fopen_safer.
+       * src/shred.c: Include fcntl--.h, not unistd-safer.h.
+       (wipename, wipe_file): Don't use fd_safer; no longer needed
+       now that we include fcntl--.h.
+       * src/sort.c: Include stdio--.h rather than stdio-safer.h.
+       Include stdlib--.h.  Do not include unistd-safer.h.
+       (create_temp_file): Don't call fd_safer; no longer needed
+       now that we include *--.h files.
+       (xfopen): Don't call fopen_safer, for similar reasons.
+       * src/split.c: Include fcntl--.h rather than unistd-safer.h.
+       Include fd-reopen.h.
+       (input_desc): Remove.  All uses replaced by STDIN_FILENO.
+       (cwrite): Don't call fd_safer; no longer needed now that
+       we include fcntl--.h.
+       (main): Reuse stdin rather than opening a new one.  This
+       saves a file descriptor.
+       * src/stty.c: Include fd-reopen.h.
+       (display_all, display_settings, display_window_size, set_window_size):
+       Remove fd arg, since we now assume stdin.  All callers changed.
+       (main): Reuse stdin rather than opening a new one.  This
+       saves a file descriptor.
+       * src/tac.c: Include stdlib--.h rather than unistd-safer.h.
+       (copy_to_temp): Don't call fd_safer; no longer needed now
+       that we include stdlib--.h.
+       * src/tail.c: Include fcntl--.h, not unistd-safer.h.
+       (recheck, tail_file): Don't call fd_safer; no longer needed
+       now that we include fcntl--.h.
+       * src/tee.c: Include stdio--.h, not stdio-safer.h.
+       (tee): Don't call fopen_safer; no longer needed now that we
+       include stdio--.h.
+       * src/touch.c: Include fcntl--.h, not unistd-safer.h.
+       (touch): Don't call fd_safer; no longer needed now that
+       we include fcntl--.h.
+
+       * src/du.c (main): Reuse stdin rather than opening a new stream.
+       This saves a file descriptor.
+       * src/uniq.c: Don't include stdio-safer.h; no longer needed.
+       (writeline): Remove stream arg; we now always output to stdout.
+       All callers changed.
+       (check_file): Reuse stdout rather than opening a new stream.
+       This saves a file descriptor.
+
+2005-07-02  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (sc_obsolete_symbols): New rule.
+       (syntax-check-rules): Add it to the list.
+       * Makefile.am (EXTRA_DIST): Add .x-sc_obsolete_symbols.
+       * .x-sc_obsolete_symbols: New file.
+
+2005-07-01  Jim Meyering  <jim@meyering.net>
+
+       * src/system.h: Assume HAVE_FCNTL_H (i.e., include <fcntl.h>
+       unconditionally, and don't include <sys/file.h>).
+       * src/system.h: Likewise for HAVE_UNISTD_H.
+
+2005-06-30  Jim Meyering  <jim@meyering.net>
+
+       * src/cp.c: Add uses of ARGMATCH_VERIFY to ensure that
+       corresponding option string and value arrays are consistent.
+       * src/date.c: Likewise.
+       * src/du.c: Likewise.
+       * src/ls.c: Likewise.
+       cp.c and date.c each had a harmless trailing `, 0' (now-removed)
+       in a value list.
+
+       * src/system.h (VERIFY): Guard definition with #ifndef.
+       (VERIFY_EXPR): Undef before defining.
+
+2005-06-29  Jim Meyering  <jim@meyering.net>
+
+       * src/pr.c (main, store_char): Use X2REALLOC rather than x2realloc.
+       * src/du.c (show_date): Likewise.
+       * src/date.c (show_date): Likewise.
+       * src/od.c (dump_strings): Likewise.
+       * src/sort.c (fillbuf): Likewise.
+       * src/chmod.c (main): Likewise.
+
+       * src/system.h (VERIFY): Rewrite to use string-concatenation
+       and __LINE__ so as not to require a struct name parameter.
+       (GL_CONCAT, GL_CONCAT2): Define helper macros.
+       * src/od.c: Update sole use.
+
+       * src/ls.c (gobble_file): Use stat.st_author, not stat.st_uid
+       when computing the --author column width.  This bug might have
+       resulted in misaligned columns when using the --author option
+       on the Hurd.  Spotted by Arnold Robbins.
+
+2005-06-28  Jim Meyering  <jim@meyering.net>
+
+       * src/pr.c (main, store_char): Use x2realloc on 1-byte base types,
+       not x2nrealloc.  The former is a little more concise and readable.
+       N.B. this sort of transformation is ok only when the base type is
+       unlikely ever to change to a multibyte type.
+       * src/du.c (show_date): Likewise.
+       * src/date.c (show_date): Likewise.
+       * src/od.c (dump_strings): Likewise.
+       * src/sort.c (fillbuf): Likewise.
+
+2005-06-24  Jim Meyering  <jim@meyering.net>
+
+       * src/mv.c (usage): Clarify how --reply=no works.
+
+2005-06-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Address the following "du" issues:
+
+       - The option name "--last-time=TYPE" is different from the ls's option
+         "--time=TYPE" with a similar meaning.  I assume this wasn't intended.
+
+       - --time-style implies --time, but this is not true for "ls".  It's
+         better to be consistent.
+
+       - Since we don't have POSIX compatibility concerns, there's no need
+         for the "posix-" styles, or for support of styles with newlines, or
+         for the "locale" style, except for parsing the TIME_STYLE
+         environment variable.
+
+       - It's cleaner (and these days, no less efficient) to use functions
+         rather than macros when possible.
+
+       - struct duinfo doesn't need a 'valid' flag; you can simply use a time
+         stamp that is less than all valid time stamps.
+
+       - The code needs a bit of reformatting to fit the usual GNU style.
+
+       * NEWS: du's --last-time option is now --time.
+       * doc/coreutils.texi (ls invocation): Fix typo: --time=use is
+       equivalent to --time=atime, not --time=ctime.
+       (ls invocation, du invocation): Fix typo: --time-style=long-iso
+       is equivalent to a time style with a leading "+".
+       (du invocation): --last-time is now --time.
+       --time-style no longer implies --time.
+       The locale and posix- stuff now works only for TIME_STYLE, not
+       for --time-style.  Give equivalent format for --time-style=iso.
+       * src/du.c: Do not include hard-locale.h.
+       (struct duinfo): Remove 'valid' member.  All uses changed to use
+       negative nsec instead.
+       (DUIINFO_INI, DUINFO_SET, DUINFO_ADD): Remove.
+       (duinfo_init, duinfo_set, duinfo_add): New functions, taking the
+       role of the removed macros.
+       (opt_time): Renamed from opt_last_time.  All uses changed.
+       (TIME_OPTION): Renamed from LAST_TIME_OPTION.  All uses changed.
+       (long_options, usage): Rename --last-time to --time.
+       (locale_time_style): Remove.
+       (time_style_args, time_style_types, usage): Remove support for
+       --time-style=locale.
+       (show_date): Now returns void, since nobody looked at the result.
+       Assume FORMAT is not null.  An empty FORMAT now outputs an empty time.
+       Simplify nstrftime invocation.
+       (main): Put in ls compatibility workarounds only for TIME_STYLE,
+       not for --time-style.  Omit unnecessary space in iso time style.
+
+2005-06-23  Jim Meyering  <jim@meyering.net>
+
+       * src/du.c (time_format): Add `const' attribute.
+
+       * src/date.c (show_date): Use puts rather than printf ("%s\n",.
+
+       * src/du.c (show_date): Rename local `time_format' so as not to
+       shadow the file-scoped global by that name.
+       (show_date): Add a FIXME comment.
+
+       * src/du.c: Include hard-locale.h and strftime.h.
+       (DUINFO_INI, DUINFO_SET, DUINFO_ADD):
+       Enclose body in `do {...} while (0)', not just `{...}'.
+       Adjust uses (add semicolons).
+       Adjust formatting, indentation.
+       (usage): Tweak formatting to maintain more or less constant indentation.
+
+2005-06-14  William Brendling  <wbrendling@gmail.com>
+
+       * src/du.c: Add --last-time and --time-style options.
+
+2005-06-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * tests/umask-check: New file.
+       * tests/Makefile.am (EXTRA_DIST): Add umask-check.
+       * tests/mkdir/perm: Use umask-check.
+       * tests/cp/cp-parents: Likewise, instead of using chmod
+       as described below.  Problem reported by Kevin Mudrick.
+
+2005-06-22  Jim Meyering  <jim@meyering.net>
+
+       Make rmdir produce diagnostics like this:
+       rmdir: /tmp: Permission denied
+       not like this:
+       rmdir: `/tmp': Permission denied
+
+       * src/rmdir.c: Include "quotearg.h", not "quote.h".
+       (remove_parents, main): Use quotearg_colon, not quote.
+
+2005-06-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * tests/cp/cp-parents: Use chmod to work around some hosts with
+       ACL problems.  Problem reported by Kevin Mudrick.
+
+2005-06-21  Jim Meyering  <jim@meyering.net>
+
+       * tests/du/deref-args: Use --apparent-size to avoid the vagaries
+       of counting blocks.  Kevin Mudrick reported that this test would
+       fail on an nfs-mounted directory where attribute-caching is
+       turned on.
+
+2005-06-19  Jim Meyering  <jim@meyering.net>
+
+       * src/tac.c (tac_mem, tac_stdin_to_mem): Remove #if-0'd functions.
+
+       * src/shred.c (usage): Use `file system', not `filesystem'.
+
+2005-06-18  Jim Meyering  <jim@meyering.net>
+
+       * src/tr.c (unquote): Remove unnecessary `' quotes from a diagnostic.
+
+2005-06-17  Jim Meyering  <jim@meyering.net>
+
+       * src/shred.c (usage): Clarify that shred works on an ext3 file
+       system as long as it's not in data=journal mode.
+       Tiny change by Mark Melahn.
+
+2005-06-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/hostid.c (main): Don't print fewer than 8 digits, or spurious
+       leading "f"s.  "f" problem reported by Tim Waugh.
+       * NEWS: Document this.
+
+2005-06-16  Jim Meyering  <jim@meyering.net>
+
+       Don't embed `this'-style quotes in format strings.
+       * src/tr.c: Rather than this: error (..., "...`%s'...", arg);
+       do this:                      error (..., "...%s...", quote (arg));
+       * src/od.c, src/tr.c, src/csplit.c, src/date.c, src/hostname.c:
+       * src/join.c, src/ptx.c, src/seq.c, src/sort.c, src/split.c:
+       * src/split.c, src/tail.c: Likewise.
+
+       * src/sleep.c: Include "quote.h".  Remove hard-coded quotes, as above.
+       * src/nice.c, src/printf.c, src/fold.c, src/pr.c: Likewise.
+       * src/factor.c, src/cat.c, src/expr.c, src/stty.c: Likewise.
+
+       * src/mv.c: Finally remove support for --version-control=S (-V).
+       It was deprecated nearly 6 years ago and has been warning
+       users to switch to --backup=S since fileutils-4.0j.
+       * src/cp.c, src/install.c, src/ln.c: Likewise.
+
+2005-06-15  Jim Meyering  <jim@meyering.net>
+
+       * src/install.c (main): Fix my typo: s/argv[optind]/file[i]/.
+       * tests/install/basic-1: Ensure that each `-d'-specified directory
+       is created.  Ensure that rel-named dirs are not created when
+       chdir($PWD) fails.
+
+       * tests/mkdir/p-3: Add a test for just-fixed bug in mkdir-p.c.
+
+2005-06-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Improve diagnostics for restore_cwd failure.
+       * src/install.c (main): Standardize on a diagnostic for
+       restore_cwd failure, and report errno.
+       (install_file_in_file_parents): Fail if restore_cwd fails and
+       one of the files is relative.  This fixes a bug (albeit unlikely).
+       * src/mkdir.c (create_parents): Remove static var (now local to 'main').
+       (main): Standardize on a diagnostic for restore_cwd failure,
+       and report errno.
+       Don't bother to check cwd_errno unless create_parents.
+       Use mkdir rather than make_dir; it's simpler.
+
+       * src/install.c (main): Adjust to new make_dir_parents convention.
+       * src/mkdir.c (main): Likewise.
+
+2005-06-14  Jim Meyering  <jim@meyering.net>
+
+       * tests/mkdir/p-3: Ensure mkdir succeeds if the following argument
+       is an absolute directory name.
+
+       * Makefile.maint (my-distcheck): Add -Wall to the list of options that
+       are used with -Werror.  This target is not intended for general use.
+
+2005-06-13  Jim Meyering  <jim@meyering.net>
+
+       * src/mkdir.c (main): Give a diagnostic for -- and skip -- each
+       relative directory name after make_dir_parents fails to restore
+       the working directory.  Before, `mkdir -p' could create directories
+       in the wrong place in unusual circumstances.
+       * src/install.c (main): Likewise.
+       (install_file_in_file_parents): Update make_dir_parents caller.
+       * tests/mkdir/p-3: New test for today's mkdir.c/mkdir-p.c bug fixes.
+       * tests/mkdir/Makefile.am (TESTS): Add p-3.
+
+2005-06-10  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Act on the Austin Group's response yesterday to XCU ERN 63; see
+       <http://www.opengroup.org/austin/docs/austin_260.txt>.
+       * NEWS: ls no longer outputs an extra space between mode and link count.
+       * doc/coreutils.texi: Remove the extra spaces in "ls -l" output.
+       * src/ls.c (any_has_acl): New var.
+       (clear_files): Clear it.
+       (gobble_file): Set it if a file has an ACL.
+       (print_long_format): Omit needless space unless some file has an ACL.
+
+2005-06-10  Jim Meyering  <jim@meyering.net>
+
+       * src/system.h (VERIFY_W_TYPEOF): Add parentheses.
+
+2005-06-02  Jim Meyering  <jim@meyering.net>
+
+       * src/sort.c (usage): Put `Ordering options:' line where it belongs.
+
+2005-06-01  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Use "file name" when talking about file names, instead of "filename"
+       or "path", as per the GNU coding standards.
+       * src/basename.c: Don't use "path" or "filename".
+       * src/copy.c: Likewise.
+       * src/copy.h: Likewise.
+       * src/cp-hash.c: Likewise.
+       * src/cp.c: Likewise.
+       * src/df.c: Likewise.
+       * src/install.c: Likewise.
+       * src/ls.c: Likewise.
+       * src/pinky.c: Likewise.
+       * src/pr.c: Likewise.
+       * src/pwd.c: Likewise.
+       * src/remove.c: Likewise.
+       * src/rmdir.c: Likewise.
+       * src/sort.c: Likewise.
+       * src/system.h: Likewise.
+       * src/tty.c: Likewise.
+       * src/who.c: Likewise.
+       * src/cp.c (parents_option): Renamed from flag_path.  All uses changed.
+       (make_dir_parents_private): Renamed from make_path_private.
+       All uses changed.
+       * src/cp.c (usage): Don't use "path" to describe a file name.
+       * src/readlink.c (usage): Likewise.
+       * src/rmdir.c (usage): Likewise.
+       * src/df.c: Don't include "path-concat.h"; not needed.
+       * src/install.c (install_file_in_file_parents): Renamed from
+       install_file_to_path.  All uses changed.
+       * src/ln.c (FILE_BASENAME_CONCAT): Renamed from PATH_BASENAME_CONCAT.
+       All uses changed.
+       * src/ls.c (make_link_name): Renamed from make_link_path.
+       All uses changed.
+       * src/pwd.c (struct file_name): Renamed from struct Path.
+       All uses changed.
+       (file_name_free): Renamed from path_free.  All uses changed.
+       (file_name_init): Renamed from path_init.  All uses changed.
+       (file_name_prepend): Renamed from path_prepend.  All uses changed.
+       * src/rmdir.c (remove_empty_parents): Renamed from empty_paths.
+       All uses changed.
+       (longopts): Add comment that --path is deprecated.
+
+2005-05-31  Jim Meyering  <jim@meyering.net>
+
+       * src/copy.c (chown_privileges, chown_failure_ok): Mark as `extern'.
+       This is a crutch so that `make distcheck's sc_tight_scope rule
+       knows that they really are deliberately declared that way.
+
+2005-05-30  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Port to Solaris 10's rules for whether programs can chown files.
+       * src/copy.c [HAVE_PRIV_H]: Include <priv.h>.
+       (DO_CHOWN): Remove.  Replaced by chown_failure_ok.  All callers
+       changed.
+       (copy_internal): If chown failed, don't worry about what happened
+       to the mode bits; they can't have changed.
+       (chown_privileges, chown_failure_ok): New functions.
+       * src/copy.h: Add copyright notice.
+       (struct cp_options): Remove myeuid member.  Add chown_privileges
+       member.
+       (chown_privileges, chown_failure_ok): New function decls.
+       * src/cp.c (re_protect): Remove unnecessary call to geteuid.
+       Use chown_failure_ok rather than our own code.
+       * src/cp.c (cp_options_init): Use chown_privileges rather than geteuid.
+       * src/install.c (cp_option_init): Likewise.
+       * src/mv.c (cp_option_init): Likewise.
+
+2005-05-29  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/chgrp.c (getgrnam) [!defined _POSIX_VERSION]: Remove decl.
+       * src/chown-core.c (getgrnam, getgrgid) [!defined _POSIX_VERSION]:
+       Remove decls.
+       * src/cp.c (geteuid) [!defined _POSIX_VERSION]: Remove decl.
+       * src/id.c (getpwuid, getgrgid, getuid, getgid, geteuid, getegid)
+       [!defined _POSIX_VERSION]: Remove decls.
+       * src/install.c (getpwnam, getgrnam): Remove decl.
+       (getuid, getgid) [!defined _POSIX_VERSION]: Remove decls.
+       * src/md5sum.c (OPENOPTS, TEXT1T01, TEXTCNVT): Remove.
+       (digest_file): Use O_BINARY-using expr instead of OPENOPTS.
+       * src/system.h: Don't bother mentioning _POSIX_VERSION in comment.
+       * src/test.c: Include sys/param.h if it exists, not if _POSIX_VERSION
+       isn't defined.
+       Don't include <sys/file.h>; no longer needed.
+       (getegid, geteuid): Remove no-longer-necessary decls.
+
+       * src/pathchk.c (_POSIX_PATH_MAX) [!defined _POSIX_PATH_MAX]:
+       Define to 256, not 255, as per modern POSIX.
+
+2005-05-27  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: dd seek=N now conforms to POSIX if the output isn't seekable.
+       * src/dd.c (skip): Return the number of records that were not
+       skipped due to encountering EOF.
+       (dd_copy): If the file wasn't seekable and EOF was encountered,
+       write zeros past EOF until the desired offset is reached.
+
+       * NEWS: expr and test now correctly compare integers of unlimited size.
+       (Also, correct a comment that claimed that expr detects integer
+       overflow; it does so only when converting from strings.)
+       * src/expr.c: Include strnumcmp.h, xstrtol.h.
+       (looks_like_integer): New function.
+       (toarith): Use it.  Also, use xstrtoimax rather than rolling our
+       own diagnostics.
+       (eval2): Don't look for trouble if !evaluate; this simplifies things.
+       Compare numbers using string comparison, so that overflow is
+       not possible.
+       * src/sort.c: Refactor so that others can use large-integer
+       comparison functions.
+       Include "strnumcmp.h".
+       (NEGATION_SIGN, NUMERIC_ZERO, fraccompare):
+       Remove; moved to strnumcmp.
+       (decimal_point): Now int, to simplify converison overhead with
+       new API.  All uses changed.
+       (thousands_sep): Now -1 if there isn't one, as per new API.
+       All uses changed.
+       (numcompare): Move contents to strnumcmp module, except for
+       skipping blanks.
+       * src/test.c: Include inttostr.h, strnumcmp.h.
+       (whitespace, digit, digit_value, integer_expected_error): Remove.
+       (is_int): Remove; replaced by...
+       (find_int): New function.
+       (binary_operator): Don't let integers overflow in comparisons;
+       return the correct answer instead.  Simplify the code.
+       (unary_operator): Convert the integer ourself, since find_int
+       no longer does so.
+       * tests/expr/basic (bigcmp): New test.
+       * tests/test/Test.pm (eq-6, gt-5, lt-5): New tests.
+
+2005-05-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: nohup now redirects a tty stdin to an unreadable fd
+       instead of closing it.
+       * doc/coreutils.texi (nohup invocation): Document this.
+       * src/nohup.c (main): Implement this.
+
+2005-05-26  Jim Meyering  <jim@meyering.net>
+
+       * src/expr.c (toarith): Fix a sign error introduced on 2005-01-14.
+       Reported by David Alan Gilbert.
+       * tests/expr/basic: Add tests using arithmetic on negative integers.
+
+2005-05-19  Jim Meyering  <jim@meyering.net>
+
+       * src/remove.c (AD_mark_helper, AD_mark_current_as_unremovable):
+       Remove inaccurate-but-harmless `const' attributes.
+
+       * src/join.c (decode_field_spec): Add an abort after
+       `error (EXIT_FAILURE, ...' to avoid a gcc warning in caller,
+       about variables being used uninitialized.
+
+2005-05-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * configure.ac: Add copyright notice.  gl_LIB_CHECK -> cu_LIB_CHECK.
+       * src/Makefile.am: Add copyright notice.
+       (factor_LDADD): Remove, as factor no longer needs sqrt.
+       * src/hostname.c: Remove test for HAVE_LIMITS_H; we can assume
+       it's always true now.
+
+2005-05-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix Cygwin porting problem reported by Eric Blake.
+       * src/remove.c (DT_IS_DIR): Remove.
+       (DT_IS_KNOWN, DT_MUST_BE): New macros.
+       (remove_entry): Use them.
+
+2005-05-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/remove.c: Include unlinkdir.h.
+       (UNLINK_CAN_UNLINK_DIRS): Remove.
+       (remove_entry): Use cannot_unlink_dirs () rather than
+       UNLINK_CAN_UNLINK_DIRS.
+
+2005-05-14  Jim Meyering  <jim@meyering.net>
+
+       Update FSF postal mail address.
+       * Makefile.maint, Makefile.cfg, gnupload
+       * src/basename.c, src/cat.c, src/checksum.h, src/chgrp.c
+       * src/chmod.c, src/chown-core.c, src/chown-core.h, src/chown.c
+       * src/chroot.c, src/cksum.c, src/comm.c, src/copy.c, src/copy.h
+       * src/cp-hash.c, src/cp-hash.h, src/cp.c, src/csplit.c, src/cut.c
+       * src/date.c, src/dcgen, src/dd.c, src/df.c, src/dircolors.c
+       * src/dirname.c, src/du.c, src/echo.c, src/env.c, src/expand.c
+       * src/expr.c, src/factor.c, src/fmt.c, src/fold.c, src/fs.h
+       * src/groups.sh, src/head.c, src/hostid.c, src/hostname.c, src/id.c
+       * src/install.c, src/join.c, src/kill.c, src/lbracket.c, src/link.c
+       * src/ln.c, src/logname.c, src/ls-dir.c, src/ls-ls.c, src/ls-vdir.c
+       * src/ls.c, src/ls.h, src/md5.c, src/md5sum.c, src/mkdir.c
+       * src/mkfifo.c, src/mknod.c, src/mv.c, src/nice.c, src/nl.c
+       * src/nohup.c, src/od.c, src/paste.c, src/pathchk.c, src/pinky.c
+       * src/pr.c, src/printenv.c, src/printf.c, src/ptx.c, src/pwd.c
+       * src/readlink.c, src/remove.c, src/remove.h, src/rm.c, src/rmdir.c
+       * src/seq.c, src/setuidgid.c, src/sha1sum.c, src/shred.c
+       * src/sleep.c, src/sort.c, src/split.c, src/stat.c, src/stty.c
+       * src/su.c, src/sum.c, src/sync.c, src/system.h, src/tac-pipe.c
+       * src/tac.c, src/tail.c, src/tee.c, src/test.c, src/touch.c
+       * src/tr.c, src/true.c, src/tsort.c, src/tty.c, src/uname.c
+       * src/unexpand.c, src/uniq.c, src/unlink.c, src/uptime.c
+       * src/users.c, src/wc.c, src/who.c, src/whoami.c, src/yes.c
+
+2005-05-13  Jim Meyering  <jim@meyering.net>
+
+       * NEWS: `rm -r' now removes all of the files it should, even on
+       systems with a buggy readdir affecting file systems inaccessible
+       at configure time.
+
+       In some unusual circumstances `rm -r' would fail to remove --
+       or even consider -- all entries in a directory with more than 254
+       (SunOS) or 338 (Darwin) entries.  This could cause trouble even on
+       other types of systems when using an affected file system via e.g.,
+       NFS.  The underlying cause was a bug in readdir on those systems.
+       Coreutils-5.2.1 and earlier used a configure-time test designed
+       to detect precisely those problem systems, but it would detect
+       the problem and enable remove.c's work-around code only when its
+       configure-time test was run on a losing file system.  Obviously,
+       it couldn't detect a problem if the offending file system wasn't
+       tested or even mounted at coreutils configure time.  Now, rm itself
+       performs a minimal-cost run-time test to detect the problem.
+
+       * src/remove.c (CONSECUTIVE_READDIR_UNLINK_THRESHOLD): Define.
+       (remove_cwd_entries):  When readdir returns NULL for a directory from
+       which we've removed more than CONSECUTIVE_READDIR_UNLINK_THRESHOLD
+       entries, call rewinddir and then resume the readdir/unlink loop.
+       (UNLINK_CAN_UNLINK_DIRS): Rename from ROOT_CAN_UNLINK_DIRS.
+
+2005-05-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: nohup now closes stdin if it is a terminal, unless
+       POSIXLY_CORRECT is set.  This fixes a glitch noted by Wayne Pollock in
+       <https://www.opengroup.org/sophocles/show_mail.tpl?
+       source=L&listname=austin-group-l&id=8341>.
+       * doc/coreutils.texi (nohup invocation): Document this.
+       * src/nohup.c (main): Implement this.
+
+2005-05-12  Jim Meyering  <jim@meyering.net>
+
+       * src/date.c: Assume `free (NULL)' works.
+       * src/dd.c: Likewise.
+       * src/df.c:Likewise.
+       * src/dircolors.c:Likewise.
+       * src/head.c: Likewise.
+       * src/ls.c: Likewise.
+       * src/md5sum.c: Likewise.
+       * src/pr.c: Likewise.
+       * src/sort.c: Likewise.
+
+2005-05-10  Jim Meyering  <jim@meyering.net>
+
+       * tests/touch/not-owner: Skip this test if the user running it
+       owns `/' or has write access to it.
+
+       * src/copy.c (abandon_move): Remove erroneous UNWRITABLE check.
+       This makes `mv -i --reply=no f1 f2' work as expected (in not
+       performing the move operation).  But note that specifying `-i'
+       after `--reply=no' does *not* work.
+       Tiny patch from Vlada Macek.
+       Correct a comment.
+       * tests/mv/reply-no: New file.  Test for the above fix.
+       * tests/mv/Makefile.am (TESTS): Add reply-no.
+
+       * tests/ls-2/tests: Don't print PATH to stderr.
+
+2005-05-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: cp, ln, mv, rm no longer discard white space when intepreting
+       responses.
+
+2005-05-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: dd has new iflag= and oflag= flags "binary" and "text".
+       * src/dd.c (flags, usage): Add support for "binary" and "text".
+
+2005-05-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: chmod -w now complains if it differs from chmod a-w.
+       * src/chmod.c: Include quotearg.h.
+       (diagnose_surprises): New var.
+       (process_file): Diagnose surprises.  Simplify the logic a bit,
+       while we're at it.
+       (main): Prepare to diagnose surprises.  Remove useless code for
+       '-' option.
+       * tests/chmod/Makefile.am (TESTS): Add umask-x.
+       * tests/chmod/umask-x: New file.
+
+2005-05-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: ls --indicator-style=directory renamed to ls
+       --indicator-style=slash, to avoid confusion with ls --directory.
+       * src/ls.c (usage): Likewise.
+       (slash): Renamed from directory_only.  All uses changed.
+
+2005-05-01  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: "chmod +1 foo" is now diagnosed.
+
+2005-04-29  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: ls -p now marks only directories.  New option
+       --indicator-style=directory equivalent to -p.
+       * doc/coreutils.texi (ls invocation): Document this.
+       Also, mention ">" is for doors.
+       * src/ls.c (enum indicator_style): New constant directory_only,
+       for -p.
+       (indicator_style_args, indicator_style_types): Set it appropriately.
+       (decode_switches, gobble_file, print_type_indicator):
+       (length_of_file_name_and_frills):
+       Implement the change described in NEWS.
+       (decode_switches): Quote ">", too.
+       (usage): Update to match the new behavior.  Describe ">".
+       * tests/ls/file-type: Test for new behavior.  Omit -1 option.
+       The "ls --color" test wasn't being checked; add a check for
+       "ls --color=auto" instead.
+
+       * tests/head/Test.pm: Don't set _POSIX2_VERSION; no longer needed.
+       * tests/misc/split-fail: Likewise.
+       * tests/pr/Test.pm: Likewise.
+       * tests/sort/Test.pm: Fix comment to match new behavior of "sort".
+       * tests/tail/Test.pm (tv): Rename tests from obs to obs-plus
+       if they use file names starting with +.
+       (test_vector): Don't set _POSIX2_VERSION if obs but not obs-plus.
+       * tests/uniq/Test.pm (tv, test_vector): Likewise.
+
+       The following was partly derived from a tiny change by Eric Blake:
+       * tests/misc/nice: Don't use 'set -'.  It's not portable to strict
+       POSIX 1003.1-2001 hosts.  Also, don't set _POSIX2_VERSION.
+       * tests/mkdir/perm: Don't use 'set -'.  Simplify test construction.
+       Work even if the underyling system attaches ACLs to new dirs.
+       * tests/mv/part-hardlink: Don't use 'set -'.
+       * tests/stty/row-col-1: Don't use 'set -'.
+
+2005-04-28  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Document fixes described below.
+       * src/chmod.c (change, umask_value): New static vars.
+       (reference_file): Move this static var to inside "main".
+       (process_file, process_files): Remove CHANGES arg; now taken from
+       static var.  All uses changed.
+       (usage): Fix incorrect description of MODE operand.
+       (main): For invalid mode usages, output a brief usage message.
+       Adjust to new modechange API.
+       * install.c (main): Adjust to new modechange API.
+       Also, free the mode_change object when done.
+       * mkdir.c (main): Likewise.
+       * mkfifo.c (main): Likewise.
+       * mknod.c (main): Likewise.
+       * tests/chmod/equal-X: Check for =xX bug.
+       * tests/chmod/equals: Check for =u bug.
+       * tests/chmod/usage: Check for u+gr and ug,+x bugs.
+
+2005-04-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Restore support for usages like "head -1" and "tail -1",
+       even when conforming to POSIX 1003.1-2001.
+       Fix bug with "POSIXLY_CORRECT=1 fold file -3".
+       join now supports a NUL field separator, e.g., "join -t '\0'".
+       join now detects and reports incompatible options, e.g.,
+       "join -t x -t y",
+       * NEWS: Document this.
+       * src/date.c: Remove posixver.h and its uses.
+       (COMMON_SHORT_OPTIONS): Remove.
+       (short_options): New constant.
+       (short_options, usage): -I now always takes an optional arg.
+       * src/expand.c: Remove posixver.h and its uses.
+       (shortopts): New constant.  -DIGIT now always takes an optional arg.
+       (main): Revamp parsing of -DIGIT to let parse_tab_stops handle it.
+       Don't complain about -DIGIT.
+       * src/fold.c: Remove posixver.h and its uses.
+       (shortopts): New constant.  -DIGIT now always takes an optional arg.
+       (main): Don't preprocess arg list; that was buggy.  Use method
+       similar to expand.
+       * src/head.c: Remove posixver.h and its uses.
+       (header_mode_option): Remove.
+       (main): Don't complain about obsolete -NUM args.
+       * src/join.c: Remove posixver.h and its uses.
+       (obsolete_usage): Remove.
+       (join_field_1, join_field_2): Initialize to SIZE_MAX to indicate
+       they haven't been set yet.
+       (tab): Now int, not char.  Initialize to -1 to indicate white space
+       separates columns, so that we can use NUL as a separator.
+       All uses changed.
+       (OBSOLETE_LONG_OPTIONS, get_option): Remove.
+       (string_to_join_field): Remove ERR_MSG_FMT arg; a single format
+       suffices.  Use xstrtoul for sizes; it suffices.
+       (decode_field_spec): Report an error and exit on failure.  Return void,
+       not bool.
+       (add_field_list): Likewise.
+       (set_join_field): New function.
+       (enum operand_status): New enum.
+       (add_file_name): New args OPERAND_STATUS, JOPTION_COUNT,
+       PREV_OPTC_STATUS, OPTC_STATUS to handle the bewildering array of
+       possibilities with obsolete option parsing.
+       (main): Use it.  Do not depend on POSIX version.
+       Check for conflicting options.  Parse obsolete options -j1 and -j2
+       so that it is a pure extension to POSIX 1003.1-2001.
+       Allow '-t\0' to specify a NUL tab, stealing the code from 'sort'.
+       * src/nice.c: Remove posixver.h and its uses.
+       (main): Always support -NUM option.
+       * src/od.c: Remove posixver.h and its uses.
+       (short_options): New constant, which always supports -w[num].
+       (COMMON_SHORT_OPTIONS): Remove.
+       * src/pr.c: Remove posixver.h and its uses.
+       (short_options): New constant, which always supports -S[string].
+       (COMMON_SHORT_OPTIONS): Remove.
+       * src/sort.c: Remove posixver.h and its uses.
+       (short_options): New constant, which always supports -y arg.
+       (COMMON_SHORT_OPTIONS): Remove.
+       (main): Redo workaround for Solaris compatibility with -y.
+       This change isn't visible to the user; it just cleans up the
+       code so that we don't need posixver.h.
+       * src/split.c: Remove posixver.h and its uses.
+       (main): Don't complain about -NUM option.
+       * src/tail.c (parse_obsolete_option): Don't complain about -NUM.
+       * src/unexpand.c: Remove posixver.h and its uses.
+       (main): Don't complain about -TAB.
+       * src/uniq.c (main): Don't complain about -NUM.
+
+2005-04-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/nohup.c (main): If getopt fails, exit with status 127,
+       not status 1.  POSIX requires this.
+       * NEWS: Document this.
+
+       * src/nice.c (main): Report proper program name when getopt finds
+       trouble.  Problem reported by Behdad Esfahbod.
+
+       * NEWS: Fix bug with "mkdir -m =+x dir"; the umask was being ignored
+       when the "+x" was being evaluated.
+       * mkdir.c (main): Compile mode with MODE_MASK_ALL and initial umask.
+       * mkfifo.c (main): Likewise.
+       * mknod.c (main): Likewise.
+       * tests/mkdir/perm: Test for the above bug.
+
+2005-04-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Port test cases to Microsoft-Windows-related environments,
+       following suggestions from Eric Blake.
+       * tests/install/Makefile.am (TESTS_ENVIRONMENT): Add EXEEXT.
+       * tests/install/basic-1: Undo previous change.
+       (dd, dd2): New vars, which use $EXEEXT.  All uses of dd and dd2 changed.
+       * tests/install/trap: Undo previous change.
+       (sig): New var.  Use it insted of "trap '' CHLD".
+       Append $EXEEXT to executable name.
+
+       "fetish" -> "coreutils" in more places.
+       * tests/Coreutils.pm: Renamed from tests/Fetish.pm.
+       (package Coreutils): Renamed from package Fetish.  All uses changed.
+       * tests/Makefile.am (EXTRA_DIST): Add Coreutils.pm and
+       remove Fetish.pm.
+
+2005-04-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * tests/mv/setup (dot_mount_point): Use stat -L, in case the
+       directory is actually a symbolic link.  Problem reported by
+       Eric Blake.
+
+       * tests/mv/mv-special-1: Use test -p to test for fifos, rather
+       than the (incorrect) test -f and the (inadequate) ls.  ls is
+       inadequate because on some hosts a buggy mv will create a file of
+       the wrong type (problem reported by Eric Blake).  Skip this test
+       if test -p doesn't work.
+
+       * tests/chmod/setgid: Use numeric group ids, not symbolic group names,
+       since the latter can have shell metacharacters in them (e.g., spaces).
+       This follows up to the 2005-01-17 patch, which missed this occurrence.
+
+2005-04-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       "fetish" -> "coreutils" in several places.
+       * Makefile.cfg (ftp): Remove fetish.sf.net.
+       * Makefile.maint (emit_upload_commands): Likewise.
+       * src/Makefile.am (LDADD, $(PROGRAMS)): fetish -> coreutils.
+       * tests/group-names (COREUTILS_GROUPS): Renamed from FETISH_GROUPS.
+       * tests/chmod/setgid (FETISH_GROUP): Renamed from COREUTILS_GROUP.
+
+       * tests/install/basic-1: Use "cat", not "test", to test for
+       ../../src/dd.  Problem reported by Eric Blake.
+
+2005-04-18  Jim Meyering  <jim@meyering.net>
+
+       * src/dd.c: Don't include stat-macros.h directly.  system.h does that.
+
+2005-04-17  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Work around a couple of "make check" failures reported for Cygwin
+       and ash by Eric Blake.
+       * tests/install/basic-1: Skip this test if ../../src/dd isn't readable.
+       * tests/install/trap: Skip this test if "trap '' CHLD" doesn't work.
+
+2005-04-16  Jim Meyering  <jim@meyering.net>
+
+       * src/dd.c (S_TYPEISSHM): Remove definition.
+       Get the definition by including "stat-macros.h", instead.
+
+2005-04-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix test suite problems reported by Eric Blake on Cygwin.
+       * tests/mv/mv-special-1: Ignore chatter about when files are removed,
+       since POSIX doesn't require rename to fail across file systems.
+       * tests/mv/setup (dot_mount_point): Use stat rather than df, as
+       it's more reliable.
+       (other_partition_tmpdir): Remove df from name as that would be
+       misleading now.
+
+2005-04-14  Jim Meyering  <jim@meyering.net>
+
+       * src/chown-core.c: Correct typo, fchmod -> fchown, in a comment.
+
+2005-04-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/ls.c (usage): "uid" -> "user ID".
+
+2005-04-12  Jim Meyering  <jim@meyering.net>
+
+       * src/tsort.c (tsort): Use "%s" as the format string,
+       rather than a diagnostic or a file name.
+
+       * src/comm.c (compare_files): Remove declaration of unused local.
+
+       * src/chown-core.c (chopt_free): Mark parameter as unused.
+
+2005-04-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * man/chown.x: Reword to match user manual.
+       * man/id.x: Likewise.
+       * src/setuidgid.c (usage): Use "user ID", not "UID", and similarly
+       for "group ID".
+       * src/whoami.c (usage, main): Likewise.
+
+       Add bulletproofing for cases where stdin, stdout, or stderr are closed.
+       * src/comm.c: Include stdio-safer.h.
+       (compare_files): Exit right away on I/O error rather than continuing
+       and producing confusing output and error messages.
+       Return void, not int; all callers changed.
+       Use fopen_safer to avoid confusion with file descriptors.
+       * src/copy.c: Include unistd-safer.h.
+       (copy_reg): Use fd_safer.
+       * src/csplit.c: Include stdio-safer.h.
+       (input_desc): Remove unnecessary static initialization.
+       (set_input_file): Use STDIN_FILENO, not 0.
+       (create_output_file): Use fopen_safer.
+       * src/dircolors.c (dc_parse_file): Don't assume fopen does not
+       return stdin.
+       * src/head.c (head_file): Don't assume open does not return 0.
+       * src/join.c: Include stdio-safer.h.
+       (main): Use fopen_safer.  Simplify the resulting code.
+       * src/md5sum.c (digest_file, digest_check):
+       Don't assume that fopen does not return stdin.
+       * src/nohup.c: Include unistd-safer.h.
+       (main): Don't dup stderr to stdin or stdout by mistake.
+       * src/od.c (check_and_close): Don't assume fopen does not return stdin.
+       * src/paste.c (paste_serial): Likewise.
+       * src/pr.c: Include stdio-safer.h.
+       (open_file): Use fopen_safer.
+       (close_file): Don't assume fopen does not return stdin.
+       * src/ptx.c (main): Don't assume fopen returns stdout after closing
+       stdout.  Use freopen instead.
+       * src/shred.c: Include unistd-safer.h.
+       (wipename): Use fd_safer on directory file descriptor.
+       (wipefile): Remove special case for /dev/fd/* on older hosts.
+       It didn't work in general, and wasn't documented.
+       Use fd_safer.
+       * src/sort.c: Include unistd-safer.h.
+       (create_temp_file): Use fd_safer.
+       (xfclose): Don't assume fileno (stdin) == STDIN_FILENO, etc.
+       * src/split.c: Include unistd-safer.h.
+       (cwrite): Use fd_safer.  Replace mystery constant 0666 with symbolic
+       version, as POSIX requires.
+       * src/sum.c (bsd_sum_file, sysv_sym_file):
+       Use same pattern as elsewhere for checking for stdin.
+       * src/tac.c: Include unistd-safer.h.
+       (copy_to_temp): Use fd_safer.
+       (tac_file): Don't assume fopen cannot return stdin.
+       * src/tail.c: Include unistd-safer.h rather than fcntl-safer.h.
+       (recheck, tail_file): Use fd_safer rather than open_safer.
+       * src/tee.c: Include stdio-safer.h.
+       (tee): Use fopen_safer.
+       * src/touch.c: Include unistd-safer.h.
+       (touch): Use fd_safer.
+       * src/tsort.c (have_read_stdin): Remove; no longer needed.  All uses
+       removed.
+       (tsort): Do not assume fopen can't return stdin.
+       Close stdin before returning.  All uses changed.
+       * src/unexpand.c (next_file): Don't assume fopen cannot return stdin.
+       * src/uniq.c: Include stdio_safer.h.
+       (check_file): Don't assume fopen cannot return stdin or stdout.
+
+2005-04-09  Jim Meyering  <jim@meyering.net>
+
+       * src/dd.c (quit): Define with ATTRIBUTE_NORETURN.
+
+       Now that close_stdout closes standard output unconditionally,
+       these workarounds for dd and cat are no longer necessary.
+       * src/dd.c (close_stdout_wrapper): Remove function.
+       (main): Call atexit with close_stdout, instead.
+       * src/cat.c (close_stdout_wrapper): Likewise.
+       Don't close STDOUT_FILENO explicitly; close_stdout does it.
+
+       * src/system.h (__attribute__): Readability nit:
+       Change this:
+       #  define __attribute__(x)
+       to this:
+       #  define __attribute__(x) /* empty */
+
+2005-04-09  Jim Meyering  <jim@meyering.net>
+
+       * src/rm.c (usage): Mention that --recursive removes listed
+       directories too, not just their contents.
+       Say that by default, rm does not remove directories.
+
+       * src/pr.c: Don't include "timespec.h".  system.h does that.
+       * Makefile.maint (sc_system_h_headers): Propagate exit status
+       through trap.
+
+2005-04-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Document that dd no longer treats QUIT or PIPE specially,
+       and when conforming to POSIX no longer treats USR1 specially.
+       Document that dd no longer dumps core when handling signals.
+       * src/system.h (RETSIGTYPE): Remove; no longer needed.  All uses
+       replaced with void.
+       * src/csplit.c (SA_NOCLDSTOP): Define to 0 if not defined.
+       All uses changed.
+       (siginterrupt) [!HAVE_SIGINTERRUPT]: New macro.
+       (delete_all_files): New arg IN_SIGNAL_HANDLER, to avoid undefined
+       behavior when called from a signal handler.  All uses changed.
+       (main) [!defined SA_NOCLDSTOP]:
+       Use siginterrupt to specify that system calls should be interrupted.
+       * src/dd.c: Do not include safe-read.h or full-write.h; no longer needed.
+       (process_signals): Add forward decl.
+       (SA_NOCLDSTOP, sigprocmask, sigset_t) [!defined SA_NOCLDSTOP]:
+       New macros.
+       (siginterrupt) [! HAVE_SIGINTERRUPT]: New macro.
+       (SA_NODEFER) [!defined SA_NODEFER]: New macro.
+       (SA_RESETHAND) [!defined SA_RESETHAND]: New macro.
+       (caught_signals, interrupt_signal, info_signal_count, catch_siginfo):
+       New vars.
+       (usage): Mention -USR1 versus -INFO.
+       (cleanup): Don't invoke print_stats; the caller must do it now.
+       All callers changed.
+       (quit): Process signals just before exiting.
+       (interrupt_handler): Simply record the signal and return.
+       (siginfo_handler): Simply increment the signal counter and return.
+       (install_handler): Remove, replacing with:
+       (install_signal_handlers, process_signals, iread, iwrite):
+       New functions.  All callers to safe_read and full_write replaced
+       by iread and iwrite.  All callers to install_handler replaced by
+       install_handlers.
+       * src/ls.c (SA_NOCLDSTOP): Define to 0 if not defined.
+       All uses changed.
+       (siginterrupt) [! HAVE_SIGINTERRUPT]: New macro.
+       (main) [! SA_NOCLDSTOP]: Use it.
+       * src/shred.c: Remove all uses of signals; modern hosts have
+       /dev/random and don't need this gorp.
+       Do not include signal.h.
+       (env, sigill_handler, isaac_seed_machdep): Remove.  All uses removed.
+       * src/sort.c (SA_NOCLDSTOP): Define to 0 if not defined.
+       All uses changed.
+       (siginterrupt) [! HAVE_SIGINTERRUPT]: New macro.
+       (main) [! SA_NOCLDSTOP]: Use it.
+
+       * src/dd.c: Do not include inttostr.h, no longer needed.
+       (print_stats, main): Rewrite and simplify formats to use PRIuMAX
+       instead of umaxtostr.
+       (print_stats): Work even in languages that have special
+       forms for two of things, for r_truncate and w_bytes.  We can't
+       fix delta_s in this way, since ngettext doesn't support floating-point.
+       (main): Rewrite to avoid casts.
+
+2005-04-07  Jim Meyering  <jim@meyering.net>
+
+       Placate gcc-4's -Wuninitialized.
+       * src/md5sum.c (digest_check) [lint]: Initialize hex_digest to NULL.
+       * src/test.c (binary_operator) [lint]: Initialize lt and rt to 0.
+
+       * src/test.c (is_int, age_of, binop): Declare `char *' parameters to
+       be `const'.
+       (binop): Move function definition to precede first use so we can...
+       (binop): ...remove prototype.
+
+2005-04-05  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * man/Makefile.am (.x.1): Remove "COMMAND.td/" from examples.
+       * src/basename.c (usage): Add examples.
+       * src/cat.c (usage): Likewise.
+       * src/chgrp.c (usage): Likewise.
+       * src/chown.c (usage): Likewise.
+       * src/dirname.c (usage): Likewise.
+
+2005-04-05  Jim Meyering  <jim@meyering.net>
+
+       * src/nice.c (usage): Mention that some shells provide a
+       built-in function by the same name.
+       * src/nohup.c (usage): Likewise.
+       * src/printenv.c (usage):Likewise.
+
+2005-04-04  Dmitry V. Levin  <ldv@altlinux.org>
+
+       * src/tee.c (tee): When closing files, do not close stdout,
+       leave this job to close_stdout() instead.
+       * configure.ac (AC_CONFIG_FILES): Add tests/tee/Makefile.
+       * tests/Makefile.am (SUBDIRS): Add tee.
+       * tests/tee/Makefile.am: New file.
+       * tests/tee/.cvsignore: Likewise.
+       * tests/tee/{basic,dash}: New tee tests.
+
+2005-04-04  Jim Meyering  <jim@meyering.net>
+
+       * src/echo.c (usage): Mention that some shells provide a
+       built-in function by the same name.
+       * src/kill.c (usage): Likewise
+       * src/printf.c (usage): Likewise.
+       * src/pwd.c (usage): Likewise.
+       * src/stat.c (usage): Likewise.
+       * src/test.c (usage): Likewise.
+       * src/true.c (usage):
+       * src/system.h (USAGE_BUILTIN_WARNING): New macro.
+
+       * man/echo.x: Remove `DESCRIPTION' section, now that --help includes it.
+       * man/printf.x: Likewise.
+       * man/pwd.x: Likewise.
+
+2005-04-03  Jim Meyering  <jim@meyering.net>
+
+       * src/pr.c (main): Fix off-by-one error.
+       pr -$(perl -e 'print "0"x63 . 1') would write one byte beyond the
+       end of a malloc'd buffer.
+
+2005-04-01  Jim Meyering  <jim@meyering.net>
+
+       * src/pr.c (main): Free column_count_string when done with it.
+
+       Don't let pr treat +1:-1 like +1:18446744073709551615.
+       * src/pr.c (strtoumax): Remove declaration.
+       (first_last_page): Use xstrtoumax in place of strtoumax,
+       so we don't interpret a negative page number (e.g., in an option
+       like --pages=1:-1) as valid.
+       * tests/pr/Test.pm (neg-page): Add a test for this.
+
+2005-03-30  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/pinky.c (short_pinky): Adjust to read_utmp signature change.
+       * src/uptime.c (uptime): New arg OPTIONS.  All uses changed.
+       * src/users.c (users): Likewise.
+       * src/who.c (who): Likewise.
+       * src/uptime.c (main): Check PIDs when invoked with zero arguments.
+       * src/users.c (main): Likewise.
+       * src/who.c (main): Likewise.  Also with two arguments.
+       Omit duplicate code in 2-arg case.
+       (UT_PID): Moved to ../lib/readutmp.h.
+
+2005-03-29  Jim Meyering  <jim@meyering.net>
+
+       * src/system.h (ptr_align): Declare `ptr' parameter to be a
+       `const' pointer, since this function never writes through it.
+
+       * src/uname.c: Indent cpp directives to reflect nesting.
+
+2005-03-28  Jim Meyering  <jim@meyering.net>
+
+       * src/seq.c (get_width_format) [HAVE_RINT && HAVE_MODF && HAVE_FLOOR]:
+       Add `void' to make this an ANSI-style function declaration.
+       * src/remove.c (ds_init): Likewise.
+       * src/pr.c (print_sep_string): Likewise.
+
+       * src/stty.c (speeds): Declare this array to be static.
+       * src/Makefile.am (sc_tight_scope): Adjust to catch any
+       new declarations like that of stty.c's `speeds'.
+
+       * src/system.h (GETOPT_HELP_OPTION_DECL): Use NULL, not `0'.
+       (GETOPT_VERSION_OPTION_DECL): Likewise.
+       * src/chown.c (long_options): Likewise.
+       * src/chgrp.c (long_options): Likewise.
+       * src/chmod.c (long_options): Likewise.
+       * src/cp.c (sparse_type_string, reply_args, decode_preserve_arg):
+       Likewise.
+       * src/chown-core.c (chopt_init): Likewise.
+       * src/comm.c (long_options): Likewise.
+       * src/copy.c (copy_reg): Likewise.
+       * src/csplit.c (extract_regexp): Likewise.
+       * src/cut.c (longopts): Likewise.
+       * src/date.c (time_spec_string): Likewise.
+       * src/df.c (find_mount_point, show_point): Likewise.
+       * src/expr.c (docolon): Likewise.
+       * src/fmt.c (long_options): Likewise.
+       * src/ls.c (time_style_args, indicator_style_args, long_options)
+       (format_args, sort_args, time_args, decode_switches)
+       (gobble_file): Likewise.
+       * src/md5sum.c (long_options): Likewise.
+       * src/mv.c (reply_args): Likewise.
+       * src/paste.c (longopts): Likewise.
+       * src/pinky.c (print_entry): Likewise.
+       * src/pr.c (long_options): Likewise.
+       * src/ptx.c (long_options, format_args): Likewise.
+       * src/readlink.c (longopts): Likewise.
+       * src/sort.c (long_options, mergefps): Likewise.
+       * src/stat.c (long_options): Likewise.
+       * src/tac.c (main): Likewise.
+       * src/tail.c (follow_mode_string): Likewise.
+       * src/touch.c (longopts, time_args): Likewise.
+       * src/uniq.c (delimit_method_string): Likewise.
+       * src/uptime.c (print_uptime): Likewise.
+       * src/who.c (print_user): Likewise.
+
+2005-03-27  Jim Meyering  <jim@meyering.net>
+
+       * src/dcgen: Simplify further, clean up.
+       Add a standard-output-closing global destructor.
+       Require perl-5.002.
+       * src/wheel-gen.pl: Use the same global destructor as dcgen.
+
+2005-03-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/dcgen: Squeeze multiple blanks into one.  Output a simple
+       array of adjacent strings rather than a more complicated data
+       structure; this saves space in the dircolors executable.
+       * src/dircolors.c (parse_line): Use char *, not unsigned char *.
+       This avoids casts.
+       (dc_parse_stream, main): Avoid casts.
+       Adjust to simpler data structure generated by new dcgen.
+
+2005-03-25  Eric Blake  <ebb9@byu.net>  (tiny change)
+
+       * src/ls.c (usage): Document usage of LS_COLORS.
+
+2005-03-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/dircolors.hin: Add "TERM cygwin".
+
+2005-03-25  Jim Meyering  <jim@meyering.net>
+
+       * src/system.h (DECIMAL_DIGIT_ACCUMULATE): Reverse the sense of
+       the return value, and update callers:
+       * src/cut.c (set_fields): Update use of DECIMAL_DIGIT_ACCUMULATE.
+       * src/expand.c (parse_tab_stops, main): Likewise.
+       * src/split.c (main): Likewise.
+       * src/unexpand.c (parse_tab_stops, main): Likewise.
+       * src/uniq.c (main): Likewise.
+
+2005-03-22  Jim Meyering  <jim@meyering.net>
+
+       * build-aux: New directory.  Renamed from config.
+       * configure.ac: Reflect renaming: config -> build-aux.
+       * Makefile.am (dist-hook): Likewise.
+       * Makefile.maint: Likewise.
+       * Makefile.cfg (cvs_files): Likewise.
+       * .x-sc_sun_os_names: Likewise.
+       * .x-sc_trailing_blank: Likewise.
+
+       * src/ls.c (get_funky_string): Use '\a', rather than 7, for
+       portability to EBCDIC hosts.
+
+2005-03-20  Jim Meyering  <jim@meyering.net>
+
+       * src/pr.c (init_header): Add missing `%' in new format string.
+       (init_header): Use zero-filled `.%09d' format, not space-filled `.%9d'.
+
+2005-03-19  Jim Meyering  <jim@meyering.net>
+
+       * src/Makefile.am (pr_LDADD): Now that pr uses gettime, add
+       $(LIB_CLOCK_GETTIME) to get the required -lrt on newer Linux systems.
+
+2005-03-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: pr -D "FORMAT" now accepts the same formats that
+       date +"FORMAT" does.
+       * src/pr.c: Include strftime.h, timespec.h.
+       (init_header): Obtain and format nanosecond part of time stamp.
+
+       * NEWS: nohup now ignores the umask when creating nohup.out.
+       nohup now closes stderr if it is a terminal and stdout is closed.
+       * src/nohup.c (main): Likewise.  Be a little more paranoid about
+       return values; e.g., check for any negative return from open.
+       Assume free (NULL) works.
+       Close file descriptor leak when redirecting standard output to a file.
+
+2005-03-17  Jim Meyering  <jim@meyering.net>
+
+       * src/cut.c (set_fields): Use DECIMAL_DIGIT_ACCUMULATE macro,
+       in place of functionally-equivalent code.
+       * src/expand.c (parse_tab_stops, main): Likewise.
+       * src/split.c (main): Likewise.
+       * src/unexpand.c (parse_tab_stops, main): Likewise.
+       * src/uniq.c (main): Likewise.
+       * src/od.c: Use VERIFY macro in place of an equivalent open-coded
+       declaration.
+       * src/system.h (VERIFY, VERIFY_EXPR, DECIMAL_DIGIT_ACCUMULATE):
+       New macros.
+
+       Before, this command would make uniq skip 11 fields and print
+       only the first line:
+       $ _POSIX2_VERSION=1 ./uniq -f1 -1 <(seq --format='1 %g' 2)
+       1 1
+       1 2
+       * src/uniq.c (main): Interpret `uniq -f1 -1' like `uniq -f1',
+       not like `uniq -f11'.
+
+2005-03-15  Jim Meyering  <jim@meyering.net>
+
+       Both `pr -0' and e.g., `pr -03' would evoke `column count too large'.
+       `pr -0' should give a better diagnostic and `pr -03' should be
+       equivalent to `pr -3'.
+       * src/pr.c (parse_column_count): Change return type to void.
+       Call error (EXIT_FAILURE, ... for an invalid string.
+       (main): Allocate space for column_count_string using malloc.
+       Accumulate all old-style column-count digits before converting.
+       When the number of columns is specified via both old-style,
+       (e.g., -3), and a long option (--columns=5), ensure that only
+       the last one specified takes effect.
+       * tests/pr/Test.pm: Add tests for the above.
+
+2005-03-15  Corinna Vinschen  <corinna@vinschen.de>  (tiny change)
+
+       * src/copy.c (copy_reg): Copy regular files in binary mode.
+
+2005-03-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Restate why ls limits time stamp lengths.
+
+2005-03-12  Jim Meyering  <jim@meyering.net>
+
+       Add a little infrastructure to help prevent future bugs like the
+       one fixed below.
+       * src/stat.c (xstrcat): New function.
+       (print_statfs, print_stat): Add buf_len parameter and convert all
+       uses of strcat to xstrcat.  Update callers.
+       (print_it): Call print_func with buf_len parameter.
+
+       Invoking stat -c FMT with a lone format directive of %s, %f, %h, %s,
+       could cause a buffer overrun error.
+       * src/stat.c (print_it): Allocate 2 more bytes, to accommodate our
+       conversion of the stat %s format string to the longer printf %llu one.
+       Patch from Guochun Shi.
+
+2005-03-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/ls.c (TIME_STAMP_LEN_MAXIMUM): New constant.
+       (long_time_expected_width, print_long_format): Use it, to avoid
+       some possible denial-of-service attacks.
+       * NEWS: Document this.
+
+2005-03-11  Jim Meyering  <jim@meyering.net>
+
+       Prompt once again for `mv -i A B' when A and B are hard links
+       to the same file.  This fixes a bug introduced by my 2003-04-04
+       (coreutils-5.0.1) change.  Reported by Thomas Wolff via Eric Blake.
+       * src/copy.c (abandon_move): New function, factored out of
+       copy_internal, now that this code is being used from two places.
+       (copy_internal): Perform the same interactive-related test for
+       whether it's alright to proceed and (usually) overwrite the
+       destination file.
+       * tests/mv/i-4: Add tests for the above.
+
+       Don't segfault for a very long date format string, e.g.,
+       ls -ld --time-style=+%99999999H .
+       * src/ls.c (long_time_expected_width): Use x2nrealloc, not alloca,
+       so format string abuse cannot provoke stack overflow.
+       (print_long_format): Likewise.
+
+       Don't segfault for a long header date string, e.g.,
+       echo a|pr -D +%9999999A
+       * src/pr.c (init_header): Use x2nrealloc, rather than alloca.
+       Don't bother with fixed-sized initial buffer;  always use x*alloc.
+
+       * src/pr.c (init_header): Use slightly clearer INT_BUFSIZE_BOUND
+       in place of equivalent INT_STRLEN_BOUND + 1.
+       * src/expr.c (tostring, printv): Likewise.
+
+2005-03-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/system.h: Include intprops.h.
+       (TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM, INT_STRLEN_BOUND): Remove;
+       they are now defined in intprops.h.
+
+2005-03-09  Jim Meyering  <jim@meyering.net>
+
+       * TODO: Remove entry about named pipes.  It was fixed in 5.3.0.
+
+2005-03-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/date.c (usage): Redo to match recent documentation changes.
+       Don't bother documenting which usages are GNU extensions; the list
+       wasn't correct, and is better left to the printed manual anyway.
+
+2005-03-06  Jim Meyering  <jim@meyering.net>
+
+       Factor out column-count processing.
+       * src/pr.c: Include "inttostr.h".
+       (parse_column_count): New function.
+       (main): Use the new function for both old-style, -9, and long,
+       --columns=-9, options.
+
+       * src/cksum.c: Remove `register' keyword.
+       * src/cut.c: Likewise.
+       * src/dd.c: Likewise.
+       * src/env.c: Likewise.
+       * src/factor.c: Likewise.
+       * src/fmt.c: Likewise.
+       * src/fold.c: Likewise.
+       * src/id.c: Likewise.
+       * src/logname.c: Likewise.
+       * src/ls.c: Likewise.
+       * src/pr.c: Likewise.
+       * src/printf.c: Likewise.
+       * src/shred.c: Likewise.
+       * src/sort.c: Likewise.
+       * src/sum.c: Likewise.
+       * src/test.c: Likewise.
+       * src/tsort.c: Likewise.
+       * src/uniq.c: Likewise.
+       * src/wc.c: Likewise.
+       * src/whoami.c: Likewise.
+
+2005-03-01  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/Makefile.am (nanosec_libs): Remove $(LIB_XANOSLEEP); no
+       longer needed.
+
+2005-03-01  Jim Meyering  <jim@meyering.net>
+
+       * src/copy.c (copy_internal): Change test of source type from
+       !S_ISREG to S_ISLNK.  Reported by Paul Eggert in
+       http://lists.gnu.org/archive/html/bug-coreutils/2004-10/msg00050.html.
+
+2005-02-28  Jim Meyering  <jim@meyering.net>
+
+       * NEWS: Mention that xnanosleep fixes sleep failure on linux-2.6.8.1.
+
+2005-02-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/Makefile.am (dd_LDADD, shred_LDADD): Add $(LIB_GETHRXTIME).
+       (nanosec_libs): Add $(LIB_XNANOSLEEP).  Needed for newer GNU/Linux
+       hosts with clock_gettime.
+
+2005-02-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Describe user-visible change to dd.
+       * src/Makefile.am (dd_LDADD, shred_LDADD, nanosec_libs):
+       Remove $(LIB_CLOCK_GETTIME).  These functions now use
+       gethrxtime instead.
+       * src/dd.c: Include gethrxtime.h, xtime.h.
+       (start_time): Now of type xtime_t, not struct timespec.
+       (print_stats, main): Use gethrxtime rather than gettime.
+       * src/ls.c (time): Remove obsolete decl.
+       (get_current_time): gettimeofday always returns 0, so don't
+       check its result.
+       * src/shred.c: Include gethrxtime.h.
+       (isaac_seed): Use gethrxtime rather than a mishmash.
+       * src/touch.c (time): Remove obsolete decl.
+
+       * tests/misc/split-fail: Don't assume that the current host
+       supports integers wider than 32 bits.  Fix comment typo.
+       * tests/od/x8: Likewise.
+
+       * src/chown-core.c (enum RCH_status): Remove trailing comma,
+       as it's not valid in standard C89.
+
+2005-02-15  Jim Meyering  <jim@meyering.net>
+
+       * src/stat.c (human_fstype): Add case/definition for S_MAGIC_XFS
+       so that file systems of type `xfs' are recognized as such.
+       * src/fs.h: Regenerate.
+       Reported by Bernd Eckenfels.
+       * src/stat.c (human_fstype): Likewise for S_MAGIC_JFS/jfs.
+       * src/fs.h: Regenerate.
+       Reported by Andreas Schwab.
+
+       * src/nice.c (NZERO) [NZERO == 0]: Undefine and define to 20,
+       to work around the invalid definition from Darwin 7.7.0.
+       Test failure reported by Sébastien Maret.
+
+2005-02-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/sort.c (mergefps): Use binary search rather than linear one
+       when comparing new line to lines already in main memory.
+       Idea suggested by James Lemley.
+
+2005-02-09  Jim Meyering  <jim@meyering.net>
+
+       * src/copy.c (valid_options): Add an assertion that
+       not both hard_link and symbolic_link are set.
+
+2005-02-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Document stat -f -c %S, plus changes to default formats.
+       * doc/coreutils.texi (stat invocation): Normalize terminology,
+       capitalization, and sort order to match --help output.  Mention %c
+       for file systems.  Add new -f -c format %S, and document %s versus %S;
+       problem reported by Jeroen van Wolffelaar.
+       * src/stat.c (usage): Likewise.
+       (STATFS_FRSIZE): New macro.
+       (print_statfs): Use it, for stat -f -c %S.
+       (do_statfs): Change default formats to output %S.
+
+2005-02-03  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/system.h: Include "memrchr.h".
+       (memrchr) [!HAVE_DECL_MEMRCHR]: Remove decl.
+
+2005-02-02  Jim Meyering  <jim@meyering.net>
+
+       * tests/du/8gb: Also adjust the test (s/64/128/) to detect
+       systems that don't support sparse files.
+       Check for $2 -ge 128, rather than $2 = 128, in case
+       there is a file system type that doesn't support sparse files,
+       yet for which metadata takes up additional space.
+       Both reported by Andreas Schwab.
+
+2005-02-01  Eric Blake  <ebb9@byu.net>  (tiny change)
+
+       * tests/du/8gb: Create a larger test file, so we properly
+       detect that sparse files can be created on NTFS under cygwin.
+
+2005-01-30  Jim Meyering  <jim@meyering.net>
+
+       * src/head.c (elide_tail_bytes_pipe): Correct wording in diagnostic.
+
+       * src/stty.c: Remove unnecessary parentheses in all #if directives.
+
+2005-01-29  Eric Blake  <ebb9@byu.net>  (tiny change)
+
+       * .cvsignore: Ignore config.cache and config.status.lineno.
+       * src/stty.c [VSWTCH]: Some systems, like Cygwin, use VSWTC
+       instead of VSWTCH, for use with CSWTCH.
+
+2005-01-29  Eric Blake  <ebb9@byu.net>  (tiny change)
+
+       * tests/Makefile.am (.PHONY): Add check-root and root-hint.
+       * tests/rwx-to-mode: Ignore ACL designation.
+       * tests/setgid-check: Likewise.
+       * tests/chown/separator: Quote user and group names.
+
+2005-01-24  Jim Meyering  <jim@meyering.net>
+
+       * src/cp.c (usage): Merge the descriptions of --no-dereference and -P.
+       Suggestion from Johan Boule.
+
+2005-01-17  Eric Blake  <ebb9@byu.net>  (tiny change)
+
+       * src/Makefile.am (all_programs.list): Strip $(EXEEXT) and remove
+       duplicates.
+       * man/Makefile.am (all_programs): Revert previous patch; updated
+       all_programs.list fixes this.
+       (.x.1): No need to add $(EXEEXT).
+
+2005-01-03  Corinna Vinschen  <corinna@vinschen.de>  (tiny change)
+
+       * src/system.h: Use S_BLKSIZE value for ST_NBLOCKSIZE where
+       available.
+
+2005-01-22  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (v_etc_file): The version string has moved to
+       version-etc-fsf.c, search that new file, not version-etc.c.
+
+2005-01-17  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * tests/group-names: Use numeric group ids, not symbolic group names,
+       since the latter can have shell metacharacters in them (e.g., spaces).
+       Problem reported by Eric Blake.
+       * tests/chgrp/basic: Assume groups are numeric, not symbolic.
+       * tests/chgrp/deref: Likewise.
+       * tests/chgrp/posix-H: Likewise.
+       * tests/chgrp/recurse: Likewise.
+
+2005-01-15  Jim Meyering  <jim@meyering.net>
+
+       * src/shred.c (isaac_seed) [HAVE_GETHRTIME]: #if-0 this block,
+       because just calling gethrtime evokes an `illegal instruction'
+       failure when compiled with Sun's c89 on Solaris 8 and 9.
+       Reported by Nelson Beebe.
+
+       * src/shred.c (isaac_seed) [HAVE_GETHRTIME]: Don't call ISAAC_SEED
+       twice with the same value of `t'.
+       Replace nested #if-#else blocks with #if-#elif-#elif chain.
+
+2005-01-14  Jim Meyering  <jim@meyering.net>
+
+       The test, tests/tail/f-1, failed on powerpc-apple-darwin7.7.0.
+       * src/tail.c (IS_TAILABLE_FILE_TYPE): Adjust definition also to include
+       sockets, since that's what you get when reading from a command-line-
+       supplied pipe on Darwin 7.7.
+       (IS_PIPE_LIKE_FILE_TYPE): Define.
+       (main): Use new IS_PIPE_LIKE_FILE_TYPE rather than simply S_ISFIFO.
+       Reported by Nelson Beebe.
+       This same change is also required on NetBSD/sparc-1.5.
+       Reported by Adrian Bunk.
+
+       * src/expr.c (toarith): Rewrite to detect/diagnose integer overflow,
+       rather than suffering silently.
+       Before, expr would silently overflow and wrap around:
+         $ expr 9223372036854775808 = 0   # $(echo 2^63|bc)
+         1
+       Now it detects the problem and exits nonzero:
+         $ ./expr $(echo 2^63|bc) = 0
+         ./expr: 9223372036854775808: integer is too large
+
+       * tests/chown/separator (id_gn): Exit 77, not 1, for a test-framework
+       failure, so that doesn't cause `make check' to stop.  Nelson Beebe
+       reported that this test would fail with the diagnostic,
+       `cannot find name for group ID 10', on one of his systems.
+
+2005-01-13  Jim Meyering  <jim@meyering.net>
+
+       * src/test.c (is_int): Don't overflow when evaluating integer
+       constants.  Before, ./test $(echo 2^64|bc) -eq 0 && echo FAIL
+       would print `FAIL'.
+
+       * tests/Fetish.pm (run_tests): Add code (if-0'd out) to detect
+       names of temporary files that would clash on 8.3 file systems.
+       * tests/mk-script (validate): Likewise.
+
+2005-01-12  Jim Meyering  <jim@meyering.net>
+
+       * tests/dd/skip-seek: Shorten test names to accommodate 8.3 systems.
+
+       * tests/tr/Test.pm (repeat-xC): Change test name from
+       `repeat-Compl', to avoid 8.3 conflict with `repeat-compl'.
+       Reported by Eric Blake.
+       (repeat-000): Rename to `repeat-zeros' for the same reason.
+
+2005-01-11  Jim Meyering  <jim@meyering.net>
+
+       * configure.ac: Update version to 5.3.1.
+
+2005-01-11  Eric Blake  <ebb9@byu.net>
+
+       * src/Makefile.am (check-README, check-AUTHORS): Account for $(EXEEXT).
+       * man/Makefile.am (all_programs): Account for $(EXEEXT).
+
+2005-01-11  Jim Meyering  <jim@meyering.net>
+
+       * src/unexpand.c (add_tab_stop): Properly diagnose a tabstop list
+       with decreasing values.
+
+       * src/expand.c (main): Likewise.
+       * src/unexpand.c (main): Check for overflow in tabstop values
+       specified via the obsolete form.  E.g., now this command fails:
+       _POSIX2_VERSION=1 ./unexpand -$(echo '2^64+1'|bc)
+       Before it would act like `_POSIX2_VERSION=1 ./unexpand -1'.
+       * tests/unexpand/basic-1 (obs-ovflo): New test for this.
+
+2005-01-10  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Respond to POSIX interpretations about pathchk -p dated 2005-01-06.
+       * NEWS: Document the changes.
+       * doc/coreutils.texi (pathchk invocation): Likewise.
+       * src/pathchk.c (PORTABILITY_OPTION): New constant.
+       (longopts, usage, main, validate_file_name):
+       Add support for new -P option.
+       Reject empty file names (unless -p is not specified and the
+       current system allows empty file names).
+       Change --portability so that is now equivalent to -p -P.
+       Don't test whether file name is too long, if it is known to exist.
+       (no_leading_hyphen): New function.
+       * tests/misc/pathchk1: Add tests for empty file names and
+       pathchk -P.
+
+2005-01-08  Jim Meyering  <jim@meyering.net>
+
+       * Version 5.3.0.
+
+       `pr --columns=N' was not equivalent to `pr -N' when also using
+       either -s or -w.
+
+       * src/pr.c (main): Set `explicit_columns' for --columns=N,
+       not just for -N.  This bug has existed since the introduction
+       of the --columns=N option on 1998-08-15.
+       * NEWS: Document this.
+       * tests/pr/Test.pm (test_vector): For each -N test, automatically
+       create a new test vector using --columns=N.
+
+2005-01-07  Paul Eggert  <eggert@twinsun.com>
+
+       * src/pr.c (main): Check for column count overflow with
+       usages like "pr -2147483648".
+
+2005-01-07  Jim Meyering  <jim@meyering.net>
+
+       * src/pr.c (init_fps): Use xnmalloc, rather than xmalloc.
+
+2005-01-06  Jim Meyering  <jim@meyering.net>
+
+       * README: List the precise HP-UX version numbers that are affected.
+       Suggestion from Bob Proulx.
+
+       * Makefile.maint (sc_changelog): Specify find's `-maxdepth 2'
+       predicate before `-name ChangeLog' to avoid a harmless warning
+       from find-4.2.10.
+
+2005-01-05  Jim Meyering  <jim@meyering.net>
+
+       * tests/help-version: Punt on the uptime test, since it fails when
+       it can't get boot time, and I don't want that to stop `make check'.
+
+       * src/du.c (process_file): Evaluate exclusion rules against
+       the entire file name, not just the last component.
+       Reported by Robert Lindgren.
+       * tests/du/exclude: Test for this.
+       * NEWS: Document this.
+
+       Ensure that tests/Makefile.am's check-root actions stay up to date.
+       * Makefile.maint (sc_root_tests): New rule.
+       (syntax-check-rules): Add it to the list.
+
+2005-01-04  Jim Meyering  <jim@meyering.net>
+
+       * man/shred.x: Change one-line summary to reflect that shred does
+       not remove files by default.  Suggestion from Helen Faulkner in
+       http://bugs.debian.org/288552
+
+       * README: Request VERBOSE=yes output when reporting test failures.
+       Other minor changes.
+
+       * tests/Makefile.am (check-root): Update.
+
+2005-01-03  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/system.h: Undo previous change; we now use Autoconf.
+
+2005-01-03  Jim Meyering  <jim@meyering.net>
+
+       * tests/stty/row-col-1: Don't set rows or columns to zero, to avoid
+       a bug in the TIOCGWINSZ ioctl on at least Solaris5.9 systems.  Setting
+       either (or both) to zero would succeed, but subsequent `stty size'
+       would say `no size information for this device' due to the ioctl
+       failing with EINVAL.
+
+       * src/system.h: If PRIdMAX, PRIoMAX, PRIuMAX, and PRIxMAX are
+       not all defined and either ULONG_MAX or ULLONG_MAX is not defined,
+       then fail at compile-time rather than let tools like od produce
+       invalid results at run time.
+
+2004-12-21  Jim Meyering  <jim@meyering.net>
+
+       * src/csplit.c (usage): Say the default names are `xx00, xx01, ...',
+       not `xx01, xx02, ...'.
+       Reported by Matt Kraai in http://bugs.debian.org/286605
+
+       * tests/misc/split-fail: Avoid spurious failure on x86 Solaris5.9
+       when using c89.
+
+2004-12-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/split.c (usage): Mention default size.  Suggested by Dan Jacobson.
+
+2004-12-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Mention that one should eval "`dircolors`" rather than
+       `dircolors`.
+
+2004-12-17  Jim Meyering  <jim@meyering.net>
+
+       * tests/mv/hard-link-1: Rearrange to use newer trap-handling code,
+       so temporary directories aren't left behind upon e.g., interrupt.
+
+2004-12-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/ls.c (print_dir): Use "%s: not listing already-listed
+       directory", not "not listing already-listed directory: %s", to
+       format already-listed directories, to be consistent with other
+       diagnostics involving file names and colons.
+
+2004-12-15  Jim Meyering  <jim@meyering.net>
+
+       * src/Makefile.am (__LDADD): Define, so that building `[' on
+       Solaris still uses the -lgen library that it requires in order
+       to get a definition of eaccess.
+
+2004-12-14  Jim Meyering  <jim@meyering.net>
+
+       tac would exit immediately upon I/O or temp-file creation failure.
+       Now it continues on, processing any remaining command line arguments.
+
+       * src/tac.c: Include quotearg.h.
+       Use quotearg_colon in most diagnostics.
+       (copy_to_temp): Rewrite not to exit upon I/O or temp-file-creation
+       failure.  Before, this command (with /full/tmp being a full partition)
+         TMPDIR=/full/tmp ./tac /proc/modules tac.c
+       would exit immediately upon the write error while trying to copy
+       non-seekable /proc/modules to the full partition.  Now it still
+       reports the failure but continues on with the remaining file.
+       (tac_nonseekable): Return false also if copy_to_temp fails.
+       [DONT_UNLINK_WHILE_OPEN]: Add a FIXME comment explaining that
+       using atexit like this is wrong.
+       * NEWS: Document this.
+       * tests/misc/tac-continue: New test for this.
+       * tests/misc/Makefile.am (TESTS): Add tac-continue.
+
+       * tests/chown/basic: Add a few more tests.
+
+2004-12-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/ls.c (gobble_file): Change arg name to be command_line_arg
+       rather than explicit_arg, for consistency with copy.c.
+       (extract_dirs_from_files): Remove ignore_dot_and_dot_dot arg, since
+       it is deducible from dirname arg.  All callers changed.
+       (extract_dirs_from_files, print_dir, queue_directory):
+       Add command_line_arg arg.  All callers changed.
+       (struct pending): Add command_line_arg member.
+       (main): Use NULL rather than 0 when appropriate.
+       (set_exit_status, file_failure): New functions.
+       (queue_directory): Store command_line_arg into new structure.
+       (print_dir, gobble_file, get_link_name):
+       Use file_failure to report problems in accessing files,
+       so that the exit status is set consistently.
+       (print_dir): Simplify readdir failure code yet again.
+       If closedir fails, report "closing directory" rather than "reading
+       directory" failure.
+       (xstrcoll): Use set_exit_status to set status on failure.
+       * tests/ls-2/tests (no-a-isdir-b): This now exits with status 2,
+       not status 1.
+
+2004-12-11  Jim Meyering  <jim@meyering.net>
+
+       Avoid a race condition vulnerability in chown, when used with
+       --from=O:G and without the (-h) --no-dereference option.
+       * src/chown-core.c (restricted_chown): New function.
+       (change_file_owner): Call it.
+       Reported by Ulrich Drepper.
+       * NEWS: Mention this.
+
+2004-12-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * ls now exits with status 1 on minor problems, 2 if serious trouble.
+       * NEWS: Document this.
+       * src/ls.c (LS_MINOR_PROBLEM, LS_FAILURE): New constants.
+       All uses of EXIT_FAILURE replaced with LS_FAILURE, unless
+       specified below.
+       (main): Initialize exit failure to LS_FAILURE.
+       (print_dir, gobble_file, get_link_name, xstrcoll):
+       Set exit status to LS_MINOR_PROBLEM if the failure is minor.
+       (print_dir): Do not give up on entire directory merely because readdir
+       returns EOVERFLOW.
+       (usage): Explain exit status.
+       * tests/help-version: ls and variants now exit with status 2
+       on serious trouble.
+
+2004-12-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Document new UTC+HH:MM date syntax, and put date changes
+       together.
+
+2004-12-07  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/factor.c (factor): Don't list 1 as a factor of 1.
+       Problem reported by Thomas Folz-Donahue.
+
+2004-12-06  Jim Meyering  <jim@meyering.net>
+
+       * tests/du/files0-from: Sanitize environment.
+       Otherwise, e.g., BLOCKSIZE=k would cause a failure, and that
+       setting is the default (exported from /etc/profile) on at least one
+       NetBSD 1.6 system.
+       * tests/du/no-deref: Likewise.
+       * tests/cp/symlink-slash: Likewise.
+       * tests/ls/symlink-slash: Likewise
+
+2004-12-05  Jim Meyering  <jim@meyering.net>
+
+       * tests/tail/Test.pm (err-6) ["tail -c"]: Avoid test failure when
+       _POSIX2_VERSION=199209 is in the environment, or when building on
+       e.g., OpenBSD 3.2.
+
+2004-12-04  Jim Meyering  <jim@meyering.net>
+
+       * NEWS: Mention cut's new --complement option.
+
+2004-10-01  Paolo Bonzini  <bonzini@gnu.org>
+
+       * cut.c (complement, COMPLEMENT_OPTION): New.
+       (longopts): Add --complement.
+       (usage): Say not that -b, -c, and -f `print' fields,
+       but rather that they `select' fields for printing.
+       Describe the new --complement option.
+       (mark_range_start): Extracted from set_fields.
+       (print_kth): Support --complement.
+       (compare_ranges): New function.
+       (set_fields): Rewrite the part that populates range_start_ht,
+       merging it with the part that populates printable_field.
+       (main): Handle --complement.
+
+2004-12-03  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/tail.c (tail_file): Set errnum to -1 if the initial "tail"
+       failed.  This works around an assertion failure reported by
+       Roberto Nibali in:
+       http://lists.gnu.org/archive/html/bug-coreutils/2004-12/msg00012.html
+
+2004-12-02  Jim Meyering  <jim@meyering.net>
+
+       With using --color and with LS_COLORS saying not to color
+       executables, don't stat every file.
+       * src/ls.c (is_colored): New function.
+       (gobble_file): Use it.
+       (main): Use it here, in place of too-strict tests against NULL:
+       if either ORPHAN or MISSING was set to 0 from LS_COLORS, the
+       old test would fail.
+
+2004-12-01  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/comm.c (compare_files): Assume setlocale exists.
+       * src/join.c (keycmp): Likewise.
+       * src/seq.c (decimal_point): Treat like sort.  Now char.
+       All uses changed.
+       (main): Assume localeconv exists.  Use same code as sort.
+       * src/sort.c (C_DECIMAL_POINT): Remove.  Use changed to '.'.
+       Assume setlocale exists.
+       (thousands_sep): Renamed from th_sep.
+       (IS_THOUSANDS_SEP): Remove.  All uses replaced by comparisons.
+       (NONZERO): Parenthesize use of arg.
+       (numcompare): Avoid duplicate loads.  Use ISDIGIT as boolean, for
+       consistency.  Avoid unnecessary negation by reversing
+       fraccompare args.
+       (main): Rewrite localeconv call to match seq.c.
+       * src/system.h: Assume locale.h exists.
+       (HAVE_SETLOCALE): Remove.
+       * src/uniq.c (different): Assume setlocale exists.
+
+       * src/ls.c (sort_files): Minor cleanup.  Remove an unnecessary
+       'volatile' on a local variable.  Rewrite to avoid unnecessary
+       double-assignment to 'func' in the usual case where strcoll does
+       not fail.
+
+2004-11-30  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/pinky.c (gethostname): Remove decl.
+       (scan_entries): Use IS_USER_PROCESS instead of by-hand code.
+       * src/uptime.c (print_uptime): Use IS_USER_PROCESS and
+       UT_TYPE_BOOT_TIME instead of by-hand code.
+       * src/users.c (list_entries_users): Use IS_USER_PROCESS
+       instead of by-hand code.
+       * src/who.c (USER_PROCESS, RUN_LVL, INIT_PROCESS, LOGIN_PROCESS,
+       DEAD_PROCESS, BOOT_TIME, NEW_TIME, UT_TYPE_UNDEF, UT_TYPE): Remove.
+       (IS_USER_PROCESS): Move to ../lib/readutmp.h.
+       (UT_TYPE_RUN_LVL, UT_TYPE_INIT_PROCESS, UT_TYPE_LOGIN_PROCESS,
+       UT_TYPE_DEAD_PROCESS, UT_TYPE_NEW_TIME): New macros.
+       (gethostname): Remove decl.
+       (list_entries_who, scan_entries): Use the new macros defined above,
+       for consistency with pinky, uptime, and users.
+
+2004-11-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix problem reported by Scott S. Tinsley for HP-UX 11.11 using
+       HP's ANSI C compiler.  Declaring int functions causes warnings on
+       some modern systems and shouldn't be needed to compile on ancient
+       ones.
+       * src/copy.h (stat, lstat, rename): Remove decls.
+       * src/install.c (stat): Remove decl.
+       * src/ln.c (link, symlink): Remove decls.
+
+2004-11-25  Jim Meyering  <jim@meyering.net>
+
+       * man/help2man: Import help2man-1.35.1.
+       * man/Makefile.am (.x.1): Remove now-unnecessary use of
+       locally-added --program-name=NAME option.  Now, help2man gets
+       the name from the [NAME] section (i.e. from our .x file).
+       * man/install.x: Use `install', not `ginstall' in the one-line
+       description.  Reported by Brendan O'Dea.
+       * man/sha1sum.x: Use `sha1sum', not `shasum'.
+
+2004-11-24  Jim Meyering  <jim@meyering.net>
+
+       Since the changes of 2004-05-22, the u.saved_cwd member at
+       the bottom of the active-directory stack was no longer
+       strictly necessary.  This change removes that member and uses
+       the newer cwd_state parameter for the final restore_cwd.
+
+       * src/remove.c (struct AD_ent) [u]: Remove now-unnecessary union.
+       [dev_ino]: Rename from `a'.
+       (AD_pop_and_chdir): Add a parameter to play the role of just-removed
+       bottom-of-stack cwd-state member.
+       (AD_pop_and_chdir): No longer return boolean.  Adjust caller.
+       (AD_push_initial): Remove CWD parameter.  Adjust caller.
+
+2004-11-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Minor performance improvements and cleanups for "touch".
+       * src/touch.c (posix_date): Remove; not needed as a static var.
+       All uses rewritten.
+       (touch): Use new futimens function to operate more efficiently
+       in some cases.  Don't stat/fstat existing file when
+       (!amtime_now && change_times == (CH_ATIME | CH_MTIME)); the
+       old time stamps aren't needed in that case.
+       (main): change_times is int, not bool.  Simplify test for
+       change_times.
+
+2004-11-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/install.c (usage): Avoid usage that runs afoul of Docbook
+       translation.  Problem reported by Eric S. Raymond.
+
+       Restore dd's noctty flag, reverting the change of 2004-04-08.
+       POSIX does not allow "dd" to use O_NOCTTY by default.
+       * NEWS: Add noctty flag to dd.
+       * doc/coreutils.texi (dd invocation): Likewise.
+       * src/dd.c (flags, usage, main): Likewise.
+
+2004-11-19  Alfred M. Szmidt  <ams@gnu.org>
+
+       * src/ls.c (usage): Clarified description of --no-group (-G),
+       --human-readable (-h), --inode (-i), --size (-s), --time,
+       and --time-style.
+
+2004-11-19  Jim Meyering  <jim@meyering.net>
+
+       * src/ls.c (usage): Clarify description of --author.
+       Tweak indentation so that help2man creates better nroff.
+       Reported by Dan Jacobson.
+
+       * src/uniq.c (check_file): Don't check stdout for errors here.
+
+       * src/pwd.c (find_dir_entry): Update comment to match reality.
+
+2004-11-18  Jim Meyering  <jim@meyering.net>
+
+       * src/pwd.c (robust_getcwd): Correct the comment: this function
+       constructs the directory name.  The caller prints it.
+
+2004-11-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/stat.c (STATFS): New macro, for portability to Solaris 9.
+       (do_statfs): Use it.
+
+       * src/basename.c, src/chroot.c, src/cksum.c, src/dd.c, src/dirname.c,
+       src/factor.c, src/hostid.c, src/hostname.c, src/link.c, src/logname.c,
+       src/nohup.c, src/printenv.c, src/pwd.c, src/setuidgid.c, src/sleep.c,
+       src/sync.c, src/tsort.c, src/unlink.c, src/uptime.c, src/users.c,
+       src/whoami.c, src/yes.c (main): Use getopt_long rather than getopt.
+       * src/readlink.c (main): argv is not const.
+
+       * src/cut.c (usage): Improve documentation along the lines suggested
+       by Debian 5.2.1-2.
+       * src/echo.c (usage): Likewise.
+       * src/expr.c (usage): Likewise.
+
+       * src/dircolors.hin: Add putty, screen-bce.
+
+       * src/pinky.c (print_entry): Fix memory leak.
+       * src/who.c (print_user): Likewise.
+
+2004-11-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: New dd operand "status=noxfer".
+       * src/dd.c (C_ASCII, C_EBCDIC, C_IBM, C_BLOCK, C_UNBLOCK,
+       C_LCASE, C_UCASE, C_SWAB, C_NOERROR, C_NOTRUNC, C_SYNC, C_TWOBUFS,
+       C_NOCREAT, C_EXCL, C_FDATASYNC, C_FSYNC): Now constants, not
+       macros.
+       (STATUS_NOXFER, statuses): New constants.
+       (usage, print_stats, scanargs): Add support for status=noxfer.
+       (usage): Update status output to match new behavior.
+       (print_stats): Always output complete byte count.
+       Put space between numbers and units, as SI requires.
+       Use ngettext so that i18n can use plurals for "byte" and "second".
+       Don't multiply by 1e-9 (inexact); divide by 1e9 (which is exact).
+       (iflag_error_msgid, oflag_error_msgid): Remove; replace uses by
+       the string.
+       * tests/dd/skip-seek (@Tests): Use status=noxfer to avoid
+       problems with regression testing.
+
+2004-11-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: dd now outputs total bytes, seconds, and bytes per second.
+       * src/Makefile.am (dd_LDADD): Add $(LIB_CLOCK_GETTIME).
+       * src/dd.c: Include "human.h".
+       (w_bytes, start_time): New vars.
+       (usage): Document new I/O statistics output
+       (print_stats): Output new I/O statistics.
+       (cleanup): Do statistics after closing stdin and stdout, so that
+       the times are more accurate.
+       (write_output, dd_copy): Count output bytes.
+       (main): Get initial value of clock.
+
+2004-11-14  Jim Meyering  <jim@meyering.net>
+
+       Backslash-escape `-'s in email addresses, so that they are
+       rendered properly in UTF-locales.
+       * man/help2man (escape_hyphens): New function.
+       (main): Call it on email addresses.
+
+       * src/sort.c (zaptemp): Mark new diagnostic for translation.
+
+       * tests/misc/close-stdout: New file.  Test today's closeout.c change.
+       * tests/misc/Makefile.am (TESTS): Add close-stdout.
+
+2004-11-13  Jim Meyering  <jim@meyering.net>
+
+       * src/test.c (usage): Put the description of `[-n] STRING'
+       on two lines, one for `-n STRING' and one for `STRING' so that
+       help2man properly escapes the `-'.  Otherwise, the hyphen is
+       rendered inappropriately in UTF-8 locales.
+       Reported by Uwe Zeisberger in http://bugs.debian.org/281069.
+
+2004-11-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Document the following changes.
+
+       * src/sort.c: Avoid O(N**2) behavior when there are many temporary
+       files.
+       (temptail): New variable, so that we can easily append to list.
+       (create_temp_file): Create new files at end of list, so that
+       searching the list has O(N*NMERGE) behavior instead of O(N**2).
+       (zaptemp): Update temptail if needed.
+       (mergefps, merge): Accept new arg that counts temp files, and keep it
+       up to date as we create and remove temporaries.  This is for
+       efficiency, so that we don't call zaptemp so often.
+       All callers changed.
+       (sort): Don't create array in reverse order, since the list of
+       temporaries is now in the correct order.
+
+       (zaptemp): Protect against race condition: if 'sort' is
+       interrupted in the middle of zaptemp, it might unlink the
+       temporary file twice, and the second time this happens the file
+       might already have been created by some other process.
+
+       (zaptemp): Warn if a temporary file is not removed.
+
+       (create_temp_file): Use offsetof for clarity.
+       (die): Move it up earlier, to clean up the code a bit.
+
+       * src/pr.c (strtoumax): Declare if not declared.
+       (skip_to_page, first_page_number, last_page_number, page_number,
+       first_last_page, print_header):
+       Use uintmax_t for page numbers.
+       (first_last_page): Remove unnecessary forward declaration.
+       Do not modify arg (it is now a const pointer).
+       Return a true if successful, false (without print a diagnostic)
+       otherwise.
+       (main): If +XXX does not specify a valid page range, treat it
+       as a file name.  This follows the response to Open Group XCU ERN 41
+       <http://www.opengroup.org/sophocles/show_mail.tpl?source=L&listname=austin-group-l&id=7717>,
+       which says the behavior is allowed.
+       (skip_to_page): When starting page number exceeds page count,
+       print both numbers in the diagnostic.
+       (print_header): Detect page number overflow.
+
+2004-11-07  Jim Meyering  <jim@meyering.net>
+
+       * src/uname.c [__APPLE__]: Include <mach/machine.h> and <mach-o/arch.h>.
+       (main) [__APPLE__]: Get the processor type via syscall rather than
+       hard-coding "powerpc".  From Toby Peterson.
+
+       * src/sort.c (merge): Remove declarations of now-unused variables.
+
+2004-11-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/sort.c (first_same_file): Remove.  Move most of the code to....
+       (avoid_trashing_input): New function.
+       (merge): Avoid some silly merges, e.g., copying a single file to
+       a temporary file when there are exactly 17 input files to merge.
+       Take a count of temporary files rather than a max_merge arg.
+       All uses changed.
+
+2004-11-06  Jim Meyering  <jim@meyering.net>
+
+       * src/sort.c (xfclose): Don't close stdout here (just flush it),
+       since close_stdout now closes stdout unconditionally.
+
+2004-11-05  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/sort.c (inittables, sort_buffer_size, getmonth, mergefps,
+       first_same_file, merge, sort, main): Use size_t for indexes to arrays.
+       This fixes some unlikely havoc-wreaking bugs (e.g., more than INT_MAX
+       temporary files).
+       (getmonth, keycompare, compare): Rewrite to avoid need for alloca,
+       thus avoiding unchecked stack overflow in some cases.  As a side
+       effect this improve the performance of "sort -M" by a factor of 4
+       on my benchmarks.
+
+2004-11-03  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/stty.c: Include "vasprintf.h" since we use vasprintf now.
+
+       * src/Makefile.am (check-AUTHORS): Don't assume \? works in a sed
+       expression; it's not portable.  Problem reported by Albert Chin.
+       Don't invoke a program more than once.
+       * src/groups.sh (version): New variable, containing author info,
+       for benefit of AUTHORS check.  Use it when acting on --version option.
+       * AUTHORS: Remove duplicate lines.  Remove bogus "chroot:"
+       in groups line.
+
+       * src/system.h: Don't #define and #undef getopt around <stdlib.h>,
+       as this breaks the new regime that does "#define getopt rpl_getopt".
+       Problem reported by Albert Chin for Solaris 9 with Sun cc in:
+       http://lists.gnu.org/archive/html/bug-gnulib/2004-11/msg00019.html
+       I suppose this may cause problems on ancient hosts with
+       incompatible getopt declarations, but we'll cross that bridge if
+       the problem gets reported to us by someone who can test the fix.
+
+2004-11-03  Jim Meyering  <jim@meyering.net>
+
+       * src/tac.c: quote(...) file names in diagnostics.
+
+2004-10-29  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Document getdate changes.
+
+2004-10-29  Jim Meyering  <jim@meyering.net>
+
+       * src/tac.c (tac_file): Remove temporary prototype and move this
+       function `down' so that it precedes definition of tac_nonseekable.
+
+       `tac /proc/modules' would print nothing
+       Reported by Harald Dunkel in http://bugs.debian.org/278604.
+
+       * src/tac.c (copy_to_temp): Renamed from save_stdin, since
+       now it copies a general file descriptor, not just stdin.
+       (tac_nonseekable): Renamed/adapted from tac_stdin.
+       (tac_file): Get fd via `open' directly rather than via fopen/fileno,
+       since we never used the stream.  Perform "-" to stdin mapping here
+       rather than in main.  Determine whether a file is seekable,
+       by trying to `lseek' to its end, and dispatch to tac_seekable or
+       tac_nonseekable accordingly.
+       (main): Rewrite argument handling now that it uses only tac_file.
+       * NEWS: Mention it here.
+
+2004-10-21  Jim Meyering  <jim@meyering.net>
+
+       * tests/mv/leak-fd: New file.
+       * tests/mv/Makefile.am (TESTS): Add it.
+       * tests/rm/dot-rel: New file.
+       * tests/rm/Makefile.am (TESTS): Add it.
+
+       Correct my patch of 2004-10-18.
+       * src/remove.c (rm): Destroy the saved_cwd here (via cwd_state),
+       if necessary, not in remove_dir.  Otherwise, removing multiple
+       `.'-relative nonempty directories no longer worked.
+
+2004-10-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/fmt.c (usage): Improve description of --prefix.
+       Problem reported by Edward Welbourne.
+
+       * man/uniq.x: Change summary so that it doesn't imply that
+       uniq writes to its input file.  Problem reported by
+       Dan Jacobson.
+
+2004-10-18  Jim Meyering  <jim@meyering.net>
+
+       Plug a leak that would cause a cross-device mv to fail when
+       operating on too many command-line-specified nonempty directories.
+       * src/remove.c (remove_dir): Destroy the `struct saved_cwd' on the
+       top of the stack before returning.  This usually closes the file
+       descriptor that was used to return to the original working directory.
+       Reported by Cyril Bouthors in
+       http://article.gmane.org/gmane.comp.gnu.core-utils.bugs/3048
+       * NEWS: Mention it here.
+
+       * src/pathchk.c (validate_file_name): Give a more descriptive
+       diagnostic when pathconf fails.  This also avoids an unwarranted
+       warning from gcc-3.3.5 about a format not being a string literal.
+
+       * src/sleep.c (main): Remove declaration of unused local, c.
+       * src/printenv.c (main): Likewise.
+       * src/logname.c (main): Likewise.
+       * src/uptime.c (main): Likewise, for optc.
+       * src/tsort.c (main): Likewise, for opt.
+
+2004-10-17  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * AUTHORS: Add self to pathchk.
+       * src/pathchk.c (AUTHORS): Add self.
+       Change "path" to "file name" whenever possible.
+       Remove usage comment, as it was a duplication of the code or doc.
+       Include <wchar.h> if available.
+       (mbrlen, mbstate_t) [! (HAVE_MBRLEN && HAVE_MBSTATE_T)]: Define.
+       (NEED_PATHCONF_WRAPPER, PATH_MAX, PATH_MAX_FOR, NAME_MAX,
+       pathconf_wrapper, portable_chars, dir_ok): Remove.
+       (NAME_MAX_MINIMUM, PATH_MAX_MINIMUM): New macros.
+       (pathconf, _PC_NAME_MAX, _PC_PATH_MAX): Define if nonexistent.
+       (portable_chars_only): New arg FILELEN.
+       Don't assume ASCII; we might be on an EBCDIC host.
+       Don't assume unibyte locale in diagnostic.
+       (component_start, component_len): New functions.
+       (validate_file_name): Renamed from validate_path.  All uses changed.
+       Pretty much a complete rewrite.
+       Don't make copy of file arg.  Always append trailing slash to
+       pathconf arg, just in case it's a symlink (this is pure paranoia;
+       we don't know of any hosts where the trailing slash is required).
+       Use size_t instead of long int when possible.
+       Avoid need to call pathconf in most practical cases.
+       Don't use euidaccess several times to test searchability;
+       just use lstat once.  Reword diagnostic to put the (often very long)
+       file names last.
+
+2004-10-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/printf.c (usage): Mention Unicode, and use H for hex digits.
+
+2004-10-13  Jim Meyering  <jim@meyering.net>
+
+       * NEWS: Mention today's fts.c fix.
+
+2004-10-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * tests/stty/row-col-1: Set LC_ALL=C.
+
+2004-10-12  Jim Meyering  <jim@meyering.net>
+
+       * src/dircolors.hin: Add .flac and .mpc as audio suffixes.
+       From Jesus Climent in http://bugs.debian.org/276149.
+
+2004-10-05  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/ls.c (ignore_mode): Renamed from ignore, to avoid shadowing
+       problems.  All uses changed.
+
+2004-10-05  Jim Meyering  <jim@meyering.net>
+
+       * .x-sc_trailing_blank: Add an exclusion for config/texinfo.tex,
+       since Karl says its trailing blanks are there to stay :-)
+
+2004-10-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/expr.c (NEW, OLD): Remove, partly to avoid
+       reference to obsolescent macro XMALLOC.
+       All uses replaced by xmalloc and free.
+
+2004-09-28  Jim Meyering  <jim@meyering.net>
+
+       * src/tail.c (usage): Clarify: --retry works only with --follow=name.
+       Reported by Nik A. Melchior in http://bugs.debian.org/273781.
+
+2004-09-27  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/od.c (format_address_paren): c is optional, so don't output
+       it if it's '\0'.
+
+2004-09-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Add support for ls --hide.  Idea suggested by Bardur Arantsson.
+       * NEWS: Document this.
+       * src/ls.c (file_ignored): Renamed from file_interesting, with
+       inverted return value.  Accept the file name, not a struct dirent *.
+       All uses changed.  Avoid the expense of calling fnmatch if the
+       file is ignorable due to leading '.'.
+       (all_files, really_all_files): Removed; replaced by:
+       (ignore): New variable.  All uses changed.
+       (IGNORE_DEFAULT, IGNORE_DOT_AND_DOTDOT, IGNORE_MINIMAL, HIDE_OPTION):
+       New constants.
+       (hide_patterns): New variable.
+       (long_options, decode_switches, file_ignored, usage):
+       Add support for --hide.
+       (patterns_match): New function.
+       (usage): Replace "hide" with "ignore" in explanation, to avoid
+       confusion.
+
+2004-09-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/ls.c (gobble_file, print_long_format): Don't assume that
+       human-readable output has a byte count equal to its column width;
+       this isn't always true in locales where the radix character is not
+       '.' or ','.
+       (format_user_or_group): Revamp code to match the above fix;
+       this avoids the (very faint) possibility of integer overflow.
+
+2004-09-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Mention that "chmod -r -w x" now works as expected.
+       * src/chmod.c (main): Revamp option processing to support this.
+       * tests/chmod/Makefile.am (TESTS): Add 'usage'.
+       * tests/chmod/usage: New set of tests for usage like that.
+
+2004-09-24  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (CVS_LIST): Use --types=AFGM option so that
+       it lists only cvs-controlled regular files.
+
+       * src/csplit.c (xalloc_die): Declare to be `extern', not `static'
+       to avoid a warning from gcc-3.4.1.  Reported by Paul Eggert.
+
+2004-09-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * Makefile.maint (CVS_LIST): New macro.
+       (sc_space_tab, sc_prohibit_atoi_atof, sc_file_system,
+       sc_prohibit_jm_in_m4, sc_system_h_headers, sc_sun_os_names,
+       sc_trailing_blank, po-check): Use it instead of the
+       nonstandard "cvsu --list".
+
+       * src/tail.c (parse_obsolete_option): Bring back support
+       for obsolete option followed by non-obsolete, or by more
+       than one file.  When obsolete, conform to SUSv2 rather than
+       original POSIX 1003.2-1992, as SUSv2 corrected the case of
+       "tail -c".  Add support for the SUSv2 "b" modifier.
+       * NEWS: Mention the above.
+       * tests/tail/Test.pm: New test case obs-b to check the above.
+       err-[134] no longer need _POSIX2_VERSION=199209.
+       Fix comments to match revised behavior.
+
+2004-09-22  Jim Meyering  <jim@meyering.net>
+
+       * Use automake-1.9.2.  Regenerate dependent files.
+
+       * src/remove.c (struct dirstack_state) [current_arg_jumpbuf]:
+       Improve the comment.
+
+       Clean up scoping etc. so that some make `distcheck' tests pass.
+       * src/csplit.c (xalloc_die): Declare to be static.
+       * src/chown-core.c (chown_files): Declare as `extern'.
+       * src/cp-hash.c (remember_created): Likewise.
+       * src/copy.c (copy): Likewise.
+       * src/checksum.h (enum) [ALG_MD5]: Define to be 1, not 0.
+
+       * src/id.c, src/nl.c, src/expand.c: Remove trailing blanks.
+       * src/unexpand.c: Likewise.
+
+       * src/Makefile.am (check-AUTHORS): New rule.
+       (check): Depend on it.
+       * AUTHORS: Update.
+
+       * Makefile.maint (syntax-check-rules): Remove duplicate sc_tight_scope.
+       (sc_system_h_headers): Also exclude copy.h; it includes <stdbool.h>.
+
+2004-09-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/ls.c (decode_switches): Don't compare a short value
+       to SIZE_MAX: GCC sometimes complains.
+
+2004-09-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: The following commands now reject unknown options:
+       basename dirname factor hostname link nohup sync unlink yes
+       Also, pathchk no longer accepts trailing options.
+
+       * src/basename.c: Include <getopt.h>.
+       * src/chroot.c: Likewise.
+       * src/dirname.c: Likewise.
+       * src/factor.c: Likewise.
+       * src/hostid.c: Likewise.
+       * src/hostname.c: Likewise.
+       * src/nohup.c: Likewise.
+       * src/pwd.c: Likewise.
+       * src/setuidgid.c: Likewise.
+       * src/sync.c: Likewise.
+
+       * src/basename.c (main): Reject unknown options.
+       * src/dirname.c (main): Likewise.
+       * src/factor.c (main): Likewise.
+       * src/hostid.c (main): Likewise.
+       * src/hostname.c (main): Likewise.
+       * src/link.c (main): Likewise.
+       * src/nohup.c (main): Likewise.
+       * src/pwd.c (main): Likewise.
+       * src/setuidgid.c (main): Likewise.
+       * src/sync.c (main): Likewise.
+       * src/unlink.c (main): Likewise.
+       * src/yes.c (main): Likewise.
+
+       * src/cat.c (main): Remove unused "case 0".
+       * src/chgrp.c (main): Likewise.
+       * src/chmod.c (main): Likewise.
+       * src/chown.c (main): Likewise.
+       * src/comm.c (main): Likewise.
+       * src/cp.c (main): Likewise.
+       * src/csplit.c (main): Likewise.
+       * src/cut.c (main): Likewise.
+       * src/date.c (main): Likewise.
+       * src/df.c (main): Likewise.
+       * src/du.c (main): Likewise.
+       * src/env.c (main): Likewise.
+       * src/expand.c (main): Likewise.
+       * src/fold.c (main): Likewise.
+       * src/head.c (main): Likewise.
+       * src/id.c (main): Likewise.
+       * src/install.c (main): Likewise.
+       * src/join.c (main): Likewise.
+       * src/ln.c (main): Likewise.
+       * src/ls.c (decode_switches): Likewise.
+       * src/mkdir.c (main): Likewise.
+       * src/mkfifo.c (main): Likewise.
+       * src/mknode.c (main): Likewise.
+       * src/mv.c (main): Likewise.
+       * src/nl.c (main): Likewise.
+       * src/paste.c (main): Likewise.
+       * src/pinky.c (main): Likewise.
+       * src/pr.c (main): Likewise.
+       * src/ptx.c (main): Likewise.
+       * src/readlink.c (main): Likewise.
+       * src/rm.c (main): Likewise.
+       * src/rmdir.c (main): Likewise.
+       * src/seq.c (main): Likewise.
+       * src/shred.c (main): Likewise.
+       * src/split.c (main): Likewise.
+       * src/sum.c (main): Likewise.
+       * src/tac.c (main): Likewise.
+       * src/tail.c (main): Likewise.
+       * src/tee.c (main): Likewise.
+       * src/touch.c (main): Likewise.
+       * src/tr.c (main): Likewise.
+       * src/tty.c (main): Likewise.
+       * src/uname.c (main): Likewise.
+       * src/unexpand.c (main): Likewise.
+       * src/wc.c (main): Likewise.
+       * src/who.c (main): Likewise.
+
+       * src/chroot.c (main): Use getopt where it suffices, not getopt_long.
+       * src/cksum.c (main): Likewise.
+       * src/dd.c (main): Likewise.
+       * src/logname.c (main): Likewise.
+       * src/printenv.c (main): Likewise.
+       * src/sleep.c (main): Likewise.
+       * src/tsort.c (main): Likewise.
+       * src/uptime.c (main): Likewise.
+       * src/users.c (main): Likewise.
+       * src/whoami.c (main): Likewise.
+
+       * src/du.c (long_options): Standardize on NULL vs 0.
+       * src/rm.c (long_opts): Likewise.
+
+       * src/logname.c (long_options): Remove.
+       * src/printenv.c (long_options): Likewise.
+       * src/sleep.c (long_options): Likewise.
+       * src/tsort.c (long_options): Likewise.
+       * src/uptime.c (longopts): Likewise.
+       * src/users.c (longopts): Likewise.
+       * src/whoami.c (long_options): Likewise.
+
+       * src/pathchk.c (longopts): Add --help, --version.
+       (main): Use longopts rather than parse_long_options.
+       * src/stty.c (longpts, main): Likewise.
+
+       * src/pathchk.c (main): Don't reorder arguments, so that
+       we can check weird file names.
+
+       * src/readlink.c: Don't include "long-options.h".
+       * src/sort.c: Likewise.
+       * src/stty.c: Likewise.
+
+       * src/split.c (verbose): Now bool, not int.
+       (VERBOSE_OPTION): New enum.
+       (longopts, main): Use it.
+
+       * tests/factor/basic: Adjust to new wording in diagnostic
+       that results from the above changes.
+
+2004-09-21  Jim Meyering  <jim@meyering.net>
+
+       * man/rm.x: Say "the response is affirmative" rather than "the
+       response begins with y or Y", so that the documentation is
+       accurate in non-English locales.  Problem reported by Munzir Taha.
+
+2004-09-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/echo.c (main): Don't pass NULL to strcmp when
+       POSIXLY_CORRECT and given no arguments.
+
+       * src/md5sum.c (STRING_OPTION): Remove.
+       (long_options, main): Remove support for undocumented and
+       obsolete --string option, as suggested in the 1996-09-26 patch.
+       * NEWS: Document this.
+
+       * tests/rm/fail-eperm: Don't try to remove writeable files in a
+       sticky /tmp directory, as SVR4-like systems (e.g., Solaris 9) let
+       you remove such files.  Problem reported by Bert Fischer in:
+       http://lists.gnu.org/archive/html/bug-coreutils/2004-09/msg00074.html
+
+2004-09-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/md5sum.c (STATUS_OPTION, STRING_OPTION): New enums.
+       (long_options, main): Use them instead of magic numbers 2 and 1.
+       For --string, optarg can't possibly be NULL.
+
+       * src/dd.c (usage): Distinguish between options and operands.
+       (scanargs): Don't mess with argc, argv; getopt_long handles this now.
+       Say "operands" for operands, not "options".
+       (main): Use getopt_long, so that "dd --" works as POSIX requires.
+       * tests/dd/misc: Check for "dd --".
+
+       * src/chroot.c (main): Reject unknown options instead of
+       interpreting them as a directory to chroot to.
+
+       * src/cksum.c: Remove obsolete comment about POSIX 1003.2/D11.2.
+       The current standard (POSIX 1003.1-2004) is correct.
+       (crc_remainder) [defined CRCTAB]: Renamed from "remainder" to avoid
+       collision with builtin function.
+       (main) [defined CRCTAB]: Output in lowercase hexadecimal, and
+       output the first 0 as 8 digits, to make it easier to compare to
+       the text of the standard.  Output crctab to be a const array.
+       (crctab): Use result of above changes.
+       (long_options): Remove; not needed if empty.
+       (main): getopt_long can't return 0 here, so simplify the code.
+
+2004-09-13  Jim Meyering  <jim@meyering.net>
+
+       * src/Makefile.am (localedir.h): Don't redirect directly to target.
+
+2004-09-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/id.c (print_full_info): Don't exit with failure status simply
+       because a user or group number can't be turned into a name.
+       Problem reported by Felipe Kellermann in:
+       http://lists.gnu.org/archive/html/bug-coreutils/2004-09/msg00081.html
+
+2004-09-12  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (my-distcheck): When building with -Werror, also
+       require -Wshadow.
+
+2004-09-10  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: "tail" now handles obscure POSIX 1003.2-1992 cases better.
+       * src/tail.c (parse_obsolete_option): Renamed from
+       parse_obsolescent_option, since the options are obsolete now.
+       Remove bool *arg; just exit if there's an error.  Revamp to follow
+       POSIX 1003.2-1992 more precisely, to handle cases like "tail -
+       file" and "tail -10 -- file" correctly when we are conforming to
+       the older standard.
+       (main): Adjust to this change.
+       * tests/tail/Test.pm (test_vector): minus-* requires
+       _POSIX2_VERSION=199209 now, to work correctly if there is
+       an input file.  err-1 and err-3 no longer errors if there
+       is another file.
+
+2004-09-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/test.c (usage): Document -r, -w, -x more carefully.
+
+2004-09-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/test.c (usage): Document "test" (with no args) and "[ ]".
+       Document that -h and -L don't dereference.
+
+       * NEWS: Document that "tr xy -z" now works as per POSIX.
+       Sort the descriptions.
+       * src/tr.c (main): Don't reorder options.
+       * tests/tr/Test.pm (fowler-1): New test case.
+
+2004-09-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/touch.c (main): Fix POSIX-conformance bug: "touch --
+       MMDDhhmm file" must be treated like "touch MMDDhhmm file" when
+       conforming to pre-2001 POSIX.
+       * NEWS: Document this.
+       * tests/touch/obsolescent: Test for this bug.  Also, set
+       _POSIX2_VERSION=199209 and POSIXLY_CORRECT=1 so that it's
+       a better test for obsolescent features.
+
+       * src/sort.c (main): Emulate Solaris 8 and 9 "sort -y", so that
+       "sort -y abc" is like "sort abc" whereas "sort -y 100" is like
+       plain "sort".
+
+       * src/od.c: Several changes for POSIX and FreeBSD compatibility.
+       (COMMON_SHORT_OPTIONS): Add -B, -D, -e, -F, -H, -I, -L, -O, -s, -X.
+       (long_options, main): --strings is now -S, not -s.
+       (usage): Reflect the usage changes.
+       (parse_old_offset): Do not issue a diagnostic on failure;
+       callers now do this as necessary.
+       (main): Support POSIX syntax.  Remove unused case 0 from getopt_long.
+       Add support for new short options (many undocumented) for
+       compatibility with FreeBSD.  Remove FIXME for -s; it's now
+       POSIX-compatible.  Default format is now oS, not o2.
+       * NEWS: Describe the above.
+
+2004-09-05  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/stty.c (valid_options): Remove.
+       (main): Fix some bugs in handling invalid option-combinations
+       like "stty -F".
+       (recover_mode): Arg is now char const *, not char *.
+       (main): Use STDIN_FILENO, not 0.
+       Simplify option-parsing code a tad.
+       * tests/stty/basic-1: Check for the fixed bugs.
+
+2004-09-03  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/stat.c (HAVE_STRUCT_STATXFS_F_TYPE): Fix typo that prevented
+       it from ever being nonzero.  Reported by Pozsar Balazs in:
+       http://lists.gnu.org/archive/html/bug-coreutils/2004-08/msg00189.html
+       (human_fstype): Add ramfs, squashfs, sysfs.
+       Reported by Pozsar Balazs in:
+       http://lists.gnu.org/archive/html/bug-coreutils/2004-08/msg00188.html
+       (human_fstype): Return char const *, not char *.
+       Simplify internals a bit, and avoid casts.
+
+       * src/dd.c (usage): "alternated EBCDIC" -> "alternate EBCDIC".
+       (bit_count): Remove.  All uses changed to....
+       (multiple_bits_set): New function.
+       (scanargs): Use it, and check separately for each set of
+       incompatible options, to improve diagnostics.
+       (MX): Remove.
+       (apply_translations): Move checks for incompatible options
+       to scanargs, so that they're done consistently.
+
+2004-09-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Output correct errno-related diagnostic on "paste" I/O errors.
+       * src/paste.c (write_error, xputchar): New functions.
+       (paste_parallel): Use correct errno value after input error.
+       (paste_parallel, paste_serial): Report errno value after output error.
+
+       Port to diet libc.  Problem reported by Felix von Leitner in:
+       http://lists.gnu.org/archive/html/bug-coreutils/2004-08/msg00171.html
+       * src/paste.c (dummy_closed, CLOSED, dummy_endlist, ENDLIST): Remove;
+       it's not portable C to assume FILE is a complete type.
+       (paste_parallel): Use index test instead of ENDLIST, and NULL
+       instead of CLOSED.
+
+2004-08-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       POSIX-conformance fixes for "expand" and "unexpand".
+       Also, consistently use "tab stop" rather than "tabstop".
+       * NEWS: Document fixes.
+       * src/expand.c: Revamp to resemble the new unexpand.c better.
+       (usage): -i does not convert tabs after non-tabs.
+       (add_tab_stop): Renamed from add_tabstop.  All uses changed.
+       (parse_tab_stop): Renamed from parse_tabstop.  All uses changed.
+       (validate_tab_stop): Renamed from validate_tabstop.  All uses changed.
+       (next_file, main): Check fclose against 0, not EOF.
+       (expand): Remove unnecessary casts.
+       Add another loop nesting level, for lines, so that per-line variables
+       are initialized cleanly.
+       Revamp tab checking.  Check for write error immediately, rather
+       than just once at the end of the program.
+       * src/unexpand.c: Lkewise (for the expand.c changes).
+       (TAB_STOP_SENTINEL): Remove.
+       (tab_size): Now size_t, not uintmax_t, since we need to store
+       the sequences of blanks.
+       (max_column_width): New var.
+       (usage): Say "blank" where POSIX requires this.
+       (add_tab_stop): Calculate maximum column width.
+       (unexpand): Store the pending blanks, instead of merely counting them.
+       Follow POSIX's rules about -a requiring two blanks before a tab stop.
+       Get rid of internal label and goto.
+       * tests/unexpand/basic-1: Fix infloop-3 to match POSIX.
+       Add blanks-1 through blanks-13.
+
+2004-08-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: "chown : file", "chown '' file", and "chgrp '' file" now
+       succeed without changing the uid and gid, like FreeBSD.
+       * src/chgrp.c (parse_group): Return gid_t rather than storing it
+       through a pointer.  Treat "chgrp '' file" as a no-op change,
+       as FreeBSD does.
+       (main): Set chopt.group_name to NULL if the group is the empty
+       string.
+       * src/chown-core.c (describe_change): Describe changes to -1:-1
+       without using "to OWNERSHIP" phrase.
+       * src/chown.c (usage): "chown '' file" is now allowed.
+       (main): Do not set user name to the empty string if the group
+       name is null.
+       * tests/chgrp/basic: Test "chgrp '' file".
+       * tests/chown/Makefile.am (TESTS): Add separator.
+       * tests/chown/separator: New file, partly taken from
+       Dmitry V. Levin's suggestion in
+       <http://lists.gnu.org/archive/html/bug-coreutils/2004-08/msg00102.html>
+
+2004-08-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * tests/install/basic-1: Test for the -d regression.
+
+2004-08-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+       * src/install.c (main): Fix -d regression introduced with
+       --target-directory support at 2004-06-25.
+
+2004-08-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/copy.c (copy_internal): When preserving links, unlink
+       a destination with link count greater than one.  This is so
+       that commands like "cp -a" don't get confused when copying into
+       a destination that already contains many hard links.  Problem
+       reported by Tim Waugh in:
+       http://lists.gnu.org/archive/html/bug-coreutils/2004-08/msg00053.html
+
+2004-08-10  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Convert all files to UTF-8.
+       * tests/fmt/basic (8-bit-pfx): Use UTF-8, not Latin-1.
+       * tests/sort/Test.pm (16a): Likewise.
+       * tests/uniq/Test.pm (8): Likewise.
+       * tests/misc/printf-hex: Use ASCII, not Latin-1.
+
+       * NEWS: Document "sort -o -" and "tee -" POSIX-conformance fixes.
+       * src/shred.c (usage): "-" is an operand, not an option.
+       * src/sort.c (die, xfopen, mergefps, first_same_file, merge):
+       A null file arg means standard output.
+       (main): "-o -" means to write to a file named "-",
+       not to standard output.
+       * src/tee.c (usage, tee): "tee -" writes to standard output, not
+       to a file named "-".
+
+2004-08-10  Dmitry V. Levin  <ldv@altlinux.org>
+
+       * src/install.c (change_timestamps): Fix int->bool conversion
+       bugs introduced on 2004-07-29.
+
+2004-08-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/shred.c (wipename): Work even if the directory is writeable
+       and not readable.  Prefer write access, since this should work
+       better with fdatasync.
+
+       * src/csplit.c (xalloc_die): New function.
+       (main): Remove now-obsolete initialization of xalloc_fail_func.
+
+       * src/md5sum.c: Adjust to sha->sha1 renaming.
+
+2004-08-08  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Minor code cleanup.
+       * src/readlink.c (canonicalize_fname): Remove unneeded proxy function.
+       (can_mode): Make variable local.
+
+2004-08-07  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/system.h (O_BINARY) [!O_BINARY && defined O_BINARY]:
+       Do not define, to avoid annoying compiler messages on QNX 6.3.
+       Problem reported by Johan in:
+       http://lists.gnu.org/archive/html/bug-coreutils/2004-08/msg00050.html
+
+2004-08-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/system.h (PRIdMAX, PRIoMAX, PRIuMAX, PRIxMAX):
+       Define to a concatenation of string literals, not to an expression;
+       needed for concatenation contexts.
+       (INTMAX_MAX, INTMAX_MIN): New macros.
+
+       * src/stat.c (print_stat): Don't assume st_ino / st_dev fits in
+       unsigned long; this isn't true for st_ino on Solaris 9.
+
+2004-08-03  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/uname.c: Do not depend on HAVE_SYSCTL when deciding
+       whether to include files.  Include <sys/param.h> if
+       HAVE_SYS_PARAM_H (not HAVE_SYSCTL).
+       (main) [defined __POWERPC__]: Add a kludge to work around a
+       Mac OS X bug, so that uname -p defaults to "powerpc" if
+       sysctl ((int[]) {CTL_HW, HW_MACHINE_ARCH}, 2, buffer, &bufsize, 0, 0)
+       fails.  Problem reported by Petter Reinholdtsen in:
+       http://lists.gnu.org/archive/html/bug-gnu-utils/2003-02/msg00201.html
+
+       * src/uniq.c (hard_LC_COLLATE, ignore_case, different, check_file,
+       main): Use bool for booleans.
+       (writeline, check_file): Use uintmax_t for line counts.
+       (check_file): Check for and report line number overflow,
+       when that matters.
+       * src/wc.c (iswspace, wc): Use to_uchar rather than a cast.
+       (print_lines, print_words, print_chars, print_bytes, print_linelength,
+       have_read_stdin, wc, wc_file, main):
+       Use bool for booleans.
+       (exit_status): Remove.
+       (wc, wc_file): Return bool status.  All callers changed.
+       * src/who.c (scan_entries): 0 -> STDIN_FILENO.
+       * src/whoami.c (main): Print uids using unsigned long int, not
+       unsigned int.
+
+       * src/unexpand.c: Int cleanup and minor reorganization to be more
+       like src/expand.c.
+       Include quote.h, xstrndup.h.
+       (TAB_STOP_SENTINEL): Increase from INT_MAX to INTMAX_MAX.
+       (convert_entire_line, have_read_stdin, parse_tabstops, next_file,
+       unexpand, main):
+       Use bool for booleans.
+       (tab_size, tab_list, add_tabstop, validate_tabstops, unexpand):
+       Use uintmax_t for column counts.
+       (first_free_tab, validate_tabstops, unexpand): Use size_t for sizes.
+       (add_tabstop, parse_tabstops, main): Don't reserve UINTMAX_MAX
+       as a tab stop.
+       (parse_tabstops): Don't use ISBLANK on possibly-signed char.
+       Detect overflow in tab stop string.
+       (next_file, main): Use EXIT_FAILURE/EXIT_SUCCESS instead of 1/0.
+       (unexpand): Concatenate input files the same way expand does.
+
+       * src/touch.c (no_create, use_ref, posix_date, amtime_now,
+       touch, main): Use bool for booleans.
+       (main): Avoid integer overflow when given more than INT_MAX
+       options.
+       * src/tsort.c (struct item, n_strings): Use size_t for sizes.
+       (have_read_stdin, count_items, scan_zeros, detect_loop,
+       recurse_tree, walk_tree, tsort, main):
+       Use bool for booleans.
+       (exit_status): Remove.
+       (tsort): Return a success flag instead of storing into a global.
+       (main): Use it.
+       * src/tty.c (silent, main): Use bool for booleans.
+       (main): 0 -> STDIN_FILENO.
+       * src/uname.c (print_element): Use bool for booleans.
+
+       * src/test.c (TRUE, FALSE, SHELL_BOOLEAN, TRUTH_OR, TRUTH_AND):
+       Remove.  All uses replaced by C99 boolean primitives.
+       (TEST_TRUE, TEST_FALSE): New constants, for readability.
+       (test_unop, binop, unary_operator, binary_operator, two_arguments,
+       three_arguments, posixtest, expr, term, and, or, is_int, age_of,
+       one_argument, main): Use bool for booleans.
+       (advance, unary_advance): Now inline procedures rather than a macros.
+       (is_int): Renamed from isint, to avoid namespace clash with ctype.h.
+       (term, and, or): When it's easy, loop instead of recursing.
+       (term): Avoid integer overflow if there are INT_MAX-3 args (!).
+       (binary_operator, unary_operator): Simplify by systematically rewriting
+       true==FOO to FOO (where FOO is a boolean).
+       (unary_operator): Don't consider a file to be a regular file
+       merely because its mode&S_IFMT is zero.  Just use S_ISREG.
+       Remove unnecessary casts.  Remove ifdefs for things like
+       S_ISSOCK that are no longer needed, since stat-macros.h always
+       defines them now.
+
+       * src/tac-pipe.c (buf_init_from_stdin, find_bol, tac_mem):
+       Use bool for booleans.
+       (buf_init_from_stdin, buf_free, find_bol, print_line):
+       Use size_t for sizes.
+       * src/tac.c (separator_ends_record, tac_seekable, tac_file,
+       tac_stdin, tac_stdin_to_mem, main): Use bool for booleans.
+       (match_length, G_buffer_size, tac_seekable, main): Use size_t for sizes.
+       (tac_seekable): Use ptrdiff_t for pointer subtraction.
+       Report an error if the result is out of range.
+       (tac_seekable, main): Check for integer overflow in buffer size
+       calculations.
+       (main): Remove unnecessary casts.
+
+       * src/su.c (run_shell): Pass a new n_additional_args arg, so that
+       the callee doesn't have to count 'em.  All callers changed.
+       Don't allocate more space for the arg vector than we'll need.
+       Use memcpy to copy the args rather than rolling our own loop.
+       Use size_t for sizes.
+       (fast_startup, simulate_login, change_environment, log_su,
+       correct_password, restricted_shell, main): Use bool for booleans.
+       (longopts): Don't assume change_environment is an int.
+       Use NULL, not 0, for pointers.
+       (xsetenv): New function, replacing xputenv and concat.
+       All callers changed.
+       (elements): Remove; no longer needed.
+       (log_su, correct_passwd, main): Prefer !x to x==NULL.
+       (log_su): 2 -> STDERR_FILENO.
+       (modify_environment, main): Don't assume that getenv's returned value
+       has an indefinite lifetime.
+       (modify_environment): Allocate a larger environ.
+       (main): Remove an impossible 'case 0'; if it happens now, it'll
+       get diagnosed.  Don't assume getpwnam results outlive endpwent.
+       Check for null or empty pw_name, pw_dir and for null pw_passwd.
+
+       * src/stty.c (VA_START): Remove.  All callers now use va_start.
+       (_POSIX_VDISABLE): Remove unnecessary cast.
+       (struct control_info, visible): Use cc_t for control chars.
+       (struct control_info): Use size_t for sizes.
+       (recover_mode, set_mode, display_speed, display_window_size,
+       valid_options, main, display_changed):
+       Use bool for booleans.
+       (integer_arg): Return unsigned long int, not long int.
+       Accept new max arg; all callers changed, to specify a maximum
+       value for integer parameters instead of silently overflowing.
+       (wrap): Do not overrun the stack buffer if the output contains
+       more than 1024 bytes.  Instead, malloc a buffer.
+       (main): Remove a "what is this?!?" FIXME.  Nobody knows what it is.
+       Remove unnecessary casts.
+       (set_control_char): Allow int values only up to cc_t range.
+       (screen_columns): Don't reject INT_MAX.
+       (display_changed, display_all, display_speed, recover_mode):
+       Don't assume cc_t fits in int.
+
+       * src/remove.h: Add copyright notice.
+       (struct rm_options): Use bool for booleans.
+       * src/rmdir.c (empty_paths, ignore_fail_on_non_empty, verbose,
+       errno_rmdir_non_empty, remove_parents, main): Likewise.
+       * src/sum.c (have_read_stdin, bsd_sum_file, sysv_sum_file,
+       main): Likewise.
+       (main): Don't dump core if invoked with argv[0]==NULL.
+       * src/tee.c (tee, append, ignore_interrupts, main, tee):
+       Use bool for booleans.
+       (tee): Use ssize_t for read returns.
+
+       * src/ptx.c: Add a FIXME mentioning that there are many
+       unchecked integer overflows in this file.
+       (gnu_extensions, auto_reference, input_reference, right_reference,
+       ignore_case, initialize_regex, fix_output_parameters,
+       output_one_roff_line, output_one_text_line, output_one_dumb_line, main):
+       Use bool for booleans.
+       (SKIP_SOMETHING, compare_words, digest_break_file,
+       find_occurs_in_text, fix_output_parameters):
+       Use to_uchar instead of a caset.
+       (print_field): Rewrite to avoid cast.
+
+       * src/printf.c (posixly_correct): Use bool for booleans.
+       (verify, main): Use EXIT_FAILURE/EXIT_SUCCESS instead of 1/0.
+       (STRTOX): Rewrite to avoid casts.
+       (print_esc_char): Arg is char, not int.
+       * src/readlink.c (canonicalize): Remove.  All uses now merely inspect
+       can_mode.
+       (no_newline, verbose): Use bool for booleans.
+       (can_mode): Now of type int; use -1 to denote otherwise-uninitialized.
+       * src/shred.c (struct Options, main): Use bool for booleans.
+       (isaac_seed_data, fillpattern, wipefile): Rewrite to avoid casts.
+       * src/split.c (cwrite, bytes_split, lines_split, line_bytes_split):
+       Use bool for booleans.
+       * src/stat.c (G_fail): Remove.
+       (print_statfs): Print various gotta-be-nonnegative values using
+       unsigned long int, not long int or int.
+       (do_statfs, do_stat): Return a boolean success flag.
+       (do_stat, main): Use bool for booleans.
+
+       * src/pr.c: Add a FIXME mentioning that there are many
+       unchecked integer overflows in this file.
+       (TRUE, FALSE): Remove.  All uses replaced by true and false.
+       (struct COLUMN, read_line, print_page, print_stored, open_file,
+       skip_to_page, init_fps, parallel_files, align_empty_cols,
+       empty_line, FF_only, explicit_columns, extremities, keep_FF,
+       print_a_FF, print_a_header, use_form_feed, have_read_stdin,
+       print_across_flag, storing_columns, balance_columns,
+       truncate_lines, join_lines, untabify_input, failed_opens,
+       numbered_lines, skip_count, use_esc_sequence, use_cntrl_prefix,
+       double_space, ignore_failed_opens, use_col_separator,
+       pad_vertically, last_line, main, init_parameters, skip_read,
+       read_line, print_stored):
+       Use bool for booleans.
+       (struct COLUMN, char_to_clump, store_char, print_char):
+       Use char for chars.
+       (clump_buff, print_clump): Use char[], not int[], for an array whose
+       elements are always chars.
+       (first_last_page, main, getoptarg, balance, add_line_number,
+       char_to_uclump): Remove unnecessary casts.
+       (init_parameters): Allocate chars, not ints, for clump_buff.
+       (print_char): Use to_uchar before invoking ISPRINT.
+       (char_to_clump): Convert to unsigned char before invoking ISPRINT.
+
+       * src/nohup.c (main): Use bool for booleans.
+       * src/paste.c (paste_parallel, paste_serial, main): Likewise.
+       * src/pathchk.c (validate-path, main, portable_chars_only): Likewise.
+       (portable_chars_only): Use to_uchar rather than a cast.
+       * src/printenv.c (main): Use bool for booleans.
+       Do not assume that the environ has at most one matching entry
+       for each option (integer overflow was possible otherwise).
+
+       * src/od.c (FMT_BYTES_ALLOCATED): Now an enum, not a decimal
+       constant.  Do not assume PRIdMAX etc. are strings of length 3 or
+       less.
+       (struct tspec): Use it.  fmt_string is now an array, not
+       a pointer, as there's little point to the indirection here.
+       (struct tspec, flag_dump_strings,
+       traditional, flag_pseudo_start, limit_bytes_to_format,
+       abbreviate_duplicate_blocks, have_read_stdin, simple_strtoul,
+       decode_one_format, open_next_file, check_and_close,
+       decode_format_string, skip, write_block, read_char, read_block,
+       parse_old_offset, dump, dump_strings, main):
+       Use bool for booleans.
+       (struct tspec): Use void *, not char *, for generic pointers.
+       (bytes_to_oct_digits, bytes_to_signed_dec_digits,
+       bytes_to_unsigned_dec_digits, bytes_to_hex_digits):
+       Use char, not unsigned int, since char suffices.
+       (print_s_char, print_char, print_s_short, print_short,
+       print_int, print_long, print_long_long, print_float,
+       print_double, print_long_double): Rewrite to avoid casts.
+       These now take void * arguments, instead of char *.
+       Use the same body for all functions, except for the choice
+       of type.  Assume C89 to simplify handling of signed char.
+       (dump_hexl_mode_trailer, print_named_ascii, print_ascii):
+       Rewrite to avoid casts.
+       (print_named_ascii, print_ascii): Now takes void *, not char *.
+       (decode_one_format): Use int for printf field widths, not
+       unsigned int.  Pass void * to subsidiary printers,
+       not char *.  Simplify handling of floating-point formats
+       by factoring out common code dealing with precision and field width.
+       (decode_format_string): Avoid need for temporary copy of
+       each decoded struct tspec.
+       (get_lcm): Remove unnecessary cast.
+       (main): Fix bug where more than INT_MAX failed decodes were ignored.
+
+2004-08-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/nl.c (TRUE, FALSE): Remove; all uses changed to true, false.
+       (enum number_format): Remove.
+       (FORMAT_RIGHT_NOLZ, FORMAT_RIGHT_LZ, FORMAT_LEFT): Now strings,
+       not enum values.
+       (DEFAULT_SECTION_DELIMITERS): Now an array constant, not a macro.
+       (section_del): Now const.
+       (print_fmt): Remove.
+       (starting_line_number, page_incr, blank_join, line_no,
+       print_lineno, proc_text, main):
+       Use intmax_t for line numbers.
+       (reset_numbers, have_read_stdin, build_type_arg, nl_file, main):
+       Use bool for booleans.
+       (lineno_format): Now a string, not an enum value.
+       (build_print_fmt): Remove.  All calls removed.  This work is
+       now done within print_lineno.
+       (build_type_arg): Use size_t for sizes.
+       (print_lineno): Check for line number overflow.
+       (proc_text, main): Remove unnecessary cast.
+
+       * src/ln.c (symbolic_link, interactive, remove_existing_files,
+       verbose, hard_dir_link, dereference_dest_dir_symlinks,
+       do_link, main): Use bool for booleans.
+
+       * src/ls.c (struct fileinfo, file_interesting,
+       extract_dirs_from_files, color_symlink_as_referent,
+       FILE_OR_LINK_MODE, sort_reverse, print_owner, print_group,
+       numeric_ids, print_block_size, dired, print_with_color,
+       check_symlink_color, print_inode, recursive, immediate_dirs,
+       all_files, really_all_files, qmark_funny_chars,
+       print_dir_name, format_needs_stat, format_needs_type, visit_dir,
+       main, decode_switches, parse_ls_color, print_dir, file_interesting,
+       gobble_file, make_link_path, basename_is_dot_or_dotdot,
+       extract_dirs_from_files, print_long_format):
+       Use bool for booleans.
+       (dir_defaulted): Remove; no longer needed.
+       (main): Use int to count files, since it suffices for argv.
+       Rewrite to avoid need for dir_defaulted.
+       (main, print_dir, gobble_file, get_link_name,
+       xstrcoll):
+       Set exit status to EXIT_SUCCES/EXIT_FAILURE rather than 0/1.
+       (decode_switches): Put back check for ws.ws_col <= SIZE_MAX.
+       Remove unnecessary cast to int.  Use int instead of unsigned
+       int to count from 0 to 1.
+       (get_funky_string, print_type_indicator): Use char for bytes, not int.
+       (make_link_path): Use NULL for null pointers.
+       (quote_name): Use to_uchar instead of cast.
+
+       * src/id.c (use_name, main, print_user, xgetgroups, print_group_list,
+       print_full_info): Use bool for booleans.
+       (problems): Remove, replacing with....
+       (ok): New var (inverted from old sense).
+       (print_user, print_group, print_full_info):
+       Print uids/gids with %lu, not %u.
+       (xgetgroups): Don't run out of memory if getgroups or getugroups
+       returns -1.
+       * src/setuidgid.c (main): Print uids/gids with %lu, not %ld.
+
+       * src/factor.c (wheel_tab): Use unsigned char instead of unsigned
+       int, since it suffices.
+       (factor, print_factors): Use size_t for sizes.
+       (print_factors, do_stdin, main): Use bool for booleans.
+       * src/fold.c (TAB_WIDTH): New macro; use it instead of "8".
+       (fold_file, main): Use bool for booleans.
+       (fold_file, main): Use size_t for sizes.
+       (main): Allow -w options up to SIZE_MAX - TAB_WIDTH - 1, instead
+       of prohibiting widths greater than INT_MAX.
+       * src/head.c (presume_input_pipe, print_headers, have_read_stdin,
+       write_header, elide_tail_bytes_pipe, elide_tail_bytes_file,
+       elide_tail_lines_pipe, elide_tail_lines_seekable,
+       elide_tail_lines_file, head_bytes, head_lines, head, head_file,
+       string_to_integer, main):
+       Use bool for booleans.
+       (main): Rewrite to avoid cast.
+
+       * src/csplit.c (struct line): Use size_t for sizes.
+       (main): Remove unnecessary cast.
+       * src/cut.c (cut_fields): Use to_uchar rather than a cast.
+       * src/cut.c (cut_file, main): Use bool for booleans.
+       * src/date.c (show_date, rfc_format, batch_convert, main): Likewise.
+       * src/env.c (main): Likewise.
+       * src/expr.c (nextarg): Likewise.
+       * src/env.c (main): Remove unused and nonstandard envp arg.
+
+       * src/fmt.c (COST, MAXWORDS): Add a comment describing some of
+       fmt's arbitrary limits.
+       (TRUE, FALSE): Remove; all uses changed to (true, false).
+       (main): Use bool for booleans.
+       Limit maximum width to MAXCHARS / 2.  Use xstrtoul, not xstrtol,
+       to parse width.
+       (copy_rest): Remove unnecessary cast.
+       (get_prefix): Rewrite to avoid cast.
+       (check_punctuation): Use char *, not unsigned char *; C89 requires
+       this.  Avoid off-by-one buffer read overrun when line is empty.
+       (flush_paragraph): Don't assume wptr-parabuf is <= INT_MAX.
+       Remove unnecessary casts.
+       * tests/fmt/basic (wide-1, wide-2, bad-suffix): Adjust to above
+       changes.
+
+       * src/expand.c (convert_entire_line, have_read_stdin, parse_tabstops,
+       next_file, expand, main):
+       Use bool for booleans.
+       (tab_size, tab_list, add_tabstop, parse_tabstops, validate_tabstops,
+       expand, main):
+       Use uintmax_t for column counts.
+       (add_tabstop): Don't reserve -1 (now UINTMAX_MAX) as a special value.
+       All callers changed.
+       (parse_tabstops): Don't pass a negative char to isblank.
+       Avoid memory leak with large tab stops.
+       (validate_tabstops, expand): Don't assume number of tab stops is
+       <= INT_MAX.
+       (next_file, main): Use EXIT_SUCCESS/EXIT_FAILURE rather than 0/1 when
+       storing values into exit_status.
+       (expand): Use same pattern as unexpand for reading chars.
+       Report an error when input line is too long, instead of silently
+       screwing up.  Do not mishandle tab stops when backspacing left
+       over start of line.
+
+       * src/dircolors.c (have_read_stdin, append_quoted,
+       dc_parse_stream, dc_parse_file, main): Use bool for booleans.
+       (dc_parse_stream): Use enum for state, rather than int.
+       Use ssize_t to store getline result.
+
+       * src/dd.c (translation_needed, parse_integer, scanargs,
+       apply_translations, char_is_saved, swab_buffer, skip_via_lseek):
+       Use bool for booleans.
+       (translate_buffer): Use to_uchar rather than a cast.
+       (swab_buffer, copy_simple, copy_with_unblock):
+       Use size_t for sizes.
+
+       * src/seq.c (equal_width, valid_format, main): Use bool for booleans.
+       * src/sleep.c (apply_suffix): Likewise.
+       * src/tail.c (struct File_spec, reopen_inaccessible_files, count_lines,
+       forever, from_start, print_headers, have_read_stdin, valid_file_spec,
+       write_header, file_lines, pipe_lines, pipe_bytes, recheck,
+       tail_forever, tail_bytes, tail_lines, tail, tail_file,
+       parse_obsolescent_option, parse_options, main): Likewise.
+       * src/sleep.c (apply_suffix): Invert sense of result.
+       Use int (not unsigned int) for multiplier, as this generates better
+       code with some compilers.  Simplify code a bit.
+       * src/tail.c (struct File_spec, max_n_unchanged_stats_between_opens,
+       parse_options): Use uintmax_t, not unsigned int or unsigned long int,
+       for state counters.
+       (tail_bytes, tail_lines): Redo test of return value (-1, 0, 1) to
+       make it a bit clearer.
+
+       * src/hostname.c: Include "xgethostname.h".
+       (xgethostname): Remove decl; xgethostname.h has it.
+       (sethostname) [!defined(HAVE_SETHOSTNAME) && defined(HAVE_SYSINFO)
+       && defined (HAVE_SYS_SYSTEMINFO_H) && defined(HAVE_LIMITS_H)]: Use
+       prototypes rather than K&R form.  Assume any negative value from
+       sysinfo denotes failure, not just -1.
+       (main): Simplify use of sethostname.
+
+       * src/pinky.c (include_idle, include_heading, include_fullname,
+       include_project, include_plan, include_home_and_shell, do_short_format,
+       include_where, main): Use bool for booleans.
+       (count_ampersands, create_fullname, scan_entries, short_pinky):
+       Use size_t for sizes.
+       (create_fullname): Check for overflow in size calculations.
+       (idle_string): Don't assume that the number of idle days
+       is less than 10**8 and/or INT_MAX/(24*60*60).
+       (main): No need to pass a non-NULL last arg to getopt_long.
+       * src/uptime.c (print_uptime, uptime): Use size_t for sizes.
+       (print_uptime): Remove unused local variable.
+       (main): No need to pass a non-NULL last arg to getopt_long.
+       * src/users.c (list_entries_users, users): Use size_t for sizes.
+       (list_entries_users): Use char for bytes.
+       (main): No need to pass a non-NULL last arg to getopt_long.
+       * src/who.c (do_lookup, short_list, short_output, include_idle,
+       include_heading, include_mesg, include_exit, need_boottime,
+       need_deadprocs, need_login, need_initspawn, need_clockchange,
+       need_runlevel, need_users, my_line_only, main): Use bool for booleans.
+       (print_runlevel): Use unsigned char for bytes.
+       (list_entries_who, scan_entries, who): Use size_t for sizes.
+       (main): No need to pass a non-NULL last arg to getopt_long.
+
+       * src/install.c (isdir): Remove decl.
+       (install_file_to_path): Rely on make_path to fail if the destination
+       is not a directory, by passing preserve_existing==true to it.
+       Hence we no longer need to call isdir.
+       Free dest_dir immediately when it's no longer needed, rather than
+       waiting until the end of the function.
+       (copy_file): Don't bother calling isdir, as copy will do the
+       right thing if the destination is a directory.
+
+       * src/du.c (fts_debug, opt_all, apparent_size, opt_count_all,
+       print_grand_total, opt_separate_dirs, hash_ins, process_file, main):
+       Use bool for booleans.
+       (max_depth): Now size_t, not int, to avoid an arbitrary limit
+       of INT_MAX on depth.
+       (G_fail): Remove: no longer needed, now that the relevant
+       functions return bool.
+       (process_file): Use return value to signal success rather than
+       setting a global.  Remove first_call static var; not needed, since
+       we can look at n_alloc.  Use size_t for depths.  Remove FIXME
+       about size_t casts, as it's now fixed.  Use xnrealloc rather
+       than the obsolescent XREALLOC.  Don't bother to check whether
+       reallocation is needed unless level > prev_level.
+       (du_files): Invert sense of result, for consistency with
+       other coreutils code.  All callers changed.
+       (main): Allow --max-depth values up to SIZE_MAX.
+
+       * src/df.c (inode_format, show_all_fs, show_local_fs,
+       show_listed_fs, posix_format, require_sync, print_type,
+       selected_fstype, excluded_fstype, show_dev, show_point, main):
+       Use bool for booleans.
+       (df_readable, show_dev): Use UINTMAX_MAX instead of -1.
+       (show_dev, show_point, main):
+       Use EXIT_SUCCESS/EXIT_FAILURE instead of 0/1.
+       Don't assume disk name lengths are <= INT_MAX.
+       Rewrite pct calculation to avoid cast.
+       (show_point): Don't assume resolved length is <= SSIZE_MAX.
+
+       * src/cut.c (hash_int) [!defined UINTPTR_MAX]: Use size_t
+       instead of uintptr_t.
+       * src/shred.c (UINT_MAX_32_BITS): Remove.
+       (word32): Remove.  All uses changed to uint32_t.
+       (isaac_seed_data): Remove unnecessary cast.
+       * src/system.h (ptr_align): Use size_t; in practice, this is just as
+       good as uintptr_t in checking for alignments, and has fewer
+       configuration hassles.
+
+       * src/Makefile.am (localedir.h): Make it readonly; this
+       undoes part of the 2004-07-27 patch.
+
+2004-07-30  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/sort.c (UCHAR): Remove; all uses changed to to_uchar.
+       (IS_THOUSANDS_SEP): Use bool when appropriate.
+       (numcompare, main): Use char, not int, when the value is always a char.
+       (numcompare): Remove "register"; compilers are smart enough these days.
+       * src/system.h (errno, CHAR_BIT): Remove decls;
+       no longer needed now we assume C89 or better.
+       Include <inttypes.h> before <stdint.h>, as it's the
+       Autoconf-recommended pattern.
+       (to_uchar): New inline function, moved here from tr.c.
+       Use full names for int types, e.g. "long int" rather than "long".
+       * src/tr.c (to_uchar): Remove; now in system.h.
+       (is_char_class_member): Use bool when appropriate.
+
+       * src/mkdir.c (create_parents, main): Use bool when appropriate.
+       (main): Use EXIT_SUCCESS/EXIT_FAILURE instead of 0/1.
+
+2004-07-29  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/mkfifo.c (main): Use EXIT_SUCCESS and EXIT_FAILURE, not 0 and 1.
+
+       * src/chmod.c (recurse, force_silent, process_file, process_files,
+       main): Use bool when appropriate.
+       * src/cksum.c (cksum, main): Likewise.
+       * src/comm.c (hard_LC_COLLATE, only_file_1, only_file_2, both,
+       compare_files, main): Likewise.
+
+       * src/copy.h (struct cp_options): Likewise.
+       * src/copy.c (copy_internal, is_ancestor, copy_dir, copy_reg,
+       same_file_ok, seen_file, copy_internal, valid_options, copy): Likewise.
+       * src/cp-hash.h (remember_created): Likewise.
+       * src/cp-hash.c (remember_created): Likewise.
+       * src/cp.c (struct dir_attr, flag_path, remove_trailing_slashes,
+       re_protect, make_path_private, target_directory_operand, do_copy,
+       cp_option_init, decode_preserve_arg, main): Likewise.
+       * src/install.c (isdir, change_timestamps, change_attributes,
+       copy_file, install_file_to_path, install_file_in_dir,
+       install_file_in_file, strip_files, dir_arg, cp_option_init, main,
+       change_attributes, change_timestamps): Likewise.
+       * src/mv.c (remove_trailing_slashes, rm_option_init,
+       cp_option_init, do_move, movefile, main): Likewise.
+       * src/remove.c (right_justify), full_filename_, AD_pop_and_chdir,
+       AD_push, prompt, remove_dir): Likewise.
+       * src/rm.c (rm_option_init, main): Likewise.
+
+       * src/remove.c (top_dir, pop_dir, full_filename_):
+       Use size_t for sizes.
+       * src/cp.c (target_directory_operand): Do not clear *NEW_DST if stat
+       succeeds.  It's not necessary in that case, as *NEW_DST is always
+       false already.
+       (do_copy): Rewrite slightly to avoid need for "unreachable" comment.
+       (main): Use EXIT_SUCCESS, EXIT_FAILURE instead of 0, 1.
+       * src/rm.c (main): Likewise.
+
+       md5sum, sha1sum integer cleanups.
+
+       * src/checksum.h: Don't include config.h, sys/types.h, stdio.h:
+       not needed.
+       (ALG_UNSPECIFIED): Remove.
+       (ALG_MDT): Don't make it equal to CHAR_MAX + 1; this isn't necessary.
+       * src/md5.c: Don't include any files other than checksum.h.
+       * src/sha1sum.c: Likewise.
+       * src/md5sum.c (OPENOPTS, have_read_stdin, status_only, warn,
+       bsd_split_3, split_3, hex_digits, digest_file, digest_check, main):
+       Use bool when appropriate.
+       (digest_check): Increase limit of number of input lines to
+       UINTMAX_MAX from INT_MAX.  Diagnose any overflows of this counter.
+       Use ngettext instead of hard-to-i18nize hardcoded stuff for plurals.
+
+2004-07-28  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/cat.c (exit_status): Remove.  Now done by passing a boolean
+       'ok' flag around.
+       (simple_cat, cat): Return true if successful.  All callers changed.
+       (simple_cat, cat, main): Use bool for booleans.
+       (simple_cat): Use size_t for sizes.
+       (cat, main): Use the same names for parameters that we use for
+       long options, to avoid confusion.  This inverts the sense of the
+       show_tabs (formerly output_tabs) and number_nonblank
+       (formerly numbers_at_empty_lines) variables.
+       (main): Don't mess up (due to integer overflow) if we are given
+       INT_MAX - INT_MIN + 1 options.
+       [O_BINARY]: Don't invoke isatty unless the other options require it.
+       (main): When deciding whether to use simple_cat, don't worry
+       about binary option; it's irrelevant.
+
+       * src/dcgen: Remove comments, trailing white space, and empty
+       lines from the output strings, to save space.
+       Use a narrower type like 'unsigned char' for line lengths, if
+       that will do.
+       Make the output variables static, not extern.
+
+       * src/chgrp.c (parse_group): Require base 10 when parsing
+       groups as integers.
+       (main): int -> bool when appropriate.
+       * src/chown.c (main): Likewise.
+       * src/chown-core.c: Include inttostr.h.
+       (UINT_MAX_DECIMAL_DIGITS, uint_to_string): Remove.
+       (gid_to_name, uid_to_name): Use imaxtostr/umaxtostr
+       instead of uint_to_string).
+       (describe_change): Instead of an int flag, use a char *
+       auxiliary; this avoids the need for casts.
+       Assume free (NULL) works.
+       (change_file_owner): Return true/false, not 0/-1, since
+       we don't set errno.  All callers changed.
+       Use bool when appropriate.
+       (chown_files): Likewise.
+       * src/chown-core.h (chown_files): Likewise.
+
+       * tests/chown/basic: Test for proper handling of uids like
+       "010", which must be parsed as decimal.
+
+       * tests/misc/pwd: Don't assume that Perl's getpwd agrees with our
+       pwd when there are multiple names for the working directory
+       (which can happen with an automounter, sigh).
+
+       * src/Makefile.am ($(SCRIPTS)): Don't depend on Makefile;
+       this causes Solaris 8 'make' to refuse to build "groups".
+       (localedir.h): Don't depend on Makefile: this causes Solaris
+       8 'make' to build localedir.h unnecessarily.  The dependence
+       on Makefile is ineffective anyway, since $(localedir) might
+       change even if Makefile hasn't.
+
+       * src/remove.c (remove_dir): If we can't save the state of the
+       working directory, pretend we started from "/", not ".".
+       This avoids a bug on hosts like Solaris that don't let you
+       remove the working directory.
+
+2004-07-27  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/printf.c (strtiomax, strtoumax): Declare if not already
+       declared: this fixes a portability bug with Solaris 8 + GCC.
+       (STRTOX): Parenthesize use of macro arg as expression.
+       (vstrtoimax, vstrtoumax, vstrtold): Remove now-unnecessary
+       parentheses.
+       * configure.ac: Check for declaration of strtoumax, for
+       src/printf.c.
+
+       * src/Makefile.am (cp_LDADD, ginstall_LDADD, mv_LDADD,
+       pathchk_LDADD, rm_LDADD, test_LDADD): New vars, for eaccess.
+
+       * tests/readlink/can-e: Don't assume that we can remove the
+       working directory: this isn't possible under Solaris 8, say.
+       * tests/readlink/can-f: Likewise.
+       * tests/readlink/can-m: Likewise.
+
+       * src/copy.c (copy_internal): find_backup_file_name no longer
+       returns NULL, so don't bother to check for this.
+       * src/cp.c (do_copy): Likewise.
+       * src/ln.c (do_link): Likewise.
+
+2004-07-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/nice.c (GET_NICE_VALUE): Renamed from GET_PRIORITY.
+       All uses changed.
+       (NZERO): New macro, if system doesn't define it already.
+       (usage): Distinguish priorities from nice values.
+       Don't assume NZERO is 20.
+       (main): Use bool instead of int where appropriate.
+       If user specifies an adjustment out of range, always truncate it
+       to an inrange value instead of sometimes giving an error message
+       and sometimes not.
+       Do not assume that -1 is an error return from "nice" or
+       "getpriority", as it might be the current nice value minus NZERO.
+       If nice/setpriority fails with errno == EPERM, go ahead and run
+       the command anyway; POSIX requires this.
+
+       * src/pathchk.c: Include euidaccess.h.
+       (dir_ok): Use euidaccess, not access.
+       * src/test.c (R_OK, W_OK, X_OK, FOK): Remove; system.h defines them.
+       (eaccess): Remove.  All users changed to use euidaccess instead.
+
+2004-07-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/uptime.c (print_uptime) [defined BOOT_MSG]:
+       Don't assume ut_line is null-terminated.
+       * src/who.c (print_line): New arguments USERLEN and LINELEN,
+       since USER and LINE might not be null terminated.  All callers
+       changed.
+
+2004-07-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix bug with "tail -f" reported by Rob Holland in
+       <http://lists.gnu.org/archive/html/bug-coreutils/2004-07/msg00054.html>.
+       Also, remove the undocumented and unsupported-since-2000
+       --max-consecutive-size-changes options.  Fix another related bug:
+       "tail" got confused if stdin, stdout, or stderr were closed.
+       Also, use output buffering even with "tail -f".
+
+       * NEWS: Document this, plus yesterday's patch.
+       * doc/coreutils.texi (tail invocation): "size has remained the same"
+       -> "file has not changed", which is more accurate for fifos.
+       * src/tail.c: Include fcntl-safer.h.
+       (COPY_TO_EOF): Set to UINTMAX_MAX, not OFF_T_MAX (which was wrong).
+       (COPY_A_BUFFER): New macro.
+       (struct File_spec): New members mtime, mode, blocking.
+       Remove member n_consecutive_size_changes.
+       (DEFAULT_MAX_N_CONSECUTIVE_SIZE_CHANGES,
+       max_n_consecutive_size_changes_between_opens,
+       MAX_CONSECUTIVE_SIZE_CHANGES_OPTION): Remove.
+       (long_options, tail_forever, parse_options):
+       Remove (non-)support for --max-consecutive-size-changes.
+       (record_open_fd): New function.
+       (recheck, tail_file): Use it.  Don't assume that stdin is open.
+       (dump_remainder): Add support for new COPY_A_BUFFER special value.
+       Treat errno==EAGAIN like EOF, since it might be a nonblocking read.
+       (recheck): New arg BLOCKING, specifying whether to use blocking reads.
+       All uses changed.
+       (n_live_files): Remove, replacing with...
+       (any_live_files): New function.  All uses changed.
+       (tail_forever): Use nonblocking I/O unless we know that blocking I/O
+       is safe; this avoids some hangs when reading from a fifo.
+       Avoid invoking fstat or sleep when using blocking I/O.
+       Do not check for changes to size if the file is not a regular file,
+       as the size is undefined in that case.
+       Check for changes to mtime or mode, too; this works for non-regular
+       files.
+       (tail_forever, main): Redo fflush strategy to work even when input
+       is nonblocking.  Don't use unbuffered output; just flush when needed.
+
+2004-07-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/tail.c (main): Ignore -f if no file operand is specified
+       and standard input is a pipe.
+       * doc/coreutils.texi (tail invocation): Do not ignore -f for
+       all pipes, just for when standard input is a pipe and no
+       file operand is specified.
+       * tests/tail/Test.pm: Reinstate f-1 test, since we now pass.
+       Add a new commented-out f-2 test, which we still fail.
+       (test_vector): All f-* tests are special cases, not just f-1.
+
+2004-07-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/uptime.c: Include c-strtod.h.
+       (print_uptime): Use c_strtod instead of setlocale and sscanf.
+       Use long int rather than int to count days (for 64-bit hosts),
+       and check for arithmetic overflow when converting double to time_t.
+
+2004-07-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/printf.c (vstrtold): Renamed from vstrtod.
+       Now returns long double.  All uses changed.
+       (print_direc): Use "L" length modifier when printing floating point
+       numbers, since we're now printing long double.
+
+2004-07-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       printf cleanup, to avoid undefined behavior, to add support for
+       formats that Bash supports, and to support wide integers like
+       Bash does.
+
+       * NEWS: Document this.
+       * src/printf.c (UNSPECIFIED): Remove.  All uses now replaced by
+       booleans, so that we don't reserve any values for precision or
+       width (like Bash).
+       (STRTOX): Use prototype, not K&R-style definition.
+       (vstrtoimax): Renamed from xstrtol (to avoid confusion with xstrtol
+       in ../lib), with type change to intmax_t.
+       All uses changed.
+       (vstrtoumax): Renamed from xstrtoul, with type change to uintmax_t.
+       All uses changed.
+       (vstrtod): Renamed from xstrtod.  All uses changed.
+       (print_direc): Use boolean arg instead of special value to indicate
+       a missing precision or width.  LENGTH no longer includes
+       length modifiers or conversion character.  New arg CONVERSION
+       now specifies conversion character.
+       Use intmax_t-width formatting for integers (like Bash).
+       Add support for C99 %a, %A, %F (like Bash).
+       Add support for field width with %c (POSIX requires this).
+       Add a FIXME for lack of support for field width and precision
+       for %b.
+       Add support for '\'', '0' flags.
+       Check for invalid combinations of flags, field width, precision,
+       and conversion, to prevent use of undefined behavior.
+       Allow multiple length modifiers, for formats like "%lld" (like Bash).
+       Add support for C99 'j', 't', 'z' length modifiers (like Bash).
+       In error message, output entire invalid conversion specification,
+       instead of merely outputting % followed by the conversion char.
+       * tests/misc/printf: Add tests for the above.
+
+2004-04-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+       Change "readlink -f" to be more compatible with prior implementations.
+       Add more canonicalize options, -e and -m.
+       Add comprehensive tests for all readlink modes.
+
+       * m4/canonicalize.m4 (AC_FUNC_CANONICALIZE_FILE_NAME):
+       Do not add canonicalize.c here.
+
+       * src/readlink.c (longopts): Add new options.
+       (usage): Document them.
+       (canonicalize_fname): New proxy function.
+       (main): Handle new options.
+       * doc/coreutils.texi (readlink invocation): Document new
+       "readlink -f" behaviour and new canonicalize options, -e and -m.
+
+       * configure.ac (AC_CONFIG_FILES): Add tests/readlink/Makefile.
+       * tests/Makefile.am (SUBDIRS): Add readlink.
+       * tests/readlink/Makefile.am: New file.
+       * tests/readlink/{rl-1,can-e,can-f,can-m}: New readlink tests.
+       * tests/misc/Makefile.am (TESTS): Remove basic readlink test.
+       * tests/misc/readlink: Remove file.
+
+2004-07-04  Jim Meyering  <jim@meyering.net>
+
+       * src/copy.c (copy_internal): Add a FIXME comment.
+
+2004-07-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/copy.c (copy_dir): Assume path_concat returns non-NULL.
+       * src/cp.c (do_copy): Likewise.
+       * src/mv.c (movefile): Likewise.
+
+       * src/cp.c (make_path_private): 2nd arg is now size_t, not int,
+       to avoid problem when path_concat dir name is longer than 2 GiB (!).
+
+       * src/nohup.c (main): Don't pass NULL first argument to path_concat.
+       This cleans up the semantics a bit, as we no longer try to open the
+       same file twice.
+
+2004-07-01  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Add short names -t and -T for --target-directory
+       and --no-target-directory options, respectively.
+
+       * src/cp.c (NO_TARGET_DIRECTORY_OPTION, TARGET_DIRECTORY_OPTION):
+       Remove.  All uses changed to 'T' and 't', respectively.
+       * src/install.c, src/ln.c, src/mv.c: Likewise.
+
+       * src/cp.c (long_opts, usage, do_copy, main): Add -t and -T as
+       aliases for --target-directory and --no-target-directory,
+       respectively.
+       * src/install.c (long_options, main, usage): Likewise.
+       * src/ln.c, src/mv.c: Likewise.
+
+2004-07-01  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (sc_file_system): New target.
+       (syntax-check-rules): Add it.
+       .x-sc_file_system: New file.
+       * Makefile.am (EXTRA_DIST): Add it.
+
+       * man/sync.x: Use "file system" rather than "filesystem".
+       * man/stat.x, man/df.x: Likewise.
+
+2004-06-30  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/df.c (usage, main): Output "file system" rather than
+       "filesystem".
+       * src/du.c (usage): Likewise.
+       * src/shred.c (usage): Likewise.
+       * src/stat.c (usage): Likewise.
+       * src/stat.c (long_options, usage): Rename "--filesystem" to
+       "--file-system".  But keep the old name around, for compatibility
+       reasons.
+
+2004-06-29  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Add support for --no-target-directory option.
+
+       * NEWS: Document it.
+       * doc/coreutils.texi (Common options, Target directory, cp
+       invocation, install invocation, mv invocation, ln invocation):
+       Likewise.
+       (link invocation): Explain how to rewrite link using ln now
+       that we have --no-target-directory.
+       (ln invocation): Explain that --no-target-directory subsumes
+       --no-dereference.
+       (unlink invocation): Modify wording to match new wording in
+       link invocation.
+
+       * src/cp.c (NO_TARGET_DIRECTORY_OPTION): New constant.
+       (long_opts, usage, do_copy, main): Add support for
+       --no-target-directory,
+       * src/install.c (NO_TARGET_DIRECTORY_OPTION, long_options, main,
+       usage): Likewise.
+       * src/ln.c (NO_TARGET_DIRECTORY_OPTION, long_options, usage,
+       main): Likewise.
+       * src/mv.c (NO_TARGET_DIRECTORY_OPTION, long_options, usage,
+       main): Likewise.
+       * src/mv.c (enum): Sort values.
+
+2004-06-29  Jim Meyering  <jim@meyering.net>
+
+       Don't let verbose-mode output from a subshell obscure actual differences.
+       * tests/rm/inaccessible: Turn off command-echoing just before
+       invoking subshell, then turn it back on if VERBOSE=yes afterward.
+
+2004-06-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Add support for 'install --target-directory', an option
+       that has been documented for years but not implemented (!).
+       * doc/coreutils.texi (install invocation): Document
+       --target-directory in synopsis, too.
+       * src/install.c (TARGET_DIRECTORY_OPTION): New var.
+       (long_options, main, usage): Add --target-directory.
+       (target_directory_operand): New function, stolen from mv.c.
+       (main): Use it.  Check for -d and --target-directory.
+       Alter wording of diagnostics to match other programs.
+
+2004-06-28  Jim Meyering  <jim@meyering.net>
+
+       * src/cp.c (usage): Fix copy+paste error in description of
+       --target-directory: s/move/copy/.  From Paul Jarc.
+
+2004-06-27  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Use more-consistent rules among cp, ln, and mv when dealing with
+       last operands that are (or look like) directories.
+
+       * src/cp.c (target_directory_operand): New, nearly-common function,
+       It reports an error if the destination appears to be a directory
+       (e.g., because it has a trailing slash) but is not.
+       * src/ln.c, src/mv.c: Likewise.
+       * src/cp.c (do_copy): Use it.
+       * src/ln.c (main): Likewise.
+       * src/mv.c (main): Likewise.
+
+       * src/cp.c (do_copy): Don't assume argc is positive.
+       Don't bother to lstat dest, since copy() will do that for us.
+       Use "const" to avoid the need for cast.
+
+       * src/cp.c (do_copy): Don't output a usage message because of file
+       problems (e.g., an operand is not a directory).  Use it only for
+       syntax.  Standardize on "target %s is not a directory" for the
+       diagnostic.
+       * src/ln.c (main): Likewise.
+       * src/mv.c (main): Likewise.
+
+       * src/cp.c (do_copy): Remove test for trailing slash, since
+       target_directory_operand now does this.
+       * src/ln.c (main): Likewise.
+       * src/mv.c (movefile): Likewise.
+
+       * src/cp.c (main): Reject multiple target directories.
+       Check whether a specified target is a directory when parsing the
+       options, using stat.  This gives more-accurate diagnostics.
+       * src/ln.c (main): Likewise.
+
+       * src/ln.c (isdir): Remove decl; no longer needed.
+       * src/mv.c (isdir, lstat): Likewise.
+
+       * src/ln.c (do_link): New arg dest_is_dir.  All uses changed.
+       Don't check the destination ourself; rely on dest_is_dir.
+       This way we can avoid lstatting the destination in the
+       usual case, and in the worst case we lstat 1, not 3 times.
+       Don't bother to unlink unless link failed; this saves a syscall.
+       Remove unnecessary backup_succeeded flag;
+       it was identical to "dest_backup != NULL".
+
+       * src/ln.c (main): Use int to count to argc, not unsigned int.
+       This handles negative operand counts.
+       * src/mv.c (main): Likewise.
+
+       * src/mv.c (do_move): Don't call hash_init; expect the caller to
+       do it, for consistency with cp.c and ln.c.  All callers changed.
+       (movefile): dest_is_dir parameter is now bool, not int.
+       (main): Standardize on "missing destination file operand after %s"
+       for the diagnostic, for consistency with cp.c.
+
+       * tests/mv/diag: Don't assume "mv --target=nonexistentdir"
+       will complain about the arg count.
+       Adjust to new (briefer) diagnostics.
+       * tests/cp/fail-perm: Add a test to verify that we get the new
+       diagnostic when failing to copy through a symlink-to-inaccessible-dir.
+
+2004-06-27  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix a bug: formerly, if d/x was a directory and x a file, "ln x
+       d/" incorrectly created a link d/x/x.  It also saves some system
+       calls.
+
+       * NEWS: Document the fix.
+
+       * src/ln.c (main): Don't append basename to dest if this
+       results in an existing directory name.
+       * tests/ln/misc: See whether a trailing slash is followed too far.
+
+2004-06-26  Jim Meyering  <jim@meyering.net>
+
+       * src/printf.c (main): When given no arguments, print the standard
+       "missing operand\nTry printf --help..." message -- to be consistent.
+
+2004-06-26  Jim Meyering  <jim@meyering.net>
+
+       * src/mknod.c (main): Add \n at the end of message output via fprintf.
+
+2004-06-25  Jim Meyering  <jim@meyering.net>
+
+       * tests/ln/misc: Add test for ln subscript error.
+
+2004-06-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/ln.c (do_link): Remove unnecessary call to lstat.
+       (main): Avoid subscript error when the destination is "".
+
+2004-06-23  Jim Meyering  <jim@meyering.net>
+
+       * tests/*: Replace all occurrences of `(exit N); exit' with
+       `(exit N); exit N'.  Otherwise, those many tests could exit with
+       improper exit status when exiting via e.g., a trapped interrupt.
+       Thanks to a report from Bob Proulx.
+
+2004-06-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/who.c (idle_string, print_user): New arg boottime,
+       specifying the most recent boot time.  All uses changed.
+       (idle_string) Consider a line to be "old" if it hasn't been used
+       since the last boot time.  Watch out for overflow when computing
+       times, and for times in the future.
+       (idle_string): Record latest boot time.
+
+2004-06-22  Jim Meyering  <jim@meyering.net>
+
+       * src/test.c (usage): Correct description of `-t FD'.  The file
+       descriptor, FD, is no longer optional.  Reported by Ton Nijkes.
+
+2004-06-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       The 2004-06-19 fix for who and pinky was incomplete, as ctime
+       has undefined behavior if the year precedes -999 or follows 9999.
+       Since we have to stop using ctime anyway, we might as well use
+       strftime and fix the FIXME, and support internationalized dates.
+
+       * NEWS: Document the new behavior.
+       * src/who.c: Include "hard-locale.h".
+       (time_format, time_format_width): New vars.
+       (time_string, print_line): Use them.
+       (main): Set them.
+       (time_string): Use localtime + strftime instead of
+       ctime, to avoid problems with years before -999 or after 9999.
+       * src/pinky.c: Likewise.
+
+2004-06-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix bug: GNU 'ls' didn't count columns correctly if user or group
+       names contained multibyte characters where the column count
+       differed from the byte count.  This patch also corrects
+       some comments.
+
+       * src/ls.c (format_user_or_group): New function, which counts
+       columns correctly.
+       (format_user, format_group): Use it.
+       (format_user_or_group_width): New function, which counts columns
+       correctly.
+       (format_user_width, format_group_width): Use it.
+
+2004-06-21  Jim Meyering  <jim@meyering.net>
+
+       * tests/priv-check: Quote "$PATH" in PATH=$PATH.
+       Suggestion from Andreas Schwab.
+
+       * tests/priv-check: When running as root, be sure to propagate
+       PATH through to the process we exec as non-root.
+       Reported by michael@aplatform.com.
+
+       * src/mknod.c (main): Don't segfault when calculating the
+       expected number of operands for `mknod NAME'.
+
+2004-06-20  Jim Meyering  <jim@meyering.net>
+
+       * src/dd.c (input_seek_errno): Declare file-scoped variable as static.
+
+2004-06-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/basename.c (main):
+       Standardize on the diagnostics given when someone gives
+       too few operands ("missing operand after `xxx'") or
+       too many operands ("extra operand `xxx'").
+       Include "quote.h" and/or "error.h" if it wasn't already being included.
+       * src/chgrp.c (main): Likewise.
+       * src/chmod.c (main): Likewise.
+       * src/chown.c (main): Likewise.
+       * src/chroot.c (main): Likewise.
+       * src/comm.c (main): Likewise.
+       * src/cp.c (do_copy): Likewise.
+       * src/csplit.c (main): Likewise.
+       * src/date.c (main): Likewise.
+       * src/dircolors.c (main): Likewise.
+       * src/dirname.c (main): Likewise.
+       * src/du.c (main): Likewise.
+       * src/expr.c (main): Likewise.
+       * src/hostid.c (main): Likewise.
+       * src/hostname.c (main): Likewise.
+       * src/id.c (main): Likewise.
+       * src/install.c (main): Likewise.
+       * src/join.c (add_file_name, main): Likewise.
+       * src/link.c (main): Likewise.
+       * src/ln.c (main): Likewise.
+       * src/logname.c (main): Likewise.
+       * src/md5sum.c (main): Likewise.
+       * src/mkdir.c (main): Likewise.
+       * src/mkfifo.c (main): Likewise.
+       * src/mknod.c (main): Likewise.
+       * src/mv.c (main): Likewise.
+       * src/nohup.c (main): Likewise.
+       * src/od.c (main): Likewise.
+       * src/pathchk.c (main): Likewise.
+       * src/ptx.c (main): Likewise.
+       * src/readlink.c (main): Likewise.
+       * src/rm.c (main): Likewise.
+       * src/rmdir.c (main): Likewise.
+       * src/seq.c (main): Likewise.
+       * src/setuidgid.c (main): Likewise.
+       * src/shred.c (main): Likewise.
+       * src/sleep.c (main): Likewise.
+       * src/sort.c (main): Likewise.
+       * src/split.c (main): Likewise.
+       * src/stat.c (main): Likewise.
+       * src/test.c (beyond, main): Likewise.
+       * src/touch.c (main): Likewise.
+       * src/tr.c (main): Likewise.
+       * src/tsort.c (main): Likewise.
+       * src/tty.c (main): Likewise.
+       * src/uname.c (main): Likewise.
+       * src/uniq.c (main): Likewise.
+       * src/unlink.c (main): Likewise.
+       * src/uptime.c (main): Likewise.
+       * src/users.c (main): Likewise.
+       * src/who.c (main): Likewise.
+       * src/whoami.c (main): Likewise.
+
+       * tests/basename/basic: Adjust to new diagnostics.
+       * tests/du/files0-from: Likewise.
+       * tests/expr/basic: Likewise.
+       * tests/mv/diag: Likewise.
+       * tests/tsort/basic-1: Likewise.
+
+2004-06-20  Jim Meyering  <jim@meyering.net>
+
+       * src/ln.c: Remove declaration of yesno.
+       Instead, include yesno.h.
+       * src/copy.c: Likewise.
+
+       * src/remove.c: Remove declaration of yesno.
+       Instead, include yesno.h.
+       (top_dir): Remove now-unnecessary cast of obstack_base.
+       (pop_dir): Likewise.
+       (full_filename_): Likewise.
+
+2004-06-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Don't dump core if ctime returns NULL; this is possible on
+       hosts with 64-bit time_t and 32-bit int.
+       * src/who.c: Include "inttostr.h".
+       (time_string): If ctime fails, print the raw time as an integer
+       instead of dumping core.
+       * src/pinky.c: Likewise, as follows:
+       Include "inttostr.h".
+       (time_string): New function, copied from who.c.
+       (print_entry): Use it.
+
+2004-06-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/who.c (print_line): Don't truncate user names at 8 bytes.
+       Problem reported by Guido Leenders in:
+       http://lists.gnu.org/archive/html/bug-coreutils/2004-06/msg00056.html
+       * NEWS: document this.
+
+2004-06-19  Jim Meyering  <jim@meyering.net>
+
+       * src/system.h (case_GETOPT_VERSION_CHAR): Switch back to
+       using GNU_PACKAGE (from PACKAGE) once again.  This restores
+       `GNU' to the parenthesized package name in --version output.
+       Before, the first argument from AC_INIT, `GNU coreutils', would
+       be propagated to the PACKAGE variable.  Now, `GNU ' is trimmed.
+       Reported by Richard Stallman.
+
+2004-06-17  Jim Meyering  <jim@meyering.net>
+
+       * src/tr.c (to_uchar): Rename function from `uchar'.  The latter
+       would clash with a typedef in Tru64's <sys/types.h>.  From Albert Chin.
+
+2004-06-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Remove more special cases for POSIXLY_CORRECT when POSIX
+       allows the GNU behavior.  "--" is now supported by chroot, hostid,
+       hosname, pwd, sync, yes.
+       * doc/coreutils.texi (yes invocation, false invocation,
+       true invocation): Document this.
+       * src/chroot.c (main): Handle "--".
+       * src/hostid.c (main): Likewise.
+       * src/hostname.c (main): Likewise.
+       * src/pwd.c (main): Likewise.
+       * src/sync.c (main): Likewise.
+       * src/yes.c (main): Likewise.
+       * src/true.c (main): Recognize --help and --version even if
+       POSIXLY_CORRECT is set.
+       * src/yes.c (main): Likewise.
+
+2004-06-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Remove special cases for POSIXLY_CORRECT when POSIX allows
+       the GNU behavior.
+       * doc/coreutils.texi (pr invocation, unlink invocation): Document this.
+       * src/ls.c (decode_switches): Pay attention to TABSIZE even if
+       POSIXLY_CORRECT is set.  POSIX reserves upper-case environment
+       variables to the implementation, so it's OK for ls to depend on
+       TABSIZE.
+       * src/pr.c: Include "hard-locale.h".
+       (main): When in a non-POSIX locale, ignore POSIXLY_CORRECT, since
+       POSIX specifies the behavior only in the POSIX locale.
+       * src/printf.c (print_esc): Support \x, \u, \U even if POSIXLY_CORRECT,
+       since POSIX says the behavior is unspecified here.
+       * src/tail.c (parse_obsolescent_option): Support multiple file operands
+       even if POSIXLY_CORRECT, since POSIX does not require a diagnostic.
+       * src/printf.c (main): Recognize --help, --version even if
+       POSIXLY_CORRECT.  POSIX does not specify any options, but it
+       does not prohibit options either, so "printf" is like "expr" here.
+       * src/unlink.c (main): Likewise.
+       * tests/misc/printf: Adjust to the new semantics for \x if
+       POSIXLY_CORRECT.
+
+2004-06-14  Jim Meyering  <jim@meyering.net>
+
+       * tests/misc/pwd: New test, for fix of 2004-04-19.
+       * tests/misc/Makefile.am (TESTS): Add pwd.
+       (BUILD_SRC_DIR): Define BUILD_SRC_DIR.
+
+       * src/copy.c: Remove declaration of euidaccess.
+       Instead, include "euidaccess.h".
+
+2004-06-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/who.c (PIDSTR_DECL_AND_INIT): Don't assume pid_t fits in int.
+       (UT_ID) [!HAVE_STRUCT_XTMP_UT_ID]: Remove bogus comment,
+       as (sizeof "??") reliably returns 3.
+       (print_line): Guard against idle and pid being too long
+       (which is possible when printing headers).
+       (print_user): Allocate enough bytes for idlestr.  Use IDLESTR_LEN.
+       Avoid unnecessary cast of sizeof to int.
+       (make_id_equals_comment): Do not assume that UT_ID returns
+       a string; it might return a non-null-terminated array.
+       Use strncat instead.  It's not very often where strncat is
+       exactly what you want, but this is one of those rare cases.
+
+2004-06-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/who.c (list_entries_who): Don't output a trailing space.
+
+2004-06-09  Jim Meyering  <jim@meyering.net>
+
+       * src/touch.c (usage): Improve wording in description of the
+       --time=WORD option.  Reported by Dan Jacobson.
+
+       * src/chown-core.c (change_file_owner): Change names of parameters
+       old_uid and old_gid to required_uid and required_gid respectively.
+
+       * src/chmod.c (mode_changed): Return false, not 0, now that the
+       function returns `bool'.
+
+2004-06-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Adjust chmod and chown to be similar if -c or -v are given.  In
+       particular, a no-op chown is no longer reported as a change; this
+       reverts to previous behavior.  Also, fix both commands so that -v
+       report failures even if the failure is not due to the chmod or
+       chown syscalls.
+
+       * src/chmod.c (CH_NOT_APPLIED): New constant.
+       (describe_change): Handle it.
+       (process_file): Use it, if a symlink wasn't changed.
+       (mode_changed): Return bool, not int.  Accept new argument
+       NEW_MODE; all callers changed.  This lets us avoid statting the
+       file unless the new mode has unusual bits.
+       (process_file): Return -1 on error.  With -v, report all errors
+       verbosely, not just some.
+
+       * src/chown-core.c (change_file_owner): Return -1 on error, not
+       1 sometimes and -1 on others.  Our caller ORs together our results,
+       and (-1 | 1) == 0 on ones-complement hosts.
+       With -v report all errors verbosely, not just some.
+       Fix bug when chopt->root_dev_ino && !chopt->affect_symlink_referent:
+       file_stats wasn't set properly in that case.
+
+       * tests/chgrp/basic: Adjust to above changes.
+
+2004-05-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * tests/chgrp/basic: Test that chgrp -h does not fail on
+       symlinks, even on hosts where that's not supported.
+       Test that if -R is specified without -H or L, -h is assumed.
+       Test that chown() is not optimized away.
+
+2004-05-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Several fixes to chgrp and chown for compatibility with POSIX and BSD:
+
+         Check for incompatible options.  When -R and --dereference are
+         both used, then either -H or -L must also be used.  When -R and -h
+         are both used, then -P must be in effect.
+
+         -H, -L, and -P have no effect unless -R is also specified.
+         If -P and -R are both specified, -h is assumed.
+
+         Do not optimize away the chown() system call when the file's owner
+         and group already have the desired value.  This optimization was
+         incorrect, as it failed to updated the last-changed time and reset
+         special permission bits, as POSIX requires.
+
+         Do not report an error if the owner or group of a
+         recursively-encountered symbolic link cannot be updated because
+         the file system does not support it.
+
+       * NEWS: Document the above.
+
+       * src/chgrp.c (main): Check for incompatible options.  -R --dereference
+       requires either -H or -L, and -R -h requires -P.  If -H, specify
+       FTS_PHYSICAL as well as FTS_COMFOLLOW; this is faster.  Make this
+       file as much like chown.c as possible.
+       * src/chown.c (main): Likewise.
+
+       * src/chown-core.c (change_file_owner): Use ent->fts_statp only if
+       needed.  Chown a directory only after chowning its children; this
+       avoids problems if the new directory ownership doesn't permit
+       access to the children.  Dereference symlinks before doing
+       ROOT_DEV_INO_CHECK, not after, so that we catch symlinks to /.
+       Do not optimize away the chown() system call when the file's owner
+       and group already have the desired value.  POSIX does not permit
+       this optimization.  Rely on chown and lchown to do the right
+       thing with symlinks and/or -1 arguments, now that we have wrappers
+       to do this.  Use ENOTSUPP not ENOSYS, and ignore all ENOTSUPP
+       errors, not just command-line errors.
+       (chown_files): Pass FTS_NOSTAT to xfts_open if we don't need file status.
+
+       * src/system.h (ENOTSUP): Remove.
+
+       * tests/chgrp/basic: Use chown --from to discover whether the
+       group changed, since chgrp now changes unconditionally.  This
+       complicates the sed script a bit.  Do not specify --dereference,
+       since it's the default (and we want to test this).  Adjust output
+       to match the fact that chgrp no longer optimizes the case of
+       changing a file's group to the same value as before.
+       * tests/chgrp/posix-H: Do not attempt to combine -h and -H; these
+       options are incompatible, and their behavior is undefined with POSIX.
+       (changed, not_changed): Adjust to match the fact that -h is no longer
+       specified.  Sort names.
+       * tests/chown/deref: Adjust error-diagnostic spelling to match new
+       behavior.
+
+2004-06-07  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/uname.c (main): Fix typo introduced on 2003-05-10 that
+       prevented a diagnostic of any operands.
+
+2004-06-08  Jim Meyering  <jim@meyering.net>
+
+       * src/shred.c (direct_mode): Turn it on/off with directio, too.
+
+2004-06-07  Jim Meyering  <jim@meyering.net>
+
+       Enable direct-mode I/O (bypassing the buffer cache), if possible.
+       Prompted by a suggestion from Kalle Olavi Niemitalo
+       in http://bugs.debian.org/207035.
+       * src/shred.c (direct_mode): New function.
+       (do_wipefd): Turn on direct-mode I/O.
+       (dopass): If a file's first write fails with EINVAL,
+       turn off direct-mode I/O and retry the write.
+
+2004-06-05  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/tr.c (main): "tr -d a b" is now a fatal error even if
+       POSIXLY_CORRECT is set.  The POSIX SYNOPSIS does not allow this
+       option combination.
+
+2004-06-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/shred.c (dopass): Don't subtract 1 from the offset after
+       a write error.  Problem reported by Jon Peatfield in:
+       http://lists.gnu.org/archive/html/bug-coreutils/2004-06/msg00020.html
+
+2004-06-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix bug reported by Buciuman Adrian in
+       <http://mail.gnu.org/archive/html/bug-coreutils/2003-08/msg00105.html>
+       where 'dd' created a file that was too large.  The bug was that dd
+       assumed that the input file offset does not advance after a failed
+       read; but POSIX says that the input file offset is undefined after
+       a failed read.
+
+       * src/dd.c (MAX_BLOCKSIZE): New macro.
+       (input_seekable, input_seek_errno, input_offset,
+       input_offset_overflow): New vars.
+       (scanargs): Reject block sizes greater than MAX_BLOCKSIZE.
+       (advance_input_offset): New function.
+       (skip_via_lseek): Set errno to zero when reporting our failure,
+       so that we don't report based on garbage errno.
+       (skip): If fdesc is standard input, advance the input offset.
+       Do not quit if reading, and if noerror was specified;
+       POSIX seems to require this.
+       If read fails on output file, report the earlier lseek failure
+       instead; this fixes a FIXME in dd_copy.
+       (advance_input_after_read_error): New function.
+       (dd_copy): Use it, instead of assuming that failed reads
+       do not advance the file pointer.  Advance input offset
+       after nonfailed reads.  Advance only a partial block if
+       the previous read (before the failed read) succeeded, and
+       do not generate an output block of zeros in this case.
+       (main): Determine initial input offset, seekability of input,
+       and error if it wasn't seekable.
+
+2004-06-02  Jim Meyering  <jim@meyering.net>
+
+       rm (without -f) could hang unnecessarily when attempting to
+       remove a symlink to a file on an off-line NFS-mounted partition.
+       Reported by David Howells in https://bugzilla.redhat.com/124699.
+       * src/remove.c (write_protected_non_symlink): New function.
+       Don't invoke euidaccess on symlinks.
+       (prompt): Use write_protected_non_symlink rather than using
+       euidaccess directly, being careful not to call lstat twice for a file.
+
+       Fix a bug in how the --output-delimiter=D option works with
+       abutting byte or character ranges.  Reported by David Krider in
+       http://lists.gnu.org/archive/html/bug-coreutils/2004-05/msg00132.html
+       * src/cut.c (print_kth): Remove special case for open-ended range.
+       (set_fields): Record the range start index for an interval even
+       when it abuts another interval on its low side.
+       Also record the range start index of the longest right-open-interval.
+       * tests/cut/Test.pm: Add tests of --output-delimiter=S with
+       abutting and overlapping byte ranges.
+
+2004-06-01  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Some POSIX-conformance cleanups for tr.
+
+       * src/tr.c (posix_pedantic): Remove; no longer needed since
+       we need to test this in just one place now.
+       (usage): Mention -C.
+       (unquote): Note that \055, \n, etc are escaped.
+       Do not worry about POSIXLY_CORRECT when warning about ambiguous
+       escape sequences.
+       \ at end of string stands for itself.
+       Do not diagnose invalid backslash escapes: POSIX says the behavior
+       is unspecified in this case, so we don't need to diagnose it.
+       (main): Add support for -C (currently an alias for -c).
+       Do not diagnose 'tr [:upper:] [:upper:], as POSIX does not require
+       a diagnostic here.
+       * tests/tr/Test.pm: New tests bs-055, bs-at-end, repeat-Compl.
+       Fix comment for range-a-a.
+
+2004-05-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Improve the efficiency (and in one case, correctness) of code
+       that reads symlinks.
+
+       * src/copy.c (copy_internal): Don't use alloca, as it can mess up
+       royally if the link length is long (e.g., GNU/Hurd).  Use
+       xreadlink instead, it's safer.  Don't bother to read the link if
+       it's the wrong size.  Add a FIXME because this area is a bit murky
+       and undocumented.
+       * src/ls.c (get_link_name): Update use of xreadlink.
+       * src/readlink.c (main): Likewise.
+       * src/stat.c (print_stat): Likewise.
+
+2004-06-01  Jim Meyering  <jim@meyering.net>
+
+       * src/env.c (main): Prefer the notation `STREQ (a, b)'
+       over `!strcmp (a, b)'.
+       * src/sort.c (main, sort_buffer_size): Prefer the notation
+       `STREQ (a, b)' over `strcmp (a, b) == 0'.
+       * src/date.c (batch_convert): Likewise.
+       * src/expr.c (nextarg): Likewise.
+       * src/su.c (correct_password, restricted_shell, main): Likewise.
+       * src/ptx.c (swallow_file_in_memory, main): Likewise.
+       * src/test.c (binary_operator, and, or, main): Likewise.
+
+2004-05-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: echo compatibility cleanup.
+       * doc/coreutils.texi (echo invocation): Document the changes.
+       * src/echo.c (V9_ECHO): Remove; always enabled.
+       (DEFAULT_ECHO_TO_XPG): Renamed from V9_DEFAULT, so that
+       we use the same naming convention as bash.  Now an enum,
+       not a macro.
+       (usage): Reword to mention -e/-E more accurately.
+       Mention \0NNN (the POSIX syntax) rather than \NNN (nonstandard).
+       (hextobin): New function.
+       (main): Use bool rather than int for local vars when appropriate.
+       Do not allow options if POSIXLY_CORRECT, unless we are using
+       BSD semantics and the first argument is "-n".
+       Don't pass unnecessary extra arg to parse_long_options.
+       do_v9 now defaults to DEFAULT_ECHO_TO_XPG, not to allow_options.
+       Do not look for options if !allow_options.
+       Use size_t rather than int when appropriate.
+       Open-code option test rather than using strrchr.
+       Use faster test for "-".
+       Avoid redundant argc test.
+       Add support for \x, for Bash compatibility.
+       Use e.g. '\a' rather than '\007', for portability to EBCDIC hosts.
+       When '\c' is encountered, stop printing immediately, as POSIX
+       requires.
+       Add support for \xhh syntax.
+       Add support for \0ooo syntax; POSIX requires this.
+
+2004-06-01  Jim Meyering  <jim@meyering.net>
+
+       * Use automake-1.8b.  Regenerate dependent files.
+
+2004-05-31  Jim Meyering  <jim@meyering.net>
+
+       * tests/Makefile.am.in (TESTS_ENVIRONMENT): Define PATH to include
+       the build src/ directory -- at the front.
+       ($(srcdir)/$x-tests): Depend on Makefile.am.
+       Use $x as the program name, except when it would be `test' (test is
+       the sole program tested via mk-script that is also a shell built-in).
+       In that case, use the old ../../src/$x.
+
+2004-05-30  Jim Meyering  <jim@meyering.net>
+
+       Work around HPUX /bin/cc compiler bug that is exposed, now that
+       sets are arrays of type `bool'.  More details here:
+       http://lists.gnu.org/archive/html/bug-gnulib/2004-05/msg00094.html
+       FIXME: verify that the above URL points to the right message
+
+       * src/tr.c (card_of_complement): Use cleaner `sizeof in_set'
+       rather than `N_CHARS * sizeof(in_set[0])'.  Using HPUX's /bin/cc
+       (aC++/ANSI C B3910B A.05.55 [Dec 04 2003]) on an ia64-hp-hpux11.22
+       system, those two expressions are not the same (256 vs. 1024).
+       The effect of this problem was that `tr -c x y' would fail:
+       tr: when not truncating set1, string2 must be non-empty
+       (set_initialize): Remove unnecessary initialization of the `in_set'
+       buffer; that initialization triggered the same compiler bug as above.
+
+2004-05-29  Paul Eggert  <eggert@cs.ucla.edu>
+
+       tr cleanup, mostly having to do with integer type ranges.
+       Remove all casts.
+
+       * tests/tr/Test.pm: Add a few tests for the below.  Alas, most of
+       the test cases wouldn't be portable, or would take too much CPU
+       time, or both.
+
+       * src/tr.c (N_CHARS, N_CHAR_CLASSES): Now an enum, not a macro.
+       This is safe since the code already assumes N_CHARS fits in int.
+       (Filter): Remove: we want to prototype everything.
+       (ORD, CHR): Remove.  All uses removed.  Some replaced with:
+       (uchar): New function.  All places where a char must be converted
+       to an unsigned char are now done this way, not by ad-hoc methods.
+       (count): New type.  Use it whenever counts or states are needed.
+       (BEGIN_STATE): Increase from INT_MAX - 1 (which was bogus, anyway,
+       since we used it in an unsigned int context) to UINTMAX_MAX - 1.
+       (REPEAT_COUNT_MAXIMUM): New macro.  Use it in place of BEGIN_STATE
+       whenever appropriate.
+       (NOT_A_CHAR): Remove global macro; now a local enum.
+       (UL_LOWER, UL_UPPER, UL_NONE): No longer specify values, since
+       the rest of the code no longer depends on them.
+       (class_ok): Remove; all uses changed to use inline comparisons.
+       (RE_NO_TYPE): Remove; wasn't used or needed.
+       (struct List_element): normal_char and equiv_code are now unsigned
+       char, not int.
+       first_char, last_char, and the_repeated_char are now unsigned char,
+       not unsigned int.  repeat_count is now count, not size_t.
+       All uses changed.
+       (struct Spec_list): state is now count, not unsigned int.
+       lengthis now count, not size_t.
+       n_indefinite_repeats is now size_t, not int.
+       has_equiv_class, has_char_class, and has_restricted_char_class
+       are now bool, not int.  All uses changed.
+       (struct E_string): s is now char *, not unsigned char *.
+       escaped is now bool *, not int *.  All uses changed.
+       (ES_MATCH): Remove macro, replacing with:
+       (es_match): New inline function.  All uses changed.
+       (squeeze_repeats, complement, posix_pedantic, truncate_set1,
+       translating): Now bool, not int.
+       (io_buf): Now char array, not unsigned char.
+       (SET_TYPE): Remove.  All uses replaced with bool.
+       (is_equiv_class_member, unquote, append_range, append_char_class,
+       append_equiv_class, find_closing_delim, star_digits_closebracket,
+       build_spec_list, parse_str, homogeneous_spec_list):
+       Now returns bool, not int.  All uses changed.
+       (is_equiv_class_member): Now inline.
+       (is_equiv_class_member, is_char_class_member, make_printable_str,
+       append_normal_char, append_range, append_repeated_char,
+       get_s2_spec_stats):
+       Args are now of proper integer type.
+       (unquote, look_up_char_class, make_printable_str,
+       append_equiv_class, build_spec_list, squeeze_filter):
+       Avoid unsigned char *p; gently convert *p to unsigned char instead.
+       (unquote, get_spec_stats): Do not jump past declarations and then
+       use them; C doesn't allow this in portable programs.
+       (make_printable_str): Check for overflow in size calculations.
+       (xmemdup): Remove.  All uses rewritten.
+       (find_bracketed_repeat): Args are now of proper pointer-to-integer
+       type.  Do not reject [c*0].  Use xstrtoumax, not xstrtoul.
+       (find_bracketed_repeat, star_digits_closebracket): Check that the
+       digits are not escaped.
+       (build_spec_list): Don't bother to copy opnd_str; not needed.
+       (build_spec_list, get_next): Simplify internal logic a bit.
+       (card_of_complement): Fix bug due to char overflow.
+       (get_spec_stats): Don't assume len fits into int.
+       Check for integer overflow.  Use abort() rather than assert(0).
+       (string2_extend): Fix subscript error: is_char_class_member (..., 255)
+       was being invoked.
+       (squeeze_filter): READER is never null now; simplify code.
+       READER arg now has a simpler type.  Remove unnecessary casts.
+       (squeeze_filter, main): Calls to fwrite improperly checked result
+       against zero, rather than against requested size.
+       (plain_read): New function.
+       (read_and_delete, read_and_xlate):
+       Remove unused filter arg, and don't worry about hit_eof.
+       Simplify by using plain_read.
+       (set_initialize): Args are bool and bool *, not int and SET_TYPE *.
+       (main): Always pass a non-null procedure to squeeze_filter.
+       Rewrite so that class_ok isn't needed.
+
+2004-05-29  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/shred.c (dosync): Ignore EBADF errors, as IRIX 6.5
+       fdatasync reports EBADF when syncing (unwritable) directories.
+       Problem reported by Albert Chin-A-Young in:
+       http://lists.gnu.org/archive/html/bug-coreutils/2004-05/msg00165.html
+
+2004-05-29  Jim Meyering  <jim@meyering.net>
+
+       * tests/chown/deref: Fix typo: use ls -ldo, not ls -ldg.
+       Patch from Albert Chin.
+
+       * src/ptx.c (text_buffer_maxend): Remove declaration of unused variable.
+
+       * src/remove.c (push_dir): Merge declaration and adjacent assignment
+       into a single statement.
+
+2004-05-28  Jim Meyering  <jim@meyering.net>
+
+       * src/remove.c (AD_mark_helper): Eliminate an unnecessary comparison.
+
+2004-05-22  Jim Meyering  <jim@meyering.net>
+
+       rm -r would get a failed assertion when run from an inaccessible
+       directory and with two or more command line arguments including an
+       absolute-named directory followed by a relative-named directory.
+
+       * src/remove.h (struct rm_options) [require_restore_cwd]: New member.
+       * src/remove.c (struct cwd_state): Define.
+       (AD_pop_and_chdir): Redesign interface so that a restore_cwd failure
+       can be detected by the caller.  Instead of returning a malloc'd
+       directory name, communicate it to caller via a new parameter, and
+       return an indication of whether restore_cwd failed.  Update caller.
+       Eliminate an unnecessary call to AC_stack_top.
+       (remove_dir): Change type of cwd_state parameter to `struct cwd_state'
+       so we can now communicate to caller whether/how functions like
+       restore_cwd have failed.  Update caller.
+       (rm_1): Fail if we've failed to restore the working directory
+       and the name of the next file to remove is `.'-relative.
+       (rm): Fail if the require_restore_cwd flag is true and we've
+       failed to restore the working directory.
+       * src/mv.c (rm_option_init): Initialize new member,
+       x->require_restore_cwd.
+       * src/rm.c (rm_option_init): Likewise.
+
+2004-05-21  Jim Meyering  <jim@meyering.net>
+
+       * tests/rm/inaccessible: New test for the above fix.
+       * tests/rm/Makefile.am (TESTS): Add inaccessible.
+
+       * src/remove.c (rm): Use free rather than XFREE.
+       (remove_dir): Use xmalloc, not XMALLOC.
+       (ds_init): Likewise.
+
+2004-05-20  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (sc_unmarked_diagnostics): Now that the unmarked
+       diagnostics in shred.c have been fixed, don't exempt shred.c from
+       this check.
+
+       * src/shred.c: Use translatable diagnostics, e.g.
+       change "%s: remove" to _("%s: failed to remove") and
+       change "%s: close"  to _("%s: failed to close").
+
+2004-05-17  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/shred.c (names): Bring back lower-case letters, "_", and
+       ".".  But continue to omit +, =, %, @, #, as they're either
+       shell metacharacters (for some shells) or are not in some
+       character sets, or (in the case of '%') must be a
+       metacharacter somewhere.
+
+2004-05-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/cut.c (cut_fields): Adjust to new signature of getndelim2.
+
+2004-05-17  Jim Meyering  <jim@meyering.net>
+
+       * src/shred.c (incname): Decrement `len' only once per loop iteration.
+
+       chgrp and chown now dereference symlinks by default, per POSIX.
+       Reported by Michal Politowski as http://bugs.debian.org/249177.
+
+       * src/chown-core.c (chopt_init): Affect each symlink referent by default.
+       * src/chown.c (usage): Update to reflect this.
+       * src/chgrp.c (usage): Likewise.
+       * NEWS: Describe the change.
+       Adapt tests accordingly.
+       * tests/chgrp/basic: Use -h where necessary to retain semantics.
+       * tests/chgrp/deref: Likewise.
+       * tests/chgrp/posix-H: Likewise.
+
+2004-05-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       In shred, check for errors from fdatasync more carefully.  If
+       fdatasync fails with errno==EINVAL, it means this implementation
+       does not support synchronized I/O for this file.  Do not report
+       this as an error, as (for example) AIX 5.2 fdatasync reports it
+       for raw disk devices.  Problem reported by Albert Chin in
+       <http://mail.gnu.org/archive/html/bug-gnu-utils/2004-05/msg00028.html>.
+
+       Check for write errors, though: the old code ignored them.
+       Improve error checking in a few other cases, too (e.g., close of a
+       directory).
+
+       Also, change several 'int' values to 'bool', so that the error
+       checking is a bit clearer.  Similarly, change unsigned values
+       to size_t where appropriate.
+
+       * src/shred.c: Include "dirname.h".
+       (datasync) [!HAVE_FDATASYNC]: Remove.
+       (dosync): New function.
+       (dopass): Use it.  Return 1 on write error, -1 on other error.
+       All callers changed.  Report write error if dosync does.
+       (do_wipefd, wipefd, wipename, wipefile): Return bool (true/false),
+       not int (0/-1).  All callers changed.  Return false if there's a
+       write error.
+       (incname): Return bool (true/false), not int (0/1).  Accept
+       size_t length, not unsigned.  All callers changed.  Do not
+       bother checking for non-digits; it can't happen.  Replace
+       recursion with iteration.
+       (wipename): Use dir_name, base_name, etc. instead of assuming
+       Unix file names.  Use size_t for length, not unsigned.
+       Report error if unlink or close fails.
+       (wipename, main): Use bool for booleans.
+
+       (names): Use only digits and uppercase letters, for greater
+       portability.
+
+2004-05-16  Jim Meyering  <jim@meyering.net>
+
+       * tests/chown/deref: New test for the yesterday's change.
+       * tests/chown/Makefile.am (TESTS): Add deref.
+
+2004-05-15  Jim Meyering  <jim@meyering.net>
+
+       chown --dereference did nothing when the owner/group of a
+       symlink matched the desired owner/group.  Reported by David Malone.
+       Also reported in 1999 as http://bugs.debian.org/39642.
+
+       * src/chown-core.c (change_file_owner): When --dereference has
+       been specified, and when processing a symlink, stat it to get the
+       owner and group of the referent.
+
+2004-05-14  Jim Meyering  <jim@meyering.net>
+
+       * man/pwd.x, man/echo.x, man/printf.x: Fix typo:
+       s/supercede/supersede/ reported by Andrew Fabbro.
+
+2004-05-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Improve performance of `sort -m' on large files, at the cost of
+       making some contrived examples unsafe.  POSIX allows this
+       optimization.  Performance problem reported by Jonathan Baker in
+       <http://mail.gnu.org/archive/html/bug-coreutils/2004-05/msg00071.html>.
+
+       * src/sort.c (first_same_file): Do not treat input pipes
+       differently from other files.
+       * doc/coreutils.texi (sort invocation): Document that "sort -m -o F"
+       might write F before reading all the input.
+       * NEWS: Likewise.
+
+2004-05-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/od.c (print_ascii, dump_strings): Use e.g. '\a' rather than
+       '\007', for portability to EBCDIC hosts.
+       * src/printf.c (print_esc_char): Likewise.
+       * src/tr.c (unquote, make_printable_str): Likewise.
+
+2004-05-12  Jim Meyering  <jim@meyering.net>
+
+       * src/remove.c (AD_pop_and_chdir): Move lstat-`.' into if-block
+       where the result is used.  This avoids one unnecessary lstat call
+       per command line argument.
+
+2004-05-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Don't assume that "make -C" works; Solaris "make" doesn't have -C.
+
+       * src/Makefile.am (all_programs.list): New rule, copied from
+       man/Makefile.am and tests/Makefile.am, except that we use the
+       system tr rather than ./tr and we don't use tr -s.
+       * tests/Makefile.am (all_programs): Use it.
+       * man/Makefile.am (all_programs): Likewise.  Renamed from programs,
+       for consistency.  All uses changed.
+
+2004-05-11  Jim Meyering  <jim@meyering.net>
+
+       * tests/rm/unread3: New test, for the above fix and today's
+       lib/save-cwd.c improvement.
+       * tests/rm/Makefile.am (TESTS): Add unread3.
+
+       * src/rm.c: Don't include "save-cwd.h".  It's no longer used.
+
+2004-05-10  Jim Meyering  <jim@meyering.net>
+
+       * tests/install/trap: New file.  Test for bug fix of 2004-04-18.
+       * tests/install/Makefile.am (TESTS): Add trap.
+
+       * src/remove.c (AD_push): Don't use errno in diagnostic about
+       `changed dev/ino'.
+
+       Remove these generated files from CVS.
+       * tests/cut/cut-tests, tests/date/date-tests, tests/join/join-tests:
+       * tests/ls/ls-tests, tests/pr/pr-tests, tests/tac/tac-tests:
+       * tests/tail/tail-tests, tests/test/test-tests, tests/tr/range-tests:
+       * tests/tr/tr-tests, tests/wc/wc-tests:
+
+2004-05-09  Jim Meyering  <jim@meyering.net>
+
+       * src/tr.c (unquote): Use xcalloc rather than xmalloc and
+       a loop initializing the just-allocated memory to zero.
+
+2004-05-08  Jim Meyering  <jim@meyering.net>
+
+       * tests/rm/no-give-up: New file; check for today's fix.
+       * tests/rm/Makefile.am (TESTS): Add no-give-up.
+
+2004-05-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix bug where "rm" gave up too easily, reported by Dan Jacobsen in
+       <http://mail.gnu.org/archive/html/bug-coreutils/2004-05/msg00013.html>.
+
+       * src/remove.c (remove_entry): Check for errno values like ENOENT
+       that show the file cannot be directory, instead of for errno
+       values like EPERM that show the file might be a directory.  This
+       is necessary because, when a single unlink() call has multiple
+       reasons to fail, it can set errno to any of those reasons; it's
+       only the rare errno value like ENOENT that excludes all the other
+       possible reasons to fail even when the file is a directory.
+       (remove_cwd_entries): Don't attempt chdir if the file is known
+       to not be a directory.
+       (remove_dir): Use the same method that remove_cwd_entries uses
+       (for some reason they differed).  Don't assert that saved_errno
+       must be EPERM; it might be just about anything.
+
+2004-05-06  Jim Meyering  <jim@meyering.net>
+
+       * src/id.c (xgetgroups): Use xnmalloc, rather than xmalloc.
+       Don't add `1' to the buffer size (it was to protect against malloc
+       implementations that fail to allocate a buffer of size zero).
+       That is no longer necessary, since we use a malloc wrapper
+       on such systems.
+
+       * src/wc.c (get_input_fstatus): Use xnmalloc, rather than xmalloc.
+       * src/head.c (elide_tail_bytes_pipe): Likewise.
+       * src/df.c (main): Likewise.
+       * src/shred.c (do_wipefd): Likewise.
+       * src/users.c (list_entries_users): Likewise.
+       * src/tail.c (main): Likewise.
+       * src/md5sum.c (main): Likewise.
+
+2004-04-29  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/df.c (show_disk, show_point): If several filesystems are
+       mounted on the same mount point, prefer the last one, not the first.
+       Problem reported by Christian Jones in
+       <http://mail.gnu.org/archive/html/bug-coreutils/2004-04/msg00200.html>.
+       (show_disk): Remove unused statp arg.  Return bool, not int.
+       (show_point): Rewrite to avoid gotos.  Use the same algorithm
+       for lofs and dummies for each pass through the mount table,
+       rather than subtly different algorithms (which are probably
+       inadvertent).
+
+2004-05-03  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.am (EXTRA_DIST): Add m4/ChangeLog, now that we no longer
+       have m4/Makefile*.
+
+2004-05-01  Jim Meyering  <jim@meyering.net>
+
+       When chown or chgrp is modifying the referent of a symlink,
+       use the chown(2) function, if possible.
+       * src/chown-core.c (change_file_owner): Don't hard-code the
+       open/fchown/close kludge here.  Use `chown' instead.
+       The chown function works just fine on conforming systems.
+       Other systems now go through the new chown wrapper that
+       resorts to the old kludge.
+
+       * src/chown-core.c (change_file_owner): Add a comment.
+
+2004-04-27  Jim Meyering  <jim@meyering.net>
+
+       * src/ptx.c: Make over 40 global extern variables `static'.
+       (syntax_table, re_syntax_table): Remove declarations of two unused
+       variables (they were exposed by the above change).
+
+       * src/du.c (G_fail, opt_nul_terminate_output): Declare `static'.
+       * src/ln.c (backup_type): Likewise.
+
+       * src/remove.c (rm): Add `extern' keyword.
+       * src/cp-hash.c (forget_created, remember_created)
+       (src_to_dest_lookup, remember_copied, hash_init, forget_all): Likewise.
+       * src/copy.c (dest_info_init, src_info_init, copy): Likewise.
+       * src/chown-core.c (chopt_init, chopt_free, gid_to_name)
+       (uid_to_name, chown_files): Likewise.
+
+       * src/Makefile.am (sc_tight_scope): New rule.
+       * Makefile.maint (sc_tight_scope): New rule.
+       (syntax-check-rules): Add it.
+
+2004-04-26  Jim Meyering  <jim@meyering.net>
+
+       * Use automake-1.8.4.  Regenerate dependent files.
+
+       * src/sort.c (limfield): Make a comment clearer.
+
+2004-04-25  Paul Eggert  <eggert@twinsun.com>
+
+       Fix POSIX-conformance bug: "sort -k 3,3.5b" is supposed to skip
+       leading blanks when computing the location of the field end;
+       it is not supposed to skip trailing blanks.  Solaris 8 "sort"
+       does conform to POSIX.  Also fix the documentation to clarify
+       this and related issues.
+
+       * doc/coreutils.texi (sort invocation): Mention -k earlier, so
+       that the options are in alphabetical order.  Describe how -b works
+       more-accurately; this involves fixing some examples, too.  Mention
+       what happens if the start field falls after an end field or after
+       a line end.  Warn about using -k without -b, -g, -M, -n, or -t.
+       Add an example of how to sort IPv4 addresses and Apache Common
+       Log Format dates.  Remove a duplicate example.
+       (Putting the tools together): Use separate options rather
+       than agglomerating them.
+       * src/sort.c (limfield): Use skipeblanks, not skipsblanks, to
+       decode whether to skip leading blanks.
+       (trailing_blanks): Remove.
+       (fillbuf, getmonth, keycompare): Don't trim trailing blanks.
+
+       * tests/pr/Test.pm: Fix typo in env_default comment.
+       * tests/sort/Test.pm: Likewise.
+       (18c, 18d): Reverse the order of output lines, so that the
+       test cases conform to POSIX.
+
+2004-04-22  Paul Eggert  <eggert@twinsun.com>
+
+       More signal-handling cleanup for ls.c.  Do not allow signals to
+       happen between arbitrary output bytes, as the
+       restore-default-color sequence can bollix up multibyte chars or
+       color-change sequences in the ordinary output.  Instead, process
+       signals only between printing a file name and changing the color
+       back to non_filename_text color.  That way, if the signal handler
+       changes the color (to the default), 'ls' will change it back when
+       'ls' continues (after being suspended).
+
+       Also, do not bother with signal-handling unless stdout is a
+       controlling terminal; this lets stdio buffer better when "ls
+       --color" is piped or sent to a file.
+
+       * src/ls.c (sigprocmask, sigset_t) [!defined SA_NOCLDSTOP]: New macros.
+       Do not include "full-write.h"; no longer needed.
+       (tcgetpgrp) [! HAVE_TCGETPGRP]: New macro.
+       (put_indicator_direct): Remove.  All callers changed to use
+       put_indicator.
+       (caught_signals, interrupt_signal, stop_signal_count): New vars.
+       (restore_default_color): Don't bother checking for put_indicator
+       failure.
+       (sighandler): Don't handle SIGTSTP; that's another handler now.
+       Simply set interrupt_signal to the signal, then exit.
+       (stophandler, process_signals): New functions.
+       (main): Don't output any color changes until _after_ the signal
+       handlers are set up.  This fixes a race condition where 'ls'
+       could be interrupted while initializing colors, and leaving the
+       terminal in an undesirable state.
+       Don't mess with signal-handling if standard output is not a
+       controlling terminal.
+       When exiting, restore the default color, then restore the
+       default signal handling, then act on any signals that weren't
+       acted on yet.
+       Do not print //DIRED// etc. in colors; this avoids the need
+       to catch signals when printing them.
+       (print_name_with_quoting): Process signals just before switching
+       color back to non_filename_text.
+
+2004-04-23  Jim Meyering  <jim@meyering.net>
+
+       Avoid segfault on systems for which SIZE_MAX != (size_t) -1.
+       * src/ls.c (quote_name): Use SIZE_MAX, not -1, in calls
+       of quotearg_buffer.  Patch by Mikulas Patocka.
+
+2004-04-18  Paul Eggert  <eggert@twinsun.com>
+
+       tee ignored SIGPIPE, but POSIX doesn't allow this.
+
+       * src/tee.c (main): Do not ignore SIGPIPE, as POSIX 1003.1-2001
+       does not allow this.  This undoes the 1996-10-24 patch.
+
+2004-04-18  Paul Eggert  <eggert@twinsun.com>
+
+       Signal-handling cleanup for coreutils.  Here are the highlights:
+
+        - csplit sometimes failed to remove files when interrupted.
+        - csplit didn't clean up if two signals arrived nearly simultaneously.
+        - install -s would infloop on System V if SIGCHLD was ignored.
+        - ls could incorrectly restore color if multiple signals
+          arrived nearly simultaneously.
+
+       * src/csplit.c (sigprocmask, sigset_t) [!defined SA_NOCLDSTOP]:
+       Define.
+       (filename_space, prefix, suffix, digits, files_created, remove_files):
+       Now volatile.
+       (caught_signals): New var.
+       (cleanup): Block signals while deleting all files.
+       (cleanup_fatal, handle_line_error, regexp_error):
+       Mark with ATTRIBUTE_NORETURN.
+       (create_output_file, close_output_file, interrupt_handler):
+       Block signals while changing the number of output files,
+       to fix some race conditions.
+       (delete_all_files): Do nothing if remove_files is zero.
+       Clear files_created.
+       (main): Don't mess with signals until after argument processing
+       is done.
+
+       * src/csplit.c (main): Rewrite signal-catching code to make it
+       similar to other coreutils programs.  When processing signals,
+       block all signals that we catch, but do not block signals that we
+       don't catch.  Avoid problems with unsigned int warnings.
+       * src/ls.c (main): Likewise.
+       * src/sort.c (main): Likewise.
+
+       * src/csplit.c (interrupt_handler):
+       Use void, not (obsolete) RETSIGTYPE.
+       * src/shred.c (sigill_handler, isaac_seed_machdep): Likewise.
+
+       * src/csplit.c (interrupt_handler) [defined SA_NOCLDSTOP]:
+       Use simpler "signal (sig, SIG_DFL)" rather than sigaction equivalent.
+       * src/ls.c (sighandler) [defined SA_NOCLDSTOP]: Likewise.
+       * src/sort.c (sighandler) [defined SA_NOCLDSTOP]: Likewise.
+       * src/nohup.c (main) [!defined _POSIX_SOURCE]: Likewise, except
+       for SIG_IGN.
+       * src/tee.c (main) [!defined _POSIX_SOURCE]: Likewise.
+
+       * src/install.c: Include <signal.h>.
+       (main) [defined SIGCHLD]: Set SIGCHLD handler to the default, if -s is
+       given, since System V fork+wait does not work if SIGCHLD is ignored.
+
+       * src/ls.c (sighandler) [!defined SA_NOCLDSTOP]: Reset signal
+       handler to self, not to SIG_IGN, since SIGTSTP can be received
+       more than once.
+       (main): Use SA_RESTART, as that is simpler than checking for EINTR
+       failures all over the place.
+
+2004-04-20  Jim Meyering  <jim@meyering.net>
+
+       * src/remove.c (is_empty_dir): Clarify comment.
+
+       * man/help2man: Accept new option: --program-name=NAME, so that we
+       can override the one in --version output.  This is needed solely
+       so that test.1 doesn't refer to `[' as the program name.
+       Reported by Benjamin Cutler as http://bugs.debian.org/205251.
+       * man/Makefile.am (.x.1): Use help2man's new --program-name option.
+
+       * src/pwd.c: Don't include pathmax.h; system.h already does it.
+
+       * src/cut.c (cut_fields): Free buffer upon getndelim2 failure.
+
+2004-04-19  Jim Meyering  <jim@meyering.net>
+
+       * src/shred.c (isaac_seed_start) [AVOID_USED_UNINITIALIZED_WARNINGS]:
+       Initialize a buffer to avoid warnings from tools like valgrind.
+
+       * Makefile.maint (sc_trailing_blank): New rule.
+       (syntax-check-rules): Add it.
+       * .x-sc_trailing_blank: New file.
+
+       Make pwd work even if the resulting name is so long that getcwd fails.
+       * src/pwd.c: (path_free, path_init, path_prepend): New functions.
+       (nth_parent, find_dir_entry, robust_getcwd): New functions.
+       (main): First try getcwd, then, upon failure, robust_getcwd.
+
+2004-04-18  Jim Meyering  <jim@meyering.net>
+
+       * src/who.c (print_user): Use xrealloc here, rather than
+       unchecked realloc.  Remove anachronistic casts.
+
+       * src/remove.c (full_filename_): Don't leak upon failed realloc.
+
+       * src/system.h (readdir_ignoring_dot_and_dotdot): New inline function,
+       from remove.c.
+       * src/remove.c (readdir_ignoring_dotdirs): Move function to system.h,
+       renaming it.  Update uses.
+
+2004-04-17  Jim Meyering  <jim@meyering.net>
+
+       * configure.ac: Depend on automake-1.8.3.
+
+       * src/join.c (add_file_name): Declare function to be `static'.
+       (string_to_join_field): Likewise.
+       * src/remove.c (ds_init, ds_free): Likewise.
+
+       * Makefile.maint (sc_prohibit_jm_in_m4): New rule.
+       (syntax-check-rules): Add to the list.
+
+2004-04-13  Paul Eggert  <eggert@twinsun.com>
+
+       Use page-aligned buffers whenever we bother to do I/O using buffer
+       sizes that are tailored for the files.
+
+       * src/cat.c: Include getpagesize.h.
+       * src/copy.c: Likewise.
+       * src/shred.c: Likewise.
+       * src/split.c: Likewise.
+       * src/cat.c (main): Align I/O buffers to page boundaries.
+       * src/copy.c (copy_reg): Likewise.
+       * src/shred.c (dopass): Likewise.
+       * src/split.c (main): Likewise.
+       * src/dd.c (ROUND_UP_OFFSET, PTR_ALIGN): Remove.
+       All uses replaced by ptr_align.
+       * src/od.c (gcd, lcm): Remove; now in system.h.
+       * src/system.h (gcd, lcm, ptr_align): New functions, moved from od.c.
+
+2004-04-14  Jim Meyering  <jim@meyering.net>
+
+       Remove m4/Makefile.am: it's no longer needed, with newer automake
+       * configure.ac (AC_CONFIG_FILES): Remove m4/Makefile.in from the list.
+       * Makefile.am (SUBDIRS): Remove `m4' from the list.
+
+2004-04-13  Jim Meyering  <jim@meyering.net>
+
+       * configure.ac: Change `jm_' in AC_DEFINE'd names to `gl_'.
+
+2004-03-27  Paul Eggert  <eggert@twinsun.com>
+
+       * NEWS: cp -pu and mv -u (when copying) now take the destination
+       file system time stamp resolution into account.
+       * doc/coreutils.texi (mv invocation): Document this.
+       (cp invocation): Document -u (it was missing!) with new behavior.
+
+       * src/copy.c: Include "utimecmp.h".
+       (copy_internal): Compare time stamps using utimecmp rather than
+       MTIME_CMP.
+
+2004-04-09  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (.re-list): New rule/file, to replace
+       hard-coded list of header file names.
+       (sc_system_h_headers): Use the new file.
+       Don't look for sys2.h anymore.
+
+       * src/system.h: Include new "stat-macros.h" rather than hard-coding
+       all of its macro definitions -- the list was slightly out of date.
+       Suggestion from Dmitry V. Levin.
+
+2004-04-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * NEWS: Remove noctty flag from dd.  Suggested by Philippe Troin.
+       * doc/coreutils.texi (dd invocation): Likewise.
+       * src/shred.c (O_NOCTTY): Remove redundant decl.
+       * src/dd.c (flags, usage): Remove noctty flag.
+       (main): Always use O_NOCTTY when opening files.
+
+2004-04-08  Jim Meyering  <jim@meyering.net>
+
+       * src/dd.c (dd_copy): Mark two diagnostics for translations.
+       (set_fd_flags): Undo part of today's change: it's a little
+       cleaner -- and more efficient in the common case -- to go
+       ahead and OR in the -1 when fcntl fails.
+
+       * Makefile.maint (sc_dd_max_sym_length): New target.
+       (syntax-check-rules): Add it.
+
+       * src/md5sum.c (PROGRAM_NAME) [algorithm == ALG_SHA1]:
+       Correct spelling: s/shasum/sha1sum.  Reported by Jesse Kornblum.
+
+       * src/dd.c (set_fd_flags): Don't OR in -1 when fcntl fails.
+       Rename parameter, flags, to avoid shadowing global.
+       (LONGEST_SYMBOL): Tweak comment.
+
+2004-04-07  Paul Eggert  <eggert@twinsun.com>
+
+       * NEWS: New dd conv= symbols nocreat, excl, fdatasync, fsync,
+       and new dd options iflag= and oflag=.
+       * src/dd.c (usage): Likewise.
+       * src/Makefile.am (dd_LDADD, shred_LDADD): Add fdatasync's lib.
+       * src/dd.c (fdatasync) [!HAVE_FDATASYNC]: New macro.
+       (C_NOCREAT, C_EXCL, C_FDATASYNC, C_FSYNC): New macros.
+       (input_flags, output_flags): New vars.
+       (LONGEST_SYMBOL): New macro.
+       (struct symbol_value): Renamed from struct conversion.  Members
+       symbol and value renamed from convname and conversion.  The
+       symbol value is now an array instead of a pointer; this saves
+       a bit of space and time in practice.  All uses changed.
+       (conversions): Add nocreat, excl, fdatasync, fsync.  Now const.
+       (flags): New constant array.
+       (iflag_error_msgid, oflag_error_msgid): New constants.
+       (parse_symbols): Renamed from parse_conversion and generalized
+       to handle either conversion or flag symbols.
+       (scanargs): Adjust uses of parse_symbols accodingly.  Add
+       support for iflag= and oflag=.  Reject attempts to use
+       both excl and nocreat.
+       (set_fd_flags): New function.
+       (dd_copy): Just return X rather than calling quit (X), since our
+       caller invokes quit with the returned value.  Add support for
+       fdatasync and fsync.
+       (main): Add support for iflag=, oflag=, and new conv= symbols.
+       * src/system.h (O_DIRECT, O_DSYNC, O_NDELAY, O_NOFOLLOW,
+       O_RSYNC, O_SYNC): Define to 0 if not already defined.
+
+       * NEWS: Remove duplicate mention of BLOCKSIZE.
+
+2004-04-02  Andreas Schwab  <schwab@suse.de>
+
+       * src/stty.c: Add support for IUTF8 input flag.
+
+2004-04-06  Jim Meyering  <jim@meyering.net>
+
+       * src/system.h (makedev) [mkdev && !makedev]: Define in terms of mkdev.
+       Interix spells it `mkdev'.  Reported by Mark Funkenhauser.
+
+2004-04-04  Jim Meyering  <jim@meyering.net>
+
+       A specified format is no longer automatically newline terminated.
+       If you want a newline at the end of your format, use `\n'.
+       * src/stat.c (print_it): Don't print a newline at the end of
+       every format.
+       (do_statfs): Add a newline at end of each default format string.
+
+2004-03-30  Paul Eggert  <eggert@twinsun.com>
+
+       * src/nohup.c (main): Adjust to new calling convention
+       for set_cloexec_flag.
+
+2004-03-31  Jim Meyering  <jim@meyering.net>
+
+       * tests/Fetish.pm (run_tests): Remove `.orig' file.
+       Remove debugging diagnostic.
+
+       Specifying an invalid --width=N (-w) or --gap-size=N (-g)
+       would not elicit an error.
+       * src/ptx.c: Include "xstrtol.h" and "quotearg.h".
+       (main): Don't use atoi.  Use xstrtoul instead.
+
+2004-03-30  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (sc_prohibit_atoi_atof): New rule.
+       (syntax-check-rules): Add it.
+       * .x-sc_prohibit_atoi_atof: New file.
+
+2004-03-29  Jim Meyering  <jim@meyering.net>
+
+       * tests/du/files0-from: Use new OUT_SUBST directive, so that this
+       test is not sensitive to system-dependent block size differences.
+       Prompted by a report of Solaris 8 differences from Paul Eggert.
+
+       * tests/Fetish.pm: Accept new directives: OUT_SUBST, ERR_SUBST.
+       Rename `%tmp' to `%actual'.  Reverse order of last two args to
+       _compare_files (to $actual, $expected) so as to match declaration.
+
+2004-03-28  Paul Eggert  <eggert@twinsun.com>
+
+       Fix some gotchas encountered when porting to Solaris 8, using
+       the Forte 6u2 compiler.
+
+       * src/hostname.c [HAVE_SETHOSTNAME && !defined sethostname]:
+       Declare sethostname, since no Solaris header does it.
+       * src/who.c: Include "vasprintf.h", for asprintf.
+
+2004-03-28  Jim Meyering  <jim@meyering.net>
+
+       Minor optimization:
+       * src/du.c (process_file): Don't record dev/inode for directories.
+
+       Under some circumstances, without -c, du would mistakenly count the
+       space of hard-linked files, not just the first one it encountered.
+       Reported by Anthony Thyssen.
+       * src/du.c (du_files): Don't ever clear the set of `seen' dev/inodes.
+
+       * src/du.c: Rename global `print_totals' to `print_grand_total'.
+
+       * src/du.c (main): Rearrange filtering loop to be a tiny bit
+       more efficient.
+
+       * src/chown-core.c: Don't include savedir.h -- no longer needed.
+       * src/chmod.c: Likewise.
+
+2004-03-25  Jim Meyering  <jim@meyering.net>
+
+       * src/du.c (main): Remove now-unused declaration of `i'.
+
+2004-03-24  Paul Eggert  <eggert@twinsun.com>
+
+       * src/du.c (main): Filter out file names of length zero before
+       invoking fts, so that they don't cause fatal errors.
+
+2004-03-25  Jim Meyering  <jim@meyering.net>
+
+       * tests/du/files0-from (zero-len): Add a test for the above.
+
+2004-02-25  Paul Eggert  <eggert@twinsun.com>
+
+       * NEWS: New environment var BLOCKSIZE.
+       * lib/human.c (humblock): Support BLOCKSIZE as well as BLOCK_SIZE.
+       * tests/envvar-check: Test for it.  Factor the code to simplify it.
+
+2004-03-23  Paul Eggert  <eggert@twinsun.com>
+
+       * NEWS: Shorten the du --files0-from announcement, and say
+       "NUL-terminated" rather than "NUL-separated".
+       * src/du.c (EXPECTED_BYTES_PER_FILE_NAME, DEFAULT_PROJECTED_N_FILES):
+       Remove: not used.
+       (usage): Say "NUL-terminated", not "NUL-separated".
+       (main): Check for I/O error when istream is closed.
+       Allow --files0-from=F even if F is empty; this specifies no files.
+       (du_files): Now that we allow the list of files to be empty,
+       handle that case.
+       * tests/du/files0-from: Adjust to above changes to src/du.c.
+
+2004-03-24  Jim Meyering  <jim@meyering.net>
+
+       * tests/tail-2/assert: Avoid race condition that could cause
+       spurious failure.  Based on a patch from Andreas Schwab.
+
+2004-03-23  Jim Meyering  <jim@meyering.net>
+
+       * src/du.c (main): Free the hash table, too.
+
+2004-03-22  Jim Meyering  <jim@meyering.net>
+
+       * man/Makefile.am (.x.1): Remove --info-page= option, reverting
+       the change of 2004-01-22.  I can no longer reproduce the problem
+       that prompted that change, and `info coreutils pr' would display the
+       `printing text' section of the manual, not the one on `pr invocation'.
+
+       * tests/du/files0-from (nul-1, nul-2): Adjust expected diagnostics
+       to match corrected output.
+
+       * src/du.c: Include "readtokens0.h" rather than "readtokens.h".
+       (main): Use readtoken0 functions rather than readtokens.
+       Don't use errno when diagnosing readtokens0 failure.
+       Fix off-by-one error in the token number reported in a diagnostic.
+       (du_files): Return bool, rather than int.
+       (main): Call readtokens0_free.
+
+2004-03-21  Jim Meyering  <jim@meyering.net>
+
+       * src/remove.c (ds_free): Plug a small leak.
+
+       * tests/Fetish.pm: Fix typo in comment.
+
+2004-03-07  Jim Meyering  <jim@meyering.net>
+
+       * NEWS: du accepts a new option --files0-from=FILE, where FILE
+       contains a list of NUL-separated file names.
+
+       * src/du.c: Include "readtokens.h".
+       (usage): Describe the new option, and adjust the `Usage':
+       with this option, no FILE may be specified on the command line.
+       (main): Handle the new option.
+
+       * tests/du/files0-from: New tests, for the above.
+       * tests/du/Makefile.am (TESTS): Add files0-from.
+
+       * src/factor.c (do_stdin): Reflect changes in use of readtoken.
+       * src/tsort.c (tsort): Likewise.
+
+2004-02-29  Paul Eggert  <eggert@twinsun.com>
+
+       * NEWS: Add support for a new notation @N to get_date to represent
+       the time stamp with numeric value N.  Improve support for
+       fractional time stamps.  date's -d and -f options now accept them.
+       Likewise for touch -t.  date has a new option --iso-8601=ns.
+
+       * doc/coreutils.texi (touch invocation):
+       Describe use of fractional seconds.
+       (date invocation, Options for date): Likewise.
+       * doc/getdate.texi (General date syntax, Time of day items): Likewise.
+       * doc/coreutils.texi (date invocation): Mention effect of LC_TIME.
+       (Options for date): Describe new --iso-8601=ns option.
+
+       * doc/getdate.texi: Add copyright notice.  Change getdate to
+       get_date when talking about the function name.
+       (Seconds since the Epoch): New section, containing the time_t
+       info moved from Date input formats section, along with new
+       info about the @ syntax.  Mention negative time stamps,
+       fractional time stamps, and leap seconds.
+       (General date syntax): Modernize examples a bit to reflect new
+       features.
+       (General date syntax, Relative items in date strings):
+       Use ' rather than " to quote formats.
+       (Time of day items): Add an example with fractional seconds.
+       Describe fractional-second syntax.
+
+       * src/Makefile.am (touch_LDADD): New macro, since `touch' now
+       needs clock_gettime.
+
+       * src/date.c (enum Time_spec): New enum TIME_SPEC_NS.
+       (time_spec_string, time_spec, show_date): Support it.
+       (usage): Remove description of -ITIMESPEC, as it's obsolete and
+       confusing.  Mention --iso-8601=ns.
+       (batch_convert): getline returns ssize_t, not int.
+
+       * src/touch.c (newtime): Now an array of two timespecs, one
+       for access and one for modification.
+       (ref_stats): Remove.
+       (get_reldate): Use get_date's parameter profile.
+       (touch, main): Adjust to above changes.
+       (main): Work even if tm_year == INT_MAX (so long as long int is wider).
+       Use gettime instead of gettimeofday, for new get_date signature.
+
+       * tests/date/Test.pm (test_vector): New tests epoch, ns-10, ns-max32,
+       ns-relative.
+
+2004-03-15  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (alpha beta major): `Make' the emit_upload_commands
+       target before updating $(prev_version_file).
+
+       * tests/misc/date-sec: New file, to test for just-fixed bug in date.
+       See today's change in lib/getdate.y.
+       * tests/misc/Makefile.am (TESTS): Add date-sec.
+
+2004-03-14  Jim Meyering  <jim@meyering.net>
+
+       * announce-gen (print_changelog_deltas): Use `.sig' suffix for
+       signature files, not `.asc'.  Reported by angico@yahoo.com.
+
+2004-03-13  Jim Meyering  <jim@meyering.net>
+
+       * src/cp.c (do_copy): Tweak wording in a diagnostic.
+       Suggestion from Karl Berry.
+       Include "quoatearg.h".
+       (do_copy): Use quotearg_colon (not quote) for diagnostics
+       that begin with `"%s:'.
+
+       * src/nl.c (usage): Specify that nl uses _basic_ regular expressions.
+       Suggestion from Dan Jacobson.
+
+2004-03-12  Jim Meyering  <jim@meyering.net>
+
+       * Version 5.2.1.
+
+       Sometimes, when source and destination partition are different,
+       mv mistakenly fails to preserve a hard link.  Reported by IIDA Yosiaki.
+
+       * src/copy.c: When moving a set of N hard-linked files between
+       partitions, via two or more command line arguments where the
+       command line argument containing the Nth link contains no other
+       link to that same file, mv would mistakenly copy the file, rather
+       than hard-linking it to the other(s).  That happens because when the
+       final link is processed, its link count has been reduced to 1 since
+       the other links have been `copied' to the destination partition
+       and the source links have been removed.
+       (copy_internal): When in move mode, use the source dev/inode
+       pair to look up destination name even when st_nlink == 1.
+       * src/cp-hash.c (src_to_dest_lookup): New function.
+       * src/cp-hash.h (src_to_dest_lookup): Add prototype.
+       * tests/mv/part-hardlink: New file.  Test for the above fix.
+       * tests/mv/Makefile.am (TESTS): Add part-hardlink.
+
+       * announce-gen: Sync with autoconf.
+
+       * tests/ls/time-1: Exit 77 (not 1) if we can't set up for the test.
+       This was triggered on a Linux-2.2.19 system using a file system
+       NFS-mounted from some sort of Sun.
+
+2004-03-11  Jim Meyering  <jim@meyering.net>
+
+       * Use automake-1.8.3.  Regenerate dependent files.
+
+2004-03-10  Jim Meyering  <jim@meyering.net>
+
+       * tests/du/deref-args: Also convert sizes in the 70-79 kB range,
+       so that this test works with SELinux-enabled systems.
+       Based on a patch from Tim Waugh.
+
+       `join -1 x' would give a misleading diagnostic
+       * src/join.c (string_to_join_field): Report that a non-numeric field
+       number is invalid, rather than `so large that it is not representable'.
+       * tests/join/Test.pm (invalid-j): New partial test for the above fix.
+
+2004-03-06  Jim Meyering  <jim@meyering.net>
+
+       cp --sparse=always sparse-image-file.img /dev/hda1 could
+       produce an invalid copy on the destination device.
+
+       * src/copy.c (copy_reg): Even with --sparse=always, try to
+       make `holes' only if the destination is a regular file.
+       Reported by Szakacsits Szabolcs.
+
+2004-03-03  Paul Eggert  <eggert@twinsun.com>
+
+       * src/nohup.c (main): Don't invoke set_cloexec_flag with
+       a file descriptor of -1.
+
+2004-03-02  Dmitry V. Levin  <ldv@altlinux.org>
+
+       * src/nohup.c: Include "cloexec.h".
+       (main): Set the copy of stderr to close on exec.
+
+2004-03-01  Paul Eggert  <eggert@twinsun.com>
+
+       * configure.ac: Include <signal.h> when checking for strsignal,
+       sys_siglist, and friends.  Problem reported by Tony Leneis in
+       <http://mail.gnu.org/archive/html/bug-coreutils/2004-02/msg00136.html>.
+
+2004-02-25  Paul Eggert  <eggert@twinsun.com>
+
+       * tests/du/deref-args, tests/du/exclude, tests/du/slash:
+       * tests/du/trailing-slash: Run envvar-check in case BLOCK_SIZE
+       etc. are set.
+
+2004-02-23  Paul Eggert  <eggert@twinsun.com>
+
+       * NEWS: Document how chown's USER.GROUP argument is now parsed.
+
+2004-02-23  Jim Meyering  <jim@meyering.net>
+
+       * src/seq.c (usage): Remove stray space after \n in --help output.
+
+2004-02-22  Jim Meyering  <jim@meyering.net>
+
+       * src/du.c (usage): Separate -H and --si.  Say that the meaning
+       of -H will soon change to that of --dereference-args (-D).
+
+2004-02-21  Jim Meyering  <jim@meyering.net>
+
+       * src/comm.c (usage): Tell what comm does when there are no options.
+       Reword in terms of FILE1 and FILE2 rather than `left file' and
+       `right file'.  Suggestion from Dan Jacobson.
+
+2004-02-15  Paul Eggert  <eggert@twinsun.com>
+
+       Fix some POSIX-conformance bugs in expr.
+
+       * NEWS: document the following changes to src/expr.c.
+       * doc/coreutils.texi (expr invocation): Likewise.
+       Document what forms integers may take, and say "integer"
+       consistently instead of "number".  Warn about operands
+       that "expr" can misinterpret, and how to work around the
+       problem.
+       * src/expr.c (eval, eval7, eval6, eval5, eval4, eval3, eval2, eval1):
+       Accept a bool argument specifying whether to evaluate the
+       expression.  This is to allow short-circuit evaluation.  All
+       callers changed.
+       (null): Report that a string is zero even if it has
+       a form like "-0" or "00".
+       (eval1, eval): Use short-circuit evaluation for | and &.
+       (eval): Return 0 if both arguments are null or zero, instead
+       of returning the first argument.
+       * tests/expr/basic: Add some tests for the above.
+
+2004-02-17  Jim Meyering  <jim@meyering.net>
+
+       * Version 5.2.0.
+
+       `make check' from a build inside a chroot environment would fail
+       * tests/help-version: Specify an argument (`/') for df, in the
+       unusual event that there is no valid entry in /etc/mtab.
+       Likewise for id: add the -u option, so we don't get spurious
+       failures when there are no user or group names.
+       Patch by Tim Waugh.
+
+       * src/sort.c (usage) [-u]: Add punctuation so that the description in
+       the help2man-generated (line-joined) man page is more readable.
+       Reported by Tim Waugh.
+       [-T]: Add a semicolon, for the same reason.
+
+2004-02-15  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.am (dist-hook): Qualify target with $(srcdir)/ prefix.
+
+2004-02-11  Jim Meyering  <jim@meyering.net>
+
+       * tests/Makefile.am.in ($(srcdir)/Makefile.am): Use more portable
+       $(srcdir)/../Makefile.am.in, rather than $<.
+       Suggestion from Michael Elizabeth Chastain.
+
+2004-02-10  Jim Meyering  <jim@meyering.net>
+
+       * config/install-sh: Make this script executable.
+       * Makefile.am (dist-hook): New target, to ensure that config/install-sh
+       is executable.  Otherwise, on systems that lack a suitable install
+       binary, `make install' would fail, because of the way this script
+       is invoked (without `$SHELL ' prefix).
+       Reported by Bob Proulx.
+
+2004-02-08  Jim Meyering  <jim@meyering.net>
+
+       * Version 5.1.3.
+
+       * tests/rm/rm5: Avoid triggering a bug in OSF/Tru64's sed
+       that would cause an unwarranted test failure.
+       * tests/rm/rm3: Likewise.
+
+2004-02-07  Jim Meyering  <jim@meyering.net>
+
+       Remove xstat function pointer member.  The way it was used was not
+       portable, since some systems (OSF V5.1, Solaris 2.5.1) provide static
+       inline `stat' and `lstat' functions, thus making the tests of
+       `xstat == lstat' in copy.c always fail.
+       * src/copy.h (struct cp_options) [xstat]: Remove member.
+       (XSTAT): New macro.
+       * src/copy.c (copy_dir): Set `.dereference' member, not .xstat.
+       (copy_internal): Use `XSTAT (x, ...)' in place of `*(x->xstat) (...)'.
+       Use `x->dereference == DEREF_NEVER' in place of `x->xstat == lstat'.
+       (valid_options): Remove now-obsolete FIXME comments.
+
+       * src/cp.c (re_protect): Use `XSTAT (x, ...)' in place of
+       `*(x->xstat) (...)'.
+       (do_copy): Declare/use local xstat rather than x->xstat.
+       (main): Remove code that set x.xstat.
+       * src/mv.c (cp_option_init): Don't initialize xstat member.
+       * src/install.c (cp_option_init): Likewise.
+
+       * Makefile.cfg (gnu_ftp_host-alpha, etc.): Un-factor .gnu.org suffix,
+       so that emit_upload_commands can use these variables, too.
+
+2004-02-06  Jim Meyering  <jim@meyering.net>
+
+       * tests/rm/deep-1: Remove `du' stack space test.
+       Apparently, `ulimit -s N' isn't portable enough.
+       This test will be restored (with a guard against losing ulimit)
+       in its own file later.
+
+       * tests/rm/deep-1 (deep): Remove progress-style diagnostics,
+       since this test doesn't take long enough to merit them.
+       Run du on $tmp (the containing dir), not $deep, the full path to leaf.
+
+       * Makefile.maint (signatures): Remove definition.
+       Now, automake's gnupload handles this.
+       (%.sig: %): Remove now-unused rule.
+       (rel-files): Use automake's $(DIST_ARCHIVES), rather than
+       `$(distdir).tar.bz2 $(distdir).tar.gz'.
+       (emit-upload-commands): Adjust to use gnupload.
+
+2004-02-05  Jim Meyering  <jim@meyering.net>
+
+       * src/system.h (ST_TIME_CMP_NS, ST_TIME_CMP): Remove definitions.
+       (ATIME_CMP, CTIME_CMP, MTIME_CMP, TIMESPEC_NS): Likewise.
+       Now, those are all defined in timespec.h.
+       Include timespec.h.
+
+       * src/date.c: Don't include timespec.h, now that system.h does it.
+
+2004-02-02  Paul Eggert  <eggert@twinsun.com>
+
+       Don't dump core if localtime returns NULL (possible on
+       hosts with 64-bit time_t and 32-bit int).
+       * src/date.c: Include "inttostr.h".
+       (batch_convert, main):
+       If time conversion fails, exit with nonzero status.
+       (show_date): Return int to report conversion failure.
+       Print the time as an int if localtime fails.
+       * src/uptime.c: Print "??" if the current clock can't
+       be converted by localtime.  This won't happen until the year
+       2*31 + 1900, but we don't want to dump core even if the current
+       clock has the wrong value.
+
+       * src/stat.c: Include "inttostr.h".
+       (human_time): Print the date/time as a number of seconds since the
+       epoch if it can't be converted by localtime.  This is better than
+       just saying "invalid", and is consistent with what "ls" does.
+       Don't dump core if the year has more than 48 digits; this isn't
+       possible on any contemporary host, but we might as well do it right.
+
+2004-01-31  Paul Eggert  <eggert@twinsun.com>
+
+       * src/stat.c (human_time): Accept time rather than
+       pointer-to-const-time parameter, for clarity.  All callers changed.
+
+2004-02-02  Jim Meyering  <jim@meyering.net>
+
+       * src/stat.c (do_stat): Remove extra trailing newline from
+       default formats.  Reported by Nelson H. F. Beebe.
+
+       Print actual fractional seconds in time stamps, not just `.00000000'.
+       * src/stat.c (human_time): Add and use new parameter, t_ns.
+       (print_stat): Update callers.
+       * src/ls.c (TIMESPEC_NS): Remove definition.
+       * src/system.h (TIMESPEC_NS): Define here, instead, now that stat.c
+       also uses this macro.
+       Nelson H. F. Beebe noticed that ls --full-time printed nonzero
+       fractional seconds for files on an XFS file system, but that stat's
+       fractional seconds were always zero.
+
+2004-01-28  Paul Eggert  <eggert@twinsun.com>
+
+       * src/seq.c (print_numbers): Use 'double' for loop index, not
+       'int', to avoid problems with integer overflow.  On almost all
+       machines 'double' works in every case where 'int' works, and
+       it works on other cases besides.
+
+2004-01-27  Jim Meyering  <jim@meyering.net>
+
+       * src/seq.c (usage): Mention that if INCREMENT is omitted,
+       it defaults to 1, even when FIRST is larger than LAST.
+       Reword so as not to exclude the possibility that INCREMENT be zero.
+
+2004-01-25  Jim Meyering  <jim@meyering.net>
+
+       * Version 5.1.2.
+
+       * Makefile.maint (signatures): Comment out definition.
+
+2004-01-23  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (header_regexp): Add exitfail.
+
+       * man/Makefile.am (EXTRA_DIST): Add help2man.
+       Reported by Nelson H. F. Beebe.
+
+       * man/Makefile.am (.x.1): Prefix help2man invocation with `$(PERL) --'
+       so it works on systems with Perl installed somewhere other than in
+       /usr/bin.
+
+       * src/paste.c (paste_parallel): Declare local, chr, to be of type
+       `int', not `char', since it must hold EOF.  This bug would make
+       paste infloop on some systems.  Test failures reported by
+       Nelson H. F. Beebe and Christian Krackowizer.
+
+2004-01-22  Jim Meyering  <jim@meyering.net>
+
+       * tests/rmdir/fail-perm: New file.  Test for just-fixed rmdir bug.
+       * tests/rmdir/Makefile.am (TESTS): Add fail-perm.
+
+       * man/help2man: Fix it so using --info-page='coreutils PROG' works.
+       * man/Makefile.am (.x.1): Invoke our own (tweaked) copy of help2man.
+       Use --info-page='coreutils PROG' option.
+       Now, readlink.1 refers the user to `info coreutils readlink'
+       rather than to `info readlink'.  Reported by Matt Swift.
+
+2004-01-21  Paul Eggert  <eggert@twinsun.com>
+
+       Exit status cleanup.
+
+       * src/basename.c (usage): Use EXIT_SUCCESS, not 0, for clarity.
+       * src/cat.c, src/chgrp.c, src/chmod.c, src/chown.c, src/chroot.c,
+       * src/cksum.c, src/comm.c, src/cp.c, src/csplit.c, src/cut.c,
+       * src/date.c, src/dd.c, src/df.c, src/dircolors.c, src/dirname.c,
+       * src/du.c, src/echo.c, src/env.c, src/expand.c, src/expr.c,
+       * src/factor.c, src/fmt.c, src/fold.c, src/head.c, src/hostid.c,
+       * src/hostname.c, src/id.c, src/install.c, src/join.c, src/kill.c,
+       * src/link.c, src/ln.c, src/logname.c, src/ls.c, src/md5sum.c,
+       * src/mkdir.c, src/mkfifo.c, src/mknod.c, src/mv.c, src/nice.c,
+       * src/nl.c, src/nohup.c, src/od.c, src/paste.c, src/pathchk.c,
+       * src/pinky.c, src/pr.c, src/printenv.c, src/printf.c, src/pwd.c,
+       * src/rm.c, src/rmdir.c, src/seq.c, src/setuidgid.c, src/shred.c,
+       * src/sleep.c, src/sort.c, src/split.c, src/stat.c, src/stty.c,
+       * src/su.c, src/sum.c, src/sync.c, src/tac.c, src/tail.c, src/tee.c,
+       * src/test.c, src/touch.c, src/tr.c, src/tsort.c, src/tty.c,
+       * src/uname.c, src/unexpand.c, src/uniq.c, src/unlink.c, src/uptime.c,
+       * src/users.c, src/wc.c, src/who.c, src/whoami.c, src/yes.c: Likewise.
+
+       * src/cat.c (usage): Don't bother normalizing exit status
+       since the arg is already the correct exit status now.
+       * src/cksum.c, src/comm.c, src/csplit.c, src/cut.c,
+       * src/dircolors.c, src/expand.c, src/fmt.c, src/fold.c, src/head.c,
+       * src/join.c, src/md5sum.c, src/nl.c, src/od.c, src/paste.c,
+       * src/pr.c, src/split.c, src/sum.c, src/tac.c, src/tail.c, src/tr.c,
+       * src/tsort.c, unexpand.c, src/src/uniq.c, src/src/wc.c: Likewise.
+
+       * src/chown.c (main): Removed unused local 'fail'.
+
+       * src/chroot.c (CHROOT_FOUND_BUT_CANNOT_INVOKE, CHROOT_FAILURE):
+       Remove.
+
+       * src/chroot.c (main): Initialize exit_failure to EXIT_FAIL.
+       * src/env.c, src/nice.c, src/su.c: Likewise.
+       * src/nohup.c (main): Likewise, to NOHUP_FAILURE.
+       * src/setuidgid.c (main): Likewise, to SETUIDGID_FAILURE.
+       * src/expr.c (main): Use initialize_exit_failure rather than
+       setting exit_failure directly; this optimizes away redundant
+       assignments.
+       * src/printenv.c, src/sort.c, src/test.c, src/tty.c: Likewise.
+
+       * src/chroot.c (main): Exit with status 1 rather than 127
+       if chroot itself fails, as per documentation.
+
+       * src/chroot.c (main): Use EXIT_ENOENT and EXIT_CANNOT_INVOKE
+       rather than roll-your-own symbols or integers.
+       * src/env.c (main): Likewise.
+       * src/nohup.c (main): Likewise.
+       * src/su.c (run_shell): Likewise.
+
+       * src/cp.c (exit_status): Remove static var....
+       (main): Making it local here instead.  Use =, not |=, to set it.
+
+       * src/cut.c (FATAL_ERROR, main): Exit with status EXIT_FAILURE,
+       not 2, on errors.
+       * src/date.c (batch_convert, main): Likewise.
+       * src/dd.c (dd_copy): Likewise.
+       * src/pr.c (first_last_page, main, getoptarg): Likewise.
+       * src/tr.c (main): Likewise.
+       * src/date.c (main): Don't assume EXIT_FAILURE == 1, as
+       POSIX doesn't require it.
+       * src/dd.c (write_output, skip, dd_copy): Likewise.
+       * src/df.c (main): Likewise.
+       * src/id.c (main): Likewise.
+       * src/install.c (main): Likewise.
+       * src/ln.c (main): Likewise.
+       * src/ls.c (main): Likewise.
+       * src/mv.c (main): Likewise.
+       * src/shred.c (main): Likewise.
+
+       * src/env.c (main): Exit with status 1, not 2, on errors detected
+       by env proper.
+       * src/hostname.c (main): Likewise.
+       * src/nl.c (main): Likewise.
+       * src/stty.c (main): Likewise.
+
+       * src/expr.c (EXPR_FAILURE): Renamed from EXPR_ERROR, for
+       consistency with the other programs' naming conventions.
+       All uses changed.
+
+       * src/factor.c (main): Do not report a usage error simply
+       because stdin has bad numbers.
+
+       * src/id.c (problems): Now a boolean int, not a counter,
+       so that we don't have to worry about int overflow.  All uses changed.
+       * src/touch.c (err): Likewise.
+
+       * src/md5sum.c (main): Use int, not size_t, to store boolean int.
+
+       * src/mkfifo.c (main): Exit with status 1, not 4, if not implemented.
+       * src/mknod.c: Likewise.
+
+       * src/nice.c (main): Exit with status EXIT_FAIL, not EXIT_FAILURE,
+       on error; this is in case EXIT_FAILURE is unusual.
+       * src/su.c (main): Likewise.
+
+       * src/nohup.c (NOHUP_FOUND_BUT_CANNOT_INVOKE): Remove; all uses
+       changed to EXIT_CANNOT_INVOKE.
+
+       * src/printenv.c (PRINTENV_FAILURE): New constant.
+       (main): Exit with status PRINTENV_FAILURE, not EXIT_FAILURE, on
+       command-line syntax problems.
+
+       * src/rmdir.c (remove_parents): Don't set 'fail' to a negative number.
+       (main): Avoid integer overflow when seeing whether errors occurred.
+
+       * src/seq.c (print_numbers): Now returns void, not (zero) int.
+       All callers changed.
+       (main): Remove unused local variable 'errs'.  Always exit successfully
+       if we reach the end.
+
+       * src/setuidgid.c (SETUIDGID_FAILURE): Renamed from FAIL_STATUS,
+       for consistency with other programs here.  All uses changed.
+       (main): Use 'error' to exit rather than invoking 'exit' here.
+
+       * src/sort.c: Don't include <assert.h>.
+       (SORT_OUT_OF_ORDER,  SORT_FAILURE): Now enums, not macros.
+       (usage): Don't use 'assert'.
+       (main): Remove redundant assignment to exit_failure.
+
+       * src/system.h (EXIT_FAIL, EXIT_CANNOT_INVOKE, EXIT_ENOENT):
+       New enum values.
+       (initialize_exit_failure): New inline function.
+       Include exitfail.h here, since we refer to exit_failure.
+       All callers changed to not include exitfail.h.
+
+       * src/tty.c (TTY_FAILURE, TTY_WRITE_ERROR): New enum values;
+       substitute them for the corresponding integer constants.
+
+       * tests/help-version (expected_failure_status_date): Remove, as
+       'date' is now normal.
+       (expected_failure_status_nohup): New var.
+
+2004-01-21  Jim Meyering  <jim@meyering.net>
+
+       * tests/touch/relative: Remove `command' syntax.
+       Thanks to Nelson H. F. Beebe and Paul Eggert.
+
+       * tests/touch/relative: Test only year/month/day, not hours/min/sec,
+       so as to avoid problems with systems using TAI clocks.
+       Although it's no longer necessary, set TZ=UTC0 also for the
+       initial touch command.  Reported by Paul Jarc here:
+       http://article.gmane.org/gmane.comp.gnu.core-utils.bugs/1504
+
+2004-01-20  Diego Biurrun  <diego@biurrun.de>
+
+       * src/dircolors.hin: Add .mov to the list of media files.
+
+2004-01-19  Paul Eggert  <eggert@twinsun.com>
+
+       * tests/touch/relative: Use TZ=UTC0, not TZ=utc (which isn't
+       portable).  Problem reported by Christian Krackowizer.  Also, use
+       +0000 rather than +0 to specify a time zone, as the documentation
+       requires four digits.
+
+2004-01-19  Jim Meyering  <jim@meyering.net>
+
+       * tests/mv/hard-4: Run envvar-check in case SIMPLE_BACKUP_SUFFIX is set.
+       * tests/mv/backup-is-src: Likewise.
+       Problem reported by Peter Horst
+
+2004-01-17  Jim Meyering  <jim@meyering.net>
+
+       * announce-gen (print_changelog_deltas): Use .sig suffix, not .asc.
+
+       * Version 5.1.1.
+
+2003-12-15  Paul Eggert  <eggert@twinsun.com>
+
+       * NEWS, doc/coreutils.texi: touch -r and -d can now both be specified,
+       with -r specifying the origin for -d.
+       * src/touch.c (flexible_date): Remove static var.
+       (get_reldate): New function.
+       (main): Use it, to implement this new behavior.
+
+2004-01-16  Jim Meyering  <jim@meyering.net>
+
+       * tests/touch/relative: New test for the above.
+       * tests/touch/Makefile.am (TESTS): Add relative.
+
+2004-01-13  Jim Meyering  <jim@meyering.net>
+
+       * src/system.h: Include contents of sys2.h.
+       * src/sys2.h: Remove file.
+       * src/Makefile.am (noinst_HEADERS): Remove sys2.h.
+
+       * Use automake-1.8.2.  Regenerate dependent files.
+
+       * Update to gettext-0.13.1.
+       * configure.ac: Use gettext-0.13.1.
+       * .x-sc_space_tab: Add m4/po.m4 to the list of exceptions.
+
+2004-01-12  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (%.sig): Use .sig suffix rather than .asc.
+
+       * Makefile.maint (po-check): Ensure that cvsu works before using it.
+       Reported by Alexandre Duret-Lutz.
+
+       * src/tail.c (main): Warn about following stdin only when it's a tty.
+
+       * configure.ac: Use gl_DEFAULT_POSIX2_VERSION.
+
+2004-01-10  Jim Meyering  <jim@meyering.net>
+
+       * tests/misc/stat-fmt: Use backticks, not `$()' notation.
+
+2004-01-09  Jim Meyering  <jim@meyering.net>
+
+       * configure.ac: Quote underquoted `jm_DUMMY_1' to avoid new warning.
+
+2004-01-08  Jim Meyering  <jim@meyering.net>
+
+       * src/stat.c (human_fstype): Use %lx, not %x format for `unsigned long'.
+       From Andreas Schwab.
+
+       * tests/Makefile.am (TESTS_ENVIRONMENT): Remove `/vg' (prerelease test
+       remnant) from PATH component.  That would cause tests in this directory
+       not to run the just-built binaries, but rather whatever happened
+       to be in one's PATH.  Reported by Christian Krackowizer.
+
+2004-01-04  Jim Meyering  <jim@meyering.net>
+
+       * src/csplit.c (new_control_record): Use x2nrealloc
+       rather than xrealloc.
+
+       * src/cp.c (re_protect): Use ASSIGN_STRDUPA rather than
+       alloca and strcpy.
+       (make_path_private): Likewise.
+
+2004-01-03  Jim Meyering  <jim@meyering.net>
+
+       * src/paste.c: Use `bool' (not int) as the type for a few
+       global variables.
+       (collapse_escapes): Rewrite to set globals rather than modifying
+       its parameter.
+       Use size_t (not int) for all counters and related index variables.
+       (paste_parallel): Remove needless complexity of
+       using xrealloc in the loop;  just allocate the buffers up front.
+       Free the two temporary buffers.
+       Move declarations of locals `down' into scope where used.
+       (paste_serial): Remove `register' attributes.
+       (main): Simplify delim-related code.
+       Free `delims', now that it's malloc'd.
+
+2004-01-02  Jim Meyering  <jim@meyering.net>
+
+       * src/chroot.c: Include "quote.h".
+       (CHROOT_FOUND_BUT_CANNOT_INVOKE, CHROOT_FAILURE): Define.
+       (main): Exit with status of 127, not 1, for too-few-args,
+       chroot failure, or chdir failure.
+       Give a better diagnostic upon execvp failure.
+
+       * src/du.c (usage): Mention that, with its current meaning,
+       -H is deprecated.
+
+       * src/tail.c (main): Warn about following stdin when it's a tty.
+       Fail when following by name but no names are specified.
+
+2003-12-30  Jim Meyering  <jim@meyering.net>
+
+       * src/fold.c (main): Use memcpy, not strcpy.
+
+       * src/copy.c (copy_internal): Use ASSIGN_STRDUPA rather than
+       alloca and strcpy.
+
+2003-12-28  Jim Meyering  <jim@meyering.net>
+
+       * src/unexpand.c (n_tabs_allocated): New global.
+       (add_tabstop): Use x2nrealloc rather than xrealloc.
+       * src/expand.c: Likewise.
+
+       * tests/misc/expand: New file.
+       * tests/misc/Makefile.am (TESTS): Add expand.
+
+       * src/sort.c (add_temp_dir): Use x2nrealloc rather than xrealloc.
+       (fillbuf): Use x2nrealloc rather than xrealloc.
+       (sort): Use xnmalloc rather than xmalloc.
+       (main): Likewise.
+
+2003-12-27  Jim Meyering  <jim@meyering.net>
+
+       * src/tee.c (tee): Use xnmalloc rather than xmalloc.
+
+2003-12-29  Paul Eggert  <eggert@twinsun.com>
+
+       * NEWS: Remove support for join -j1 FIELD, -j2 FIELD, and -o LIST1
+       LIST2 in POSIX 1003.1-2001 hosts, as required by POSIX.
+
+       * doc/coreutils.texi (join invocation): Remove documentation
+       accordingly.  Document that -t makes all separators significant.
+
+       * src/join.c: Include posixver.h.
+       (obsolete_usage): New var.
+       (longopts): Put obsolete options first.
+       (OBSOLETE_LONG_OPTIONS): New constant.
+       (get_option, add_file_name): New functions.
+       (main): Use them to support new behavior.
+       (usage): Remove documentation for -j1 FIELD and -j2 FIELD.
+       Do not mark -j FIELD as obsolescent; it is longstanding
+       UNIX tradition and is a valid extension to POSIX.
+
+       * tests/join/Test.pm (tv): Avoid obsolete -o usage.
+
+2003-12-28  Paul Eggert  <eggert@twinsun.com>
+
+       * src/join.c (add_field_list): Don't use alloca with unbounded
+       size; just modify the argument, which is no longer const *.
+
+       Various other minor cleanups, mostly to avoid the need for casts.
+
+       (extract_field): Renamed from ADD_FIELD, as it's now a function.
+
+       (struct field.beg): Now char *, not unsigned char const *.  All
+       uses changed.  It shouldn't be const since xmemcoll writes on its
+       arguments.
+       (extract_field): Likewise, for 2nd arg.
+       (keycmp): Remove now-unnecessary cast of xmemcoll args.
+
+       (is_blank): New function, to avoid need to cast arg to unsigned char.
+       (extract_field): Use it.
+
+       (xfields): Rewrite pretty much from scratch.
+
+       (hard_LC_COLLATE): Now bool, not int.
+       (get_line, getseq, add_field_list): Now returns bool, not int.
+       (decode_field_spec, add_field_list): Return true on success (not
+       false), for consistency with the rest of the code.  All uses changed.
+
+       (tab): Now char, not unsigned char.  This wasn't 100% necessary
+       but is slightly cleaner.
+       (prjoin): Hoist (tab ? tab : ' ') expression, to help the compiler.
+
+       (empty_filler): Now const *.
+
+       (make_blank): Remove; wasn't needed.  Remove all calls.
+       (main): Don't set uni_blank.nfields; zero is fine.
+
+2003-12-27  Jim Meyering  <jim@meyering.net>
+
+       * src/join.c: Include "quote.h".
+       (min, max): Remove definitions.
+       Make a few function parameters and corresponding
+       locals `const'.  Use bool for boolean variables.
+       Use size_t (not int) for all counters and related index variables.
+       (prjoin): Remove now-useless assertion.
+       (string_to_join_field): New function.
+       (main): Accept join fields as large as SIZE_MAX.
+       (keycmp): Rename `min' to MIN and max to MAX.
+
+2003-12-26  Jim Meyering  <jim@meyering.net>
+
+       fold -s didn't work on e.g., alpha-based systems.
+       * src/fold.c (fold_file): Adjust types (int->size_t) so that using
+       x2nrealloc works properly on systems with differing sizes for int
+       and size_t.  Reported by Nelson Beebe.
+
+       * src/fold.c: Use `bool' (not int) as the type for a few
+       global variables.
+
+2003-12-23  Paul Eggert  <eggert@twinsun.com>
+
+       * src/ls.c (length_of_file_names_and_frills):
+       Remove forward decl; not needed.
+       (print_file_name_and_frills, length_of_file_name_and_frills):
+       With -m, don't output spaces before inum or size.
+       (print_with_commas): Don't output space just before newline.
+
+2003-12-24  Jim Meyering  <jim@meyering.net>
+
+       * tests/ls/Makefile.am (TESTS): Add m-option.
+       * tests/ls/m-option: New file.  Test for above fixes.
+
+2003-12-20  Jim Meyering  <jim@meyering.net>
+
+       * Version 5.1.0.
+
+       * src/pr.c: Change type of global, buff_allocated, to size_t.
+
+       * src/join.c [struct seq]: Change types of members count and alloc
+       from `int' to `size_t'.
+
+       * tests/Makefile.am (root-hint): Tweak wording.
+
+       * src/du.c: Accept new option (-0, --null) that makes it so each
+       output line is NUL-terminated rather than newline-terminated.
+
+       * src/dd.c (apply_translations): Don't prohibit conv=unblock,sync.
+       Reported by Volker Paul.
+       * tests/dd/Makefile.am (TESTS): Add unblock-sync.
+       * tests/dd/unblock-sync: New test for the above.
+
+2003-12-19  Jim Meyering  <jim@meyering.net>
+
+       * tests/misc/nohup: Double quote back-ticked expression,
+       in case it ends up having an unexpected value.
+
+       * tests/ls/no-arg: Use ls's -1 option in both runs.
+
+       * src/du.c (fts_debug): New global.
+       (FTS_CROSS_CHECK, DEBUG_OPT): Define.
+       (main): Make fts use FTS_TIGHT_CYCLE_CHECK.
+       (main) [DU_DEBUG]: Accept -d option.
+
+2003-12-18  Jim Meyering  <jim@meyering.net>
+
+       * src/ls.c (format_user): Increment dired_pos via two statements,
+       `dired_pos += width; dired_pos++;' rather than one,
+       `dired_pos += width + 1;' since the latter could conceivably overflow.
+       (format_group): Likewise.
+       From Paul Eggert.
+
+       * configure.ac: Require automake-1.8.
+
+2003-12-12  Jim Meyering  <jim@meyering.net>
+
+       * Use automake-1.8.  Regenerate dependent files.
+
+2003-12-08  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (news-date-check): New rule.
+       (alpha beta major): Depend on it.
+
+2003-12-03  Paul Eggert  <eggert@twinsun.com>
+
+       * NEWS: ls -l (and similar options) now adjust all columns to
+       fit the data.  Generalized from a suggestion by Leah Q for file sizes.
+       * src/ls.c (INODE_DIGITS, LOGIN_NAME_MAX, ID_LENGTH_MAX): Remove.
+       (format_user_width, format_group_width, unsigned_file_size,
+       format_group): New functions.
+       (block_size_width): Renamed from block_size_size.
+       (inode_number_width, nlink_width, owner_width, group_width,
+       author_width, major_device_number_width, minor_device_number_width,
+       file_size_width): New vars.
+       (clear_files): Initialize them.
+       (gobble_file): Set them.  Don't ceiling block_size_width to 7.
+       (print_long_file): Use them.
+       (gobble_file): Use a new local variable 'f' to make the code
+       smaller and more consistent with other functions.
+       (format_user): Output to stdout, not to a buffer, so that we
+       don't have to worry about buffer overrun.  Update dired_pos.
+       (print_long_file): Don't put owner, group, author into buffer;
+       just print them directly.  Don't assume link counts and
+       major and minor numbers fit into unsigned long int.
+       * tests/cp/same-file, tests/mv/part-symlink: Don't assume that
+       'ls' output is fixed-width.
+
+2003-12-02  Jim Meyering  <jim@meyering.net>
+
+       * src/md5sum.c: Include sha1.h (reflect renaming: sha.h -> sha1.h.
+
+2003-11-27  Jim Meyering  <jim@meyering.net>
+
+       * Use automake-1.7f.  Regenerate dependent files.
+
+2003-11-24  Paul Eggert  <eggert@twinsun.com>
+
+       Parse floating-point operands and options in the C locale.
+       POSIX requires this for printf, and we might as well be
+       consistent elsewhere (tail, sleep, seq).
+
+       * src/printf.c: Remove decls of strtod, strtol, strtoul; no longer
+       needed now that we assume C89.  Include "c-strtod.h".
+       (xstrtod): Call c_strtod, not strtod.
+       * src/sleep.c: Include "c-strtod.h".
+       (main): Update xstrtod call to include new argument, c_strtod.
+       * src/seq.c (scan_double_arg): Likewise.
+       * src/tail.c (parse_options): Likewise.
+
+2003-11-24  Jim Meyering  <jim@meyering.net>
+
+       * tests/rm/fail-2eperm: Handle another errno variant (HPUX, EPERM).
+       Reported by Mark Conty.
+
+2003-11-22  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (sc_xalloc_h_in_src): Remove rule.  Subsumed by...
+       (sc_system_h_headers): Do this test only if sys2.h exists.
+
+2003-11-20  Jim Meyering  <jim@meyering.net>
+
+       * tests/help-version: Ensure that the bug-reporting address is
+       included in the --help output for every program.
+       * tests/Makefile.am (TESTS_ENVIRONMENT): Add $PACKAGE_BUGREPORT.
+
+       * src/ptx.c (usage): Output bug-reporting address.
+       Reported by Dan Jacobson.
+
+2003-11-19  Jim Meyering  <jim@meyering.net>
+
+       * src/join.c (usage): Mention that FILE1 and FILE2 must be sorted
+       on the join fields.  Suggestion from Bruce Robertson.
+
+2003-11-18  Jim Meyering  <jim@meyering.net>
+
+       `od -c -w9999999' could segfault
+       * src/od.c (dump): Use xnmalloc/free, not alloca.
+
+2003-11-16  Jim Meyering  <jim@meyering.net>
+
+       * Use autoconf-2.59.  Regenerate dependent files.
+
+       * tests/du/hard-link: Minor tweak: use mkdir -p.
+
+       Fix read-from-free'd-buffer error detected by valgrind.
+       * src/csplit.c (remove_line): Don't return a pointer to data in
+       a freed buffer.  Instead, arrange to free the buffer on the
+       subsequent call.
+
+       * tests/misc/csplit: New test for above fix.
+
+2003-11-11  Jim Meyering  <jim@meyering.net>
+
+       * src/ls.c (extract_dirs_from_files): Avoid useless copy operations.
+       This avoids a warning from valgrind about memcpy with overlapping
+       source and destination.
+
+       * configure.ac: Require automake-1.7.8.
+
+2003-11-09  Jim Meyering  <jim@meyering.net>
+
+       * Use automake-1.7.9.  Regenerate dependent files.
+
+       * src/rm.c: Support new options: --preserve-root and --no-preserve-root.
+       * src/chown.c: Likewise.
+
+       * src/chown-core.c: Include "root-dev-ino.h".
+       (chopt_init): Initialize new member.
+       (change_file_owner): Support rm's new --preserve-root option.
+
+       * src/remove.c: Include "root-dev-ino.h".
+       (remove_cwd_entries): Remove now-obsolete FIXME comment.
+       (remove_dir): Support rm's new --preserve-root option.
+
+       * src/chown.c: Include "root-dev-ino.h".
+       Add new options: --preserve-root and --no-preserve-root.
+
+       * src/chmod.c: Include "root-dev-ino.h".
+       (process_file): Use newly-factored-out ROOT_DEV_INO_CHECK and
+       ROOT_DEV_INO_WARN macros.
+       (get_root_dev_ino): Remove function definition, now that it's
+       been moved to a separate file.
+       (usage): Describe new options.
+
+       * src/mv.c (rm_option_init): Initialized new member.
+
+       * src/remove.h: Include "dev-ino.h".
+       (struct rm_options): Add new member: root_dev_ino.
+       * src/chown-core.h: Include "dev-ino.h".
+       (struct Chown_option): Add new member: root_dev_ino.
+
+2003-11-06  Jim Meyering  <jim@meyering.net>
+
+       * src/paste.c (paste_parallel): Use `sizeof *var' rather than
+       hard-coding `sizeof FILE*'.
+
+2003-11-05  Dennis Smit  <ds@nerds-incorporated.org>
+
+       * src/wc.c (main): Free `fstatus' so there is no confusion about
+       whether it's leaked or not.
+       * src/who.c (who): Likewise for `utmp_buf'.
+
+2003-11-05  Paul Eggert  <eggert@twinsun.com>
+
+       Fix 'cut' problems with size_t overflow and unsigned int.
+       More generally, resize integer variables to fit use more precisely.
+       * src/cut.c (ADD_RANGE_PAIR): Remove unnecessary parens.
+       (struct range_pair): Make members to be of type size_t, not unsigned.
+       (max_range_endpoint, eol_range_start): Now size_t, not unsigned.
+       (suppress_non_delimited, output_delimiter_specified,
+       have_read_stdin, print_kth, set_fields): Now bool, nt int.
+       (delim): Now unsigned char, not int.
+       (mark_printable_field, is_printable_field, is_range_start_index,
+       set_fields, set_fields, cut_bytes, cut_fields):
+       Use size_t, not unsigned, for field and byte counts.
+       (hash_int): Use uintptr_t, not unsigned, for pointers converted
+       to integers.  This squeezes more info out of them.
+       (set_fields, cut_bytes, cut_fields, main):
+       Use bool, not int, for booleans.
+       (set_fields): Allocate zeroed byte array with xzalloc, not xcalloc.
+
+2003-11-05  Paul Eggert  <eggert@twinsun.com>
+
+       * man/Makefile.am (check-programs-vs-x):
+       Work even if $(programs) contains '$'.
+       Work even if 'missing=1' in environment.
+       Don't report an error simply because $(programs) outputs nothing.
+
+2003-11-05  Jim Meyering  <jim@meyering.net>
+
+       * Use autoconf-2.58.  Regenerate dependent files.
+
+       * src/tr.c (spec_init): Fix typo in last change.
+
+       * src/sys2.h (case_GETOPT_VERSION_CHAR): Cast NULL to `(char *)' in
+       call to variadic version_etc function, so that it works even on systems
+       for which sizeof char* != sizeof int.
+       * src/true.c (main): Likewise.
+       * basename.c, chroot.c, cksum.c, dd.c, dirname.c, echo.c, expr.c:
+       * factor.c, hostid.c, hostname.c, link.c, logname.c, nice.c, nohup.c:
+       * pathchk.c, printenv.c, printf.c, pwd.c, setuidgid.c, sleep.c, stty.c:
+       * sync.c, test.c, tsort.c, unlink.c, uptime.c, users.c, whoami.c, yes.c:
+       Similarly, cast NULL to `(char *)' in call to variadic function,
+       parse_long_options, so that it works even on systems for which
+       sizeof char* != sizeof int.
+       A similar problem was reported by Harti Brandt in
+       http://mail.gnu.org/archive/html/bug-gnu-utils/2003-10/msg00320.html.
+
+       * src/users.c (users): Free `utmp_buf' explicitly so that people
+       don't mistake this for a real leak.
+       Patch by Dennis Smit <ds@nerds-incorporated.org.
+
+2003-11-04  Paul Eggert  <eggert@twinsun.com>
+
+       * README: Document _POSIX2_VERSION.
+
+2003-11-04  Jim Meyering  <jim@meyering.net>
+
+       * src/tac.c (memrchr): Remove #if-0'd function.
+       (tac_stdin_to_mem): Clean up #if-0'd code.
+
+       * src/od.c (decode_format_string): Remove unnecessary casts.
+       Use more maintainable `sizeof *var'.
+       (main): Call decode_format_string rather than decode_one_format,
+       now that `spec' may be NULL.
+
+       * src/chmod.c (AUTHORS): Add my name.
+
+       * src/split.c (next_file_name): Use `sizeof *var' rather than
+       hard-coding `sizeof size_t'.
+
+       * src/sort.c (new_key): Use xzalloc, not xcalloc (1, ...).
+
+       * src/cut.c (ADD_RANGE_PAIR): Use x2nrealloc rather than xrealloc,
+       to avoid potential overflow in pointer arithmetic.
+       (set_fields): Use not `1', but rather `sizeof *printable_field' as
+       second argument to xcalloc.
+       * src/od.c (decode_format_string, dump_strings): Use x2nrealloc
+       rather than xrealloc.
+       * src/date.c (show_date): Likewise.
+       * src/join.c (ADD_FIELD, initseq, getseq): Likewise.
+       * src/pr.c (store_char): Likewise.
+       * src/fold.c (fold_file): Likewise.
+
+       * src/copy.c (triple_hash, triple_hash_no_name): Adjust to reflect
+       type changes (unsigned int -> size_t) in hash.c.
+       * src/cp-hash.c (src_to_dest_hash): Likewise.
+       * src/du.c (entry_hash): Likewise.
+       * src/ls.c (dev_ino_hash): Likewise.
+       * src/cut.c (hash_int): Likewise.  Declare function as static.
+
+2003-11-03  Jim Meyering  <jim@meyering.net>
+
+       * tests/misc/Makefile.am (TESTS_ENVIRONMENT): Define PACKAGE_VERSION.
+       * tests/misc/fold: Fail the test immediately if we're not running
+       the expected version of fold.
+
+2003-11-02  Jim Meyering  <jim@meyering.net>
+
+       * src/tr.c (append_normal_char, append_range, append_char_class)
+       (append_repeated_char, append_equiv_class, spec_init): Use `sizeof *var'
+       rather than `sizeof EXPLICIT_TYPE'.  The former is more maintainable
+       and usually shorter.
+       * src/copy.c (copy_internal): Likewise.
+       * src/join.c (initseq, add_field, make_blank): Likewise.
+       * src/od.c (main): Likewise.
+       * src/cp.c (make_path_private): Likewise.
+       * src/tsort.c (new_item, record_relation): Likewise.
+
+       * src/df.c (add_fs_type, add_excluded_fs_type, main): Likewise.
+       (main): Also remove anachronistic cast of xmalloc return value.
+       * src/ptx.c (alloc_and_compile_regex, main): Likewise.
+       (main): Also remove anachronistic cast of xmalloc return value.
+       * src/sort.c (inittables): Likewise.
+       (sort): Also Split a long line.
+
+2003-10-25  Jim Meyering  <jim@meyering.net>
+
+       * src/copy.c (triple_hash, triple_hash_no_name): Adjust to reflect
+       type changes (unsigned int -> size_t) in hash.c.
+       * src/cp-hash.c (src_to_dest_hash): Likewise.
+       * src/du.c (entry_hash): Likewise.
+       * src/ls.c (dev_ino_hash): Likewise.
+       * src/cut.c (hash_int): Likewise.  Declare function as static.
+
+2003-10-21  Jim Meyering  <jim@meyering.net>
+
+       Don't fail when run with VERBOSE=yes.
+       * tests/chgrp/basic: Do `set +x' before starting the subshell
+       from which we invoke chgrp.  Otherwise, the output from the
+       VERBOSE=yes-induced `set -x' would result in spurious differences.
+       Reported by Russel Coker via Michael Stone.
+
+2003-10-19  Jim Meyering  <jim@meyering.net>
+
+       chmod now uses fts to perform a directory traversal when -R is
+       specified.  Before, it operated on full path names, and as such
+       would encounter the PATH_MAX (often 4096) limit.
+
+       * src/chmod.c: Include "xfts.h".
+       (process_file): Rename from change_file_mode.
+       Adapt to be used with fts.
+       (process_files): New function.
+
+2003-10-18  Jim Meyering  <jim@meyering.net>
+
+       * tests/du/deref-args: Ensure that du -D now dereferences all
+       symlinks specified on the command line, not just those that
+       reference directories.
+
+       * basename.c, cat.c, chroot.c, cksum.c, comm.c, cp.c, csplit.c, cut.c:
+       * dd.c, df.c, dirname.c, du.c, echo.c, env.c, expr.c, factor.c, head.c:
+       * hostid.c, hostname.c, id.c, link.c, ln.c, logname.c, ls.c, md5sum.c:
+       * mv.c, nice.c, nl.c, nohup.c, paste.c, pathchk.c, pinky.c, pr.c:
+       * printenv.c, printf.c, pwd.c, rm.c, setuidgid.c, sleep.c, sort.c:
+       * split.c, stty.c, sum.c, sync.c, tac.c, tail.c, tee.c, test.c:
+       * touch.c, tsort.c, uniq.c, unlink.c, uptime.c, users.c, wc.c:
+       * who.c, whoami.c, yes.c (AUTHORS): Revert the WRITTEN_BY/AUTHORS change
+       of 2003-09-19.  Now, AUTHORS is a comma-separated list of strings.
+       Update the call to parse_long_options so that `AUTHORS, NULL' are the
+       last parameters.
+       * src/true.c (main): Append NULL to version_etc argument list.
+       * src/sys2.h (case_GETOPT_VERSION_CHAR): Likewise.
+
+2003-10-17  Andreas Schwab  <schwab@suse.de>
+
+       * tests/mk-script: Get $srcdir from first parameter instead of
+       hardcoding it.
+       (main): Update usage.
+
+       * tests/Makefile.am.in ($(srcdir)/$x-tests): Pass $(srcdir) as
+       first argument of mk-script.
+       ($(srcdir)/Makefile.am): Likewise.  Prepend $(srcdir) to target.
+
+2003-10-17  Jim Meyering  <jim@meyering.net>
+
+       * src/mv.c (usage): Tweak descriptions of -i and -f so that the
+       generated `man' page is more readable.  Suggestion from Dan Jacobson.
+
+       * src/chown-core.c (change_file_owner): Handle the cases in
+       which fts_info indicates an error with the given entry.
+
+       * src/du.c (main): Simply assign to bit_flags.
+       Don't bother with bit arithmetic.
+
+       * tests/chmod/no-x: New file.
+       * tests/chgrp/no-x: New file.
+       * tests/chmod/Makefile.am (TESTS): Add no-x.
+       * tests/chgrp/Makefile.am (TESTS): Likewise.
+
+       * src/du.c: Include "xfts.h".
+       (du_files): Use xfts_open, rather than fts_open.
+       * src/chown-core.c (chown_files): Likewise.
+
+2003-10-16  Jim Meyering  <jim@meyering.net>
+
+       * src/chgrp.c (main): Simply assign to bit_flags.
+       Don't bother with bit arithmetic.
+       * src/chown.c (main): Likewise.
+       Rename a couple of local variables.
+       Remove unnecessary casts.
+
+       * src/tail.c (start_bytes): Rename local, remainder, to avoid
+       gcc's warning about shadowing a global.
+
+2003-10-15  Jim Meyering  <jim@meyering.net>
+
+       chown and chgrp now accept POSIX-mandated -H, -L, -P options and
+       use fts to perform a directory traversal when -R is specified.
+       Before, they operated on full path names, and as such would
+       encounter the PATH_MAX (often 4096) limit.
+       They are more efficient.  For example, before, chgrp -R would
+       take almost 5 seconds to change about 2000 directories and fail
+       (with `File name too long'), while now it succeeds on a hierarchy
+       of depth 20,000 in 1/10 the time.
+
+       * src/chown.c: Include "userspec.h" and "fts_.h".
+       (WRITTEN_BY): Add my name.
+       (getpwnam, getgrnam, getgrgid): Remove declarations.
+       (endpwent): Remove definition.
+       (usage): Update.
+       (main): Handle new options.
+       Call new function, chown_files rather than change_file_owner.
+
+       * src/chgrp.c: Include "fts_.h".
+       (WRITTEN_BY): Add my name.
+       (MAXUID, MAXGID): Remove definitions.  Use GID_T_MAX instead of
+       the latter.
+       (usage): Update.
+       (main): Handle new options.
+       Call new function, chown_files rather than change_file_owner.
+
+       Rewrite to iterate through hierarchies using fts rather than
+       via explicit recursion.
+       * src/chown-core.c: Include "fts_.h"
+       (change_file_owner): Rewrite to use FTS* and FTSENT* and to operate
+       on a single file at a time.
+       (chown_files): New function.
+       * src/chown-core.h [enum Dereference_symlink]: Remove declaration.
+       [struct Chown_option] (recurse, force_silent): Change type to `bool'.
+       [struct Chown_option] (dereference): Remove member with ambiguous name.
+       [struct Chown_option] (affect_symlink_referent): New member.
+       (chown_files): New prototype.
+
+       * tests/chgrp/recurse: Update tests accordingly.
+       * tests/chgrp/posix-H: New tests for the above.
+       * tests/chgrp/Makefile.am (TESTS): Add posix-H.
+
+       * src/ln.c (usage): Clarify that --directory, -d, -F probably won't
+       work even for superuser.  Suggestion from Dan Jacobson.
+
+2003-10-14  Paul Eggert  <eggert@twinsun.com>
+
+       Fix some number-parsing bugs, e.g., "head -n 100k@" wasn't
+       properly diagnosed.
+       * lib/human.c, lib/xstrtoimax.c, lib/xstrtol.c, lib/xstrtol.h,
+       lib/xstrtoul.c, lib/xstrtoumax.c: Sync with gnulib.
+       * src/sort.c (parse_field_count): Handle the case where overflow
+       and invalid suffix char are both reported.
+
+2003-10-14  Jim Meyering  <jim@meyering.net>
+
+       * src/ls.c (decode_switches) [TIOCGWINSZ]: Comment out the
+       warning-inducing test, ws.ws_col <= SIZE_MAX, since it was always
+       true on Linux.
+
+2003-10-13  Paul Eggert  <eggert@twinsun.com>
+
+       Fix to avoid a denial-of-service attack if the display width is
+       enormous.  Also, clean up the code a bit by removing duplicate code.
+
+       * src/ls.c (init_column_info): Remove forward decl; no longer needed.
+       (calculate_columns): New function, that contains code that used
+       to be common to print_many_per_line and print_horizontal.
+       (print_many_per_line, print_horizontal): Use it.
+       (decode_switches): Set max_idx here, not in calculate_columns.
+       (print_current_files): Don't call init_column_info; calculate_columns
+       now does that.
+       (init_column_info): Don't allocate a lot more space than is needed
+       to represent the current set of files.  Allocate all the new
+       size_t cells in one call to xnmalloc, rather than a row at a time.
+
+2003-10-13  Jim Meyering  <jim@meyering.net>
+
+       * src/ls.c (init_column_info): Add another FIXME comment.
+
+2003-10-13  Paul Eggert  <eggert@twinsun.com>
+
+       Fix address-arithmetic bug in 'ls', reported by Georgi Guninski.
+       Remove several arbitrary limits on hosts where int cannot represent
+       all size_t values.
+
+       * src/ls.c (struct bin_str.len, length_of_file_name_and_frills, indent,
+       nfiles, files_index, tabsize, line_length, struct column_info.line_len,
+       struct column_info.col_arr[0], max_idx):
+       Now size_t, not int.
+       (get_funky_string): Return bool indicating success, instead of
+       a negative count to indicate failure.  Store number of columns
+       through new parameter OUTPUT_COUNT; that way, they can never
+       go negative.  Change equals_end from int to bool.  All uses
+       changed.
+       (struct column_info.valid_len): Now bool, not int.  All uses changed.
+       (dired_dump_obstack, get_funky_string, clear_files,
+       extract_dirs_from_files, print_current_files,
+       print_many_per_line, print_horizontal, init_column_info,
+       put_indicator, length_of_file_name_and_frills,
+       print_with_commas): Use size_t, not int, for local variables
+       that count sizes.
+       (decode_switches): Decode sizes using xstrtoul, not xstrtol.
+       Check for TIOCGWINSZ returing negative values (or values greater
+       than SIZE_MAX!).
+       (visit_dir, main, parse_ls_color, queue_directory, add_ignore_pattern,
+       init_column_info):
+       Use xmalloc and xnmalloc, not XMALLOC.
+       (gobble_file): Use xnrealloc, not XREALLOC.
+       (print_color_indicator): Remove now-unnecessary cast to size_t.
+
+2003-10-12  Paul Eggert  <eggert@twinsun.com>
+
+       * tests/du/no-x: Change wording of diagnostic to match latest du.c.
+       * tests/sort/sort-tests: Remove from CVS; assume that people
+       brave enough to check coreutils out from CVS can rebuild it.
+
+2003-10-12  Jim Meyering  <jim@meyering.net>
+
+       New options: --preserve-root and --no-preserve-root.
+       * src/chmod.c (change_file_mode): Honor new option.
+       (change_file_mode): Strip trailing slashes on directory
+       argument passed to change_dir_mode.
+       (get_root_dev_ino): New function.
+       (main): Initialize global, root_dev_ino.
+
+       * src/copy.c (copy_internal): Don't #ifdef-out simple uses of
+       S_ISLNK or S_ISSOCK.  The S_IS* macros are guaranteed to be defined
+       via system.h.
+       * src/chmod.c (change_file_mode): Likewise.
+
+2003-10-08  Jim Meyering  <jim@meyering.net>
+
+       * src/csplit.c (main): Remove obsolete FIXME.
+
+2003-10-07  Jim Meyering  <jim@meyering.net>
+
+       * Use automake-1.7.8.  Regenerate dependent files.
+
+2003-09-29  Paul Eggert  <eggert@twinsun.com>
+
+       csplit cleanup.
+
+       * doc/coreutils.texi (csplit invocation):
+       The regexp offset need not have a sign; POSIX requires support
+       for signless offets.
+
+       Be more careful about int widths.  For example, remove some
+       arbitrary limits by replacing 'unsigned' with 'size_t',
+       'uintmax_t', etc.  Use standard bool rather than a homegrown type.
+       * lib/Makefile.am (libfetish_a_SOURCES): Add xstrtoimax.c.
+       * src/csplit.c (FALSE, TRUE, boolean): Remove.  All uses changed
+       to <stdbool.h> usage.
+       (struct control): offset is now intmax_t, not int.
+       repeat_forever is now bool, not int.
+       (struct cstring): len is now size_t, not unsigned int.
+       (struct buffer_record): bytes_alloc, bytes_used, num_lines are now
+       size_t, not unsigned.  start_line, first_available are now
+       uintmax_t, not unsigned.
+       (hold_count, control_used): Now size_t, not unsigned.
+       (last_line_number, current_line, bytes_written):
+       Now uintmax_t, not unsigned.
+       (save_to_hold_area, red_input, keep_new_line, record_line_starts,
+       create_new_buffer, get_new_buffer, load_buffer, find_line,
+       process_regexp, split_file, new_control_record, extract_regexp,
+       get_format_width, get_format_prec, max_out):
+       size args, locals, and returned values are now size_t, not unsigned
+       or int.
+       (get_first_line_in_buffer, find_line, write_to_file,
+       handle_line_error, process_line_count, regexp_error, process_regexp,
+       split_file):
+       File line, byte, and repetition counts are now uintmax_t, not unsigned.
+       (check_for_offset): Don't require a sign before the offset.
+       Use xstrtoimax to do the real work.
+       (extract_regexp): Remove harmful cast of size to unsigned.
+       256 -> 1<<CHAR_BIT, for clarity.
+       (get_format_flags): Return at most 3, to avoid worries about overflow.
+
+       (bytes_to_octal_digits): Remove.
+
+       (cleanup): Don't check whether output_stream is NULL, since
+       close_output_file does that for us.
+
+       (new_line_control, create_new_buffer): Use "foo *p = xmalloc
+       (sizeof *p);" instead of the more long-winded alternatives.
+
+       (get_new_buffer): Use O(1) algorithm for resizing a buffer
+       to a much larger size, instead of an O(N) algorithm.
+
+       (process_regexp): Use plain NULL rather than casted 0.
+
+       (make_filename): Use %u, not %d, to format unsigned file number.
+
+       (new_control_record): Use xrealloc exclusively, since it handles
+       NULL reliably.
+
+       (extract_regexp): Change misspelled word in diagnostic.
+
+       (get_format_width): Even if a minimum field width is specified,
+       allow room for enough octal digits to represent the value of
+       the maximum representible integer.  This fixes a potential
+       buffer overrun.  Calculate this room at compile-time, not
+       at run-time; this removes the need for bytes_to_octal_digits.
+       Check for overflow; this removes a FIXME.
+
+       (get_format_prec): Don't allow precision to be signed; it's
+       not ANSI.  Check for overflow.  Remove hardcoded "11" as
+       default precision; this fixes a potential buffer overrun
+       on hosts with wider size_t.
+
+       (get_format_conv_type): Change local variable to be of type
+       unsigned char, not int; this removes a potential subscript
+       violation on hosts where char is signed.
+
+       (max_out): Replace "for (;*p;)" with more-standard "while (*p)".
+       Allow "%%" in format.  Don't overflow when
+       counting lots of percents.
+
+       (usage): Default sprintf format is %02u, not %d.
+
+2003-10-05  Jim Meyering  <jim@meyering.net>
+
+       * src/chown-core.c (change_file_owner): Remove set-but-not-used local.
+
+       * src/du.c (du_files): Mark diagnostic for translation.
+
+2003-10-04  Jim Meyering  <jim@meyering.net>
+
+       * src/du.c (du_files): Ignore any failure of fts_close.
+       Give better diagnostics for failed fts_open.
+
+       * src/du.c (MAX_N_DESCRIPTORS): Remove now-unused definition.
+
+       Deprecate existing use of -H (aka --si).
+       * src/du.c (enum) [HUMAN_SI_OPTION]: New member.
+       [long_options]: Use HUMAN_SI_OPTION, not 'H'.
+       (main): Warn that the meaning of -H will soon change to be
+       POSIX compliant.
+
+2003-10-03  Jim Meyering  <jim@meyering.net>
+
+       * src/du.c: Accept --no-dereference (-P).
+
+2003-10-02  Jim Meyering  <jim@meyering.net>
+
+       * tests/du/trailing-slash: Adjust for slightly different output.
+
+       Rewrite du.c to use fts.
+       * src/du.c: Include "fts_.h", not ftw.h.
+       (opt_dereference_arguments, arg_length, suffix_length): Remove globals.
+       (IS_FTW_DIR_TYPE): Remove definition.
+       (IS_DIR_TYPE): Define.
+       (is_symlink_to_dir): Remove now-unnecessary function.
+       (process_file, du_files): Rewrite to use fts.
+
+       * tests/du/inaccessible-cwd: Ensure that even when run from an
+       inaccessible directory, du can still operate on accessible
+       directories elsewhere.
+       * tests/du/Makefile.am (TESTS): Add inaccessible-cwd.
+
+       * tests/rm/deep-1: Ensure that du can process a hierarchy
+       of depth 400 while using no more than 50KB of stack space.
+
+2003-10-01  Akim Demaille  <akim@epita.fr>
+
+       * announce-gen (print_news_deltas): New function, extracted from main.
+       (main): Make `news_file' an array.
+       Use '...=s' => \@var for --news and --url-directory specs.
+       Before there were a couple of portability problems.
+
+2003-09-28  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (sc_cast_of_alloca_return_value): New rule.
+       (syntax-check-rules): Add it.
+
+       * src/copy.c: Remove unnecessary cast of alloca, since now it's
+       guaranteed to be (void *).
+       * src/cp.c: Likewise.
+       * src/join.c: Likewise.
+       * src/ln.c: Likewise.
+       * src/ls.c: Likewise.
+       * src/od.c: Likewise.
+       * src/sys2.h (ASSIGN_STRDUPA): Likewise.
+
+2003-09-27  Jim Meyering  <jim@meyering.net>
+
+       Don't exhaust virtual memory when processing large inputs.
+       Fix this by removing csplit's internal free-list management;
+       instead rely on malloc for that.
+
+       * src/csplit.c (free_list): Remove global.
+       (clear_all_line_control): Remove function.
+       (get_new_buffer): Always use create_new_buffer to obtain a
+       new buffer, rather than searching free_list.
+       (free_buffer): Just call free.
+       Reported by Nikola Milutinovic.
+
+2003-09-26  Jim Meyering  <jim@meyering.net>
+
+       * man/rm.x: Also list `chattr' in SEE ALSO section.
+       Suggestion from Mark Hubbart.
+
+2003-09-25  Jim Meyering  <jim@meyering.net>
+
+       * configure.ac: Don't invoke AC_AIX or AC_MINIX explicitly, now
+       that we use gl_USE_SYSTEM_EXTENSIONS, since it AC_REQUIREs them.
+
+       * Use autoconf-2.57d.  Regenerate dependent files.
+
+2003-09-24  Jim Meyering  <jim@meyering.net>
+
+       Minor efficiency tweak.
+       * src/ln.c (PATH_BASENAME_CONCAT): Use memcpy rather than strcpy.
+       (do_link): Likewise.
+
+2003-09-23  Jim Meyering  <jim@meyering.net>
+
+       * src/paste.c (paste_serial): Save errno after input error,
+       to report proper errno value.
+       Based on a patch from Paul Eggert.
+
+       * src/tee.c (tee): Adjust fwrite arguments so that the return
+       value is the number of bytes written.
+
+2003-09-16  Paul Eggert  <eggert@twinsun.com>
+
+       Don't assume ferror sets errno.  Bug reported by Bruno Haible.
+
+       * src/comm.c (compare_files): Save errno after input error,
+       to report proper errno value.
+       * src/fold.c (fold_file): Likewise.
+       * src/od.c (check_and_close, skip, read_char, read_block): Likewise.
+       * src/unexpand.c (unexpand): Likewise.
+
+       * src/csplit.c (close_output_file): Don't report bogus errno value
+       after ferror discovers an output error.  We don't know the proper
+       errno value, since it might have been caused by any of a whole
+       bunch of calls, and it might have been trashed in the meantime.
+       Fixing this problem will require much more extensive changes;
+       in the meantime just say "write error".
+       * src/od.c (check_and_close, dump, dump_strings): Likewise.
+       * src/uniq.c (check_file): Likewise.
+
+       * src/join.c (get_line): Report error right away if I/O fails,
+       so that the proper errno value is used.
+       * src/tac.c (tac_seekable, tac_file, save_stdin): Likewise.
+       * src/tee.c (tee): Likewise.
+       * src/uniq.c (check_file): Likewise.
+
+       * src/od.c (skip): If a read fails, don't retry it later, so
+       that we report the proper errno.
+
+       * src/tac.c (tac_mem): Don't return a value; nobody uses it.
+
+       * src/tee.c (tee): Once a write failure has occurred, don't bother
+       writing anything more to that stream.
+
+       * src/uniq.c (check_file): Check for ferror (stdout) even if
+       ostream == stdout.
+
+       * src/yes.c (UNROLL): Remove.
+       (main): Exit immediately when write failure is detected.
+       Simplify code by assigning to argv when argc == 1.
+
+2003-09-21  Paul Eggert  <eggert@twinsun.com>
+
+       * src/ptx.c: Switch encoding from Latin-1 to UTF-8.
+       (WRITTEN_BY): Change "Franc,ois" (actually using
+       c-with-cedilla in Latin-1) to "F.", so that it's ASCII, as
+       xgettext requires.
+
+2003-09-19  Jim Meyering  <jim@meyering.net>
+
+       `du -D symlink-to-dir' would mistakenly omit the slash in
+       lines like this: 24     symlink-to-dir/subdir
+       * src/du.c (process_file): Fix offset calculation.
+       Reported by Jeff Sheinberg as Debian bug #211591;
+       http://bugs.debian.org/205251
+
+       * tests/du/deref-args: New file/test for the above.
+       * tests/du/Makefile.am (TESTS): Add deref-args.
+
+       * src/du.c (process_file): Remove useless disjunct.
+
+       * src/sys2.h (case_GETOPT_VERSION_CHAR): Rename parameter, Authors,
+       to Written_by.
+       * nearly all src/*.c files (WRITTEN_BY): Rename from AUTHORS.
+       Begin each WRITTEN_BY string with `Written by ' and end it with `.'.
+       Mark each WRITTEN_BY string as translatable.
+
+       * basename.c, cat.c, chroot.c, cksum.c, comm.c, cp.c, csplit.c, cut.c:
+       * dd.c, df.c, dirname.c, du.c, echo.c, env.c, expr.c, factor.c, head.c:
+       * hostid.c, hostname.c, id.c, link.c, ln.c, logname.c, ls.c, md5sum.c:
+       * mv.c, nice.c, nl.c, nohup.c, paste.c, pathchk.c, pinky.c, pr.c:
+       * printenv.c, printf.c, pwd.c, rm.c, setuidgid.c, sleep.c, sort.c:
+       * split.c, stty.c, sum.c, sync.c, tac.c, tail.c, tee.c, test.c:
+       * touch.c, tsort.c, uniq.c, unlink.c, uptime.c, users.c, wc.c:
+       * who.c, whoami.c, yes.c: Revert yesterday's changes.
+       Instead, a subsequent change will embed `Written by ' in
+       each string along with the author names.
+
+       * src/true.c: Revert yesterday's changes.
+       * src/sys2.h: Likewise.
+
+2003-09-18  Jim Meyering  <jim@meyering.net>
+
+       * basename.c, cat.c, chroot.c, cksum.c, comm.c, cp.c, csplit.c, cut.c:
+       * dd.c, df.c, dirname.c, du.c, echo.c, env.c, expr.c, factor.c, head.c:
+       * hostid.c, hostname.c, id.c, link.c, ln.c, logname.c, ls.c, md5sum.c:
+       * mv.c, nice.c, nl.c, nohup.c, paste.c, pathchk.c, pinky.c, pr.c:
+       * printenv.c, printf.c, pwd.c, rm.c, setuidgid.c, sleep.c, sort.c:
+       * split.c, stty.c, sum.c, sync.c, tac.c, tail.c, tee.c, test.c:
+       * touch.c, tsort.c, uniq.c, unlink.c, uptime.c, users.c, wc.c:
+       * who.c, whoami.c, yes.c: Update AUTHORS definition to be a
+       comma-separated list of strings and/or update the call to
+       parse_long_options so that `AUTHORS, NULL' are the last parameters.
+       * src/true.c (main): Append NULL to version_etc argument list.
+       * src/sys2.h (case_GETOPT_VERSION_CHAR): Likewise.
+
+       * src/sort.c (numcompare): Rename local, logb, to log_b to avoid
+       shadowing the math function name.  Also rename loga to log_a.
+
+2003-09-14  Jim Meyering  <jim@meyering.net>
+
+       * src/factor.c (print_factors): Give a separate diagnostic
+       for numbers that are too large, but otherwise valid.
+       Reported by Dániel Varga.
+
+2003-09-10  Jim Meyering  <jim@meyering.net>
+
+       * Use automake-1.7.7.  Regenerate dependent files.
+
+       * tests/Makefile.am (all_programs): Use ../src/tr -s ' ' '\n' in place
+       of `fmt -1'.  Using the just-built tr is a little cleaner.
+       Christian Krackowizer reported that HPUX 10.20 doesn't have fmt.
+       * man/Makefile.am (programs, check-x-vs-1): Likewise.
+
+2003-09-09  Jim Meyering  <jim@meyering.net>
+
+       * src/copy.c: Alphabetize includes.
+       Remove duplicate inclusion of "same.h".
+
+2003-09-08  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (GZIP_ENV): Remove --rsyncable.
+       Didn't give enough of a benefit, mainly because it's not yet
+       in wide enough use.
+
+       * Version 5.0.91.
+
+       * man/Makefile.am (programs): Use ../src, not $(srcdir)/../src.
+       (check-programs-vs-x): Fail if $(programs) is empty.
+
+       * src/remove.c: Add a comment.
+
+2003-09-07  Jim Meyering  <jim@meyering.net>
+
+       * src/remove.c (D_INO, ENABLE_CYCLE_CHECK) [D_INO_IN_DIRENT]:
+       Don't define.  These symbols are no longer used.
+
+       * tests/misc/tty-eof: Write ^D as \cD.
+       Complete the change of 2003-08-02.
+
+       * Makefile.maint (po-check): Use cvsu, so that a temporary source
+       file in lib/ or src/ doesn't induce an unwarranted failure.
+       Add a kludge to filter out the sole generated source file that
+       also has translatable messages: src/false.c.
+
+2003-09-06  Jim Meyering  <jim@meyering.net>
+
+       * src/tail.c (enum): Add ALLOW_MISSING_OPTION.
+       (parse_options): Give a diagnostic for (but still accept) the
+       deprecated --allow-missing option.
+
+2003-09-04  Paul Eggert  <eggert@twinsun.com>
+
+       Don't ignore -S if input is a pipe.  Bug report by Michael McFarland in
+       <http://mail.gnu.org/archive/html/bug-coreutils/2003-09/msg00008.html>.
+
+       * src/sort.c (sort_buffer_size): Omit SIZE_BOUND arg.  Compute the
+       size_bound ourselves. if an input file is a pipe and the user
+       specified a size, use that size instead of trying to guess the
+       pipe size.  This has the beneficial side effect of avoiding the
+       overhead of default_sort_size in that case.  All callers changed.
+       (sort): Remove static var size; now done by sort_buffer_size.
+
+2003-09-05  Jim Meyering  <jim@meyering.net>
+
+       * Use automake-1.7.6b and autoconf-2.57b.  Regenerate dependent files.
+
+       * tests/tail-2/tail-n0f: Wait .5 seconds for backgrounded process
+       to start, rather than just .1.  Upon failure, print unexpected state.
+
+2003-09-04  Paul Eggert  <eggert@twinsun.com>
+
+       * src/head.c (elide_tail_lines_pipe): Don't assign 0 or
+       SAFE_READ_ERROR to tmp->nbytes.
+       * src/tail.c (pipe_lines, pipe_bytes): Likewise.
+
+       * src/head.c (struct linebuffer): Change nbytes and nlines
+       from unsigned int to size_t.  unsigned int is safe (after the
+       2003-09-03 patch) but size_t is cleaner.
+       * src/tail.c (struct linebuffer, struct charbuffer): Likewise.
+       (pipe_bytes): Likewise for local variable 'i', which was 'int'.
+
+       Standardize on BUFSIZ as opposed to other macro names and values.
+       * src/head.c (BUFSIZE): Remove.  All uses changed to BUFSIZ.
+       * src/tail.c (BUFSIZ) [!defined BUFSIZ]: Remove.
+       stdio.h has always defined it,
+       and other code already assumes it's defined.
+       * src/tr.c (BUFSIZ) [!defined BUFSIZ]: Likewise.
+       (IO_BUF_SIZE): Remove; replace all uses with sizeof io_buf.
+       (io_buf): IO_BUF_SIZE -> BUFSIZ.
+
+2003-09-04  Paul Eggert  <eggert@twinsun.com>
+
+       * src/seq.c (step): Default to 1.
+       (print_numbers): Allow the output to be empty.
+       (main): The default step is 1, even if LAST < FIRST;
+       as per documentation.
+       * tests/seq/basic (onearg-2): Output should be empty.
+
+2003-09-05  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.cfg (wget_files): Temporarily disable, until master
+       versions are restored to ftp.gnu.org.
+
+       * configure.ac (AM_INIT_AUTOMAKE): Specify automake-1.7.6.
+
+       Make seq's --width (-w) option work properly even when the
+       endpoint requiring the larger width is negative and smaller than
+       the other endpoint.
+       * src/seq.c (get_width_format): Include `-' in the set of bytes
+       allowed in a `simple' number (no decimal point, no exponent).
+       Reported by Patrick Mauritz.
+
+2003-09-02  Paul Eggert  <eggert@twinsun.com>
+
+       * NEWS: sort -t '\0' now uses a NUL tab.
+       sort option order no longer matters, unless POSIX requires it.
+       * src/sort.c (usage): Say "blanks" instead of "whitespace",
+       Similar fixes for many comments.
+       (TAB_DEFAULT): New constant, so that we can support NUL as
+       the field separator.
+       (tab): Now int, not char.  Initialize to TAB_DEFAULT.
+       (specify_sort_size): If multiple sizes are specified, use the largest.
+       (begfield, limfield): Support NUL tab char.
+       (set_ordering): Do not let -i override -d.
+       (main): Report an error if incompatible -o or -t options are given.
+       Report an error for "-t ''".  Allow "-t '\0'" to specify a NUL tab.
+
+2003-09-05  Jim Meyering  <jim@meyering.net>
+
+       * tests/sort/Test.pm [o2, nul-tab]: New tests for the above.
+
+2003-09-03  Andreas Schwab  <schwab@suse.de>
+
+       Bug report and patch here:
+       <http://mail.gnu.org/archive/html/bug-coreutils/2003-09/msg00009.html>
+       * src/tail.c (pipe_lines): Don't truncate return value from safe_read.
+       * src/head.c (elide_tail_lines_pipe): Likewise.
+
+2003-09-03  Jim Meyering  <jim@meyering.net>
+
+       * src/du.c (AUTHORS): Remove Larry McVoy's name, since the relatively
+       small amount of code from him was first moved to lib/human.c, and was
+       subsequently rewritten entirely.
+       * src/df.c (AUTHORS): Likewise.
+
+2003-08-22  Lawrence Teo  <lcteo@uncc.edu>
+
+       * src/md5sum.c (split_3): Accept the BSD format for generic
+       message digest modes.  Currently works with BSD's MD5 and SHA1
+       formats since these are the two algorithms presently used in
+       coreutils.  Updated comments to reflect this change.
+       (bsd_split_3): Updated comments.
+
+       * tests/md5sum/basic-1: New test to make sure that
+       `md5sum --check' doesn't accept the BSD SHA1 format (adapted
+       from `check-bsd' test in tests/sha1sum/basic-1).
+
+       * tests/sha1sum/basic-1 (check-bsd2, check-bsd3): New tests for
+       --check exit status and BSD SHA1 format (adapted from tests
+       in tests/md5sum/basic-1).
+
+2003-08-30  Jim Meyering  <jim@meyering.net>
+
+       * src/ln.c (do_link): Use SAME_INODE rather than open-coding it.
+
+       When source and destination arguments refer to the same file, reside
+       on a partition (e.g. VFAT) on which distinct names may refer to the
+       same directory entry (often due to variations in case), and when the
+       link count for the file is 1, mv no longer unlinks the file.  Instead,
+       it gives the expected diagnostic that the source and destination are
+       the same.  WARNING: this is an incomplete fix.  If the file happens
+       to have a link count of 2 or greater, such an erroneous mv command
+       will still unlink it.
+       Although that is not possible on vfat or umsdos, it is possible on
+       other file system types, e.g., ntfs, and hpfs.
+       * src/copy.c (same_file_ok): Invoke same_name (which might still
+       return false for names that refer to the same directory entry)
+       only if the link count is 2 or more.
+       * tests/mv/vfat: Show how to demonstrate the above problem.
+       This test is not run.
+       * tests/mv/Makefile.am (EXTRA_DIST): Add vfat.
+
+2003-08-27  Jim Meyering  <jim@meyering.net>
+
+       * src/who.c: Change meaning of -l from --lookup to --login, per POSIX.
+       who's -l option has been eliciting an unconditional warning about
+       this impending change since sh-utils-2.0.12 (April 2002).
+
+       * src/paste.c (paste_parallel): Don't output `EOF' (aka -1) as a `char'.
+       This would happen for nonempty files not ending with a newline.
+       Reported by Dan Jacobson.
+       * tests/misc/paste-no-nl: New file.  Test for above-fixed bug.
+       * tests/misc/Makefile.am (TESTS): Add paste-no-nl.
+
+       * src/stat.c (print_it): Avoid buffer overrun that would
+       occur when the user-specified format string ends with `%'.
+       Patch by Tommi Kyntola.
+       * tests/misc/stat-fmt: New file.  Test for above-fixed bug.
+       * tests/misc/Makefile.am (TESTS): Add stat-fmt.
+
+2003-08-26  Jim Meyering  <jim@meyering.net>
+
+       Apply changes from bison.
+       * GNUmakefile (SHELL): Define to `sh', if necessary.
+       Add copyright.
+       * Makefile.maint (WGETFLAGS): Define to `-C off'.
+       Update all uses of $(WGET).
+
+2003-08-22  Akim Demaille  <akim@epita.fr>
+
+       * Makefile.cfg (local-checks-to-skip): New.
+       * Makefile.maint (local-check): Rename as...
+       (local-checks-available): this.
+       (local-check): New.
+
+2003-08-26  Akim Demaille  <akim@epita.fr>
+
+       * announce-gen (print_changelog_deltas): Neutralize "<#" as
+       "<\#" to avoid magic from Gnus when posting parts of this script.
+
+2003-08-25  Jim Meyering  <jim@meyering.net>
+
+       * src/stat.c (main): Warn about use of deprecated `-l' option.
+
+2003-08-22  Jim Meyering  <jim@meyering.net>
+
+       * src/stat.c (do_stat): For link count at end of line, use %h format,
+       instead of %-5h.  The latter would make stat emit trailing spaces.
+       Reported by Dan Jacobson.
+
+2003-08-20  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.am (EXTRA_DIST): Add .x-sc_space_tab .x-sc_sun_os_names
+
+2003-08-19  Jim Meyering  <jim@meyering.net>
+
+       * src/system.h: Include stdlib.h unconditionally,
+       as we're now assuming that part of hosted C89.
+
+2003-08-18  Jim Meyering  <jim@meyering.net>
+
+       * src/sys2.h (textdomain, bindtextdomain) [! ENABLE_NLS]: Define away,
+       to avoid warnings from gcc.
+
+2003-08-17  Jim Meyering  <jim@meyering.net>
+
+       Avoid unnecessary and sometimes time-consuming hostname lookups.
+       * src/who.c (print_user): Use strchr, not strrchr.
+       * src/pinky.c (print_entry): Likewise.
+       Patch by Michael Stone.
+       This fixes a typo I introduced in who-users.c on 1996-02-23.
+
+       * Makefile.maint (makefile-check): Add 0-9 to the range of characters
+       disallowed between `@...@'.
+
+2003-08-16  Paul Eggert  <eggert@twinsun.com>
+
+       * configure.ac (fu_cv_sys_truncating_statfs): Remove; now
+       done by gnulib .m4 files.
+       (jm_DUMMY_1): Require gl_READUTMP, not jm_PREREQ_READUTMP.
+       * src/sys2.h (strtoull): Remove unused declaration.
+
+2003-08-16  Jim Meyering  <jim@meyering.net>
+
+       * man/Makefile.am (.x.1): Ensure that generated PROGRAM.1 files
+       are read-only.
+
+       * src/tail.c (tail_lines): Fix a potential (but very hard to exercise)
+       race condition bug.  The bug would be triggered when tailing a file
+       with file pointer not at beginning of file, and where the file was
+       truncated to have a length of less than the initial offset at just
+       the right moment (between the two lseek calls in this function).
+
+       An invalid initial value for *read_pos would result in
+       `tail -n0 -f FILE' and `tail -c0 -f FILE' doing what amounted to a
+       busy-wait rather than sleeping between iterations.  The bug manifests
+       itself only when tailing regular files that are initially nonempty.
+       * src/tail.c (tail_bytes): Set *read_pos to new file offset after
+       each xlseek call.
+       (tail_lines): Likewise, after lseek calls.
+       Reported by Nick Estes.  See http://bugs.debian.org/205251 for details.
+       * tests/tail-2/tail-n0f: New file.  Test for above fix.
+       * tests/tail-2/Makefile.am (TESTS): Add tail-n0f.
+
+2003-08-15  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (sc_space_tab): Use exclusion list in separate file.
+       (sc_sun_os_names): Likewise.
+       * .x-sc_space_tab, .x-sc_sun_os_names: New files.
+
+       * man/help2man: Remove some SPACEs before TAB.
+
+2003-08-14  Paul Eggert  <eggert@twinsun.com>
+
+       * Makefile.maint (LC_ALL): Set to C.
+       * man/Makefile.am (ASSORT): New var.
+       (check-x-vs-1, programs): Use it.
+       * src/Makefile.am (ASSORT, check-README, ../AUTHORS): Likewise.
+       * tests/Makefile.am (ASSORT, all_programs): Likewise.
+
+2003-08-11  Jim Meyering  <jim@meyering.net>
+
+       fold -s -wN would infloop for N < 8 with TABs in the input.
+       E.g., this would not terminate: printf 'a\tb' | fold -w2 -s
+       * src/fold.c (fold_file): Move contents of `else'-block
+       out of conditional so it's used also for --spaces (-s).
+       * tests/misc/fold: Test for the above fix.
+       * tests/misc/Makefile.am (TESTS): Add fold.
+
+2003-08-10  Jim Meyering  <jim@meyering.net>
+
+       * src/nice.c [!NICE_PRIORITY]: Include <sys/resource.h> after
+       system.h so the types from time.h and sys/time.h are available.
+       It appears that this is necessary for OpenBSD, NetBSD, and
+       Darwin 6.5 (MacOS 10.2.5).  Reported by Nelson Beebe.
+
+2003-08-06  Paul Eggert  <eggert@twinsun.com>
+
+       * NEWS: Add support for setting file timestamps to microsecond
+       resolution, on hosts that support this.
+       * src/copy.c, src/cp.c, src/install.c, src/touch.c: Include utimens.h.
+       * src/copy.c (copy_internal):
+       Set file timestamps with utimens, not utime.
+       * src/cp.c (re_protect): Likewise.
+       * src/install.c (change_timestamps): Likewise.
+       * src/touch.c (newtime, touch, main): Likewise.
+
+2003-08-09  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (sc_sun_os_names): New rule based on a regexp
+       from Paul Eggert.
+       (syntax-check-rules): Add it.
+
+       * src/tail.c (main): Tweak Solaris OS version number in comment.
+       * src/wc.c (wc): Likewise
+       * tests/tail-2/fflush: Likewise.
+
+       * src/tail.c: Add new undocumented option, --presume-input-pipe.
+       (pipe_lines): Use memchr to skip lines, rather than an explicit loop.
+
+2003-08-08  Paul Eggert  <eggert@twinsun.com>
+
+       Use new gnulib 'extensions' module.
+       * configure.ac: Invoke gl_USE_SYSTEM_EXTENSIONS instead of
+       AC_GNU_SOURCE.
+
+2003-08-08  Paul Eggert  <eggert@twinsun.com>
+
+       * tests/du/basic: Ensure that a/b/F has at least 65 bytes too.
+
+2003-08-09  Jim Meyering  <jim@meyering.net>
+
+       * tests/misc/split-fail: Reflect that `split -a 0' is now accepted.
+       For tests of obsolete behavior, don't presume that unsetting
+       _POSIX2_VERSION is equivalent to _POSIX2_VERSION=199209.
+
+2003-08-07  Paul Eggert  <eggert@twinsun.com>
+
+       * doc/coreutils.texi (split invocation):
+       Add -d or --numeric-suffixes option to 'split'.
+       From a suggestion by Jesse Kornblum.
+       * src/split.c (suffix_alphabet): New var.
+       (longopts, usage, next_file_name, main): Support -d.
+       (next_file_name, main): Allow -a0, as POSIX requires.
+       (next_file_name): Don't assume ASCII-like encoding;
+       'a' through 'z' are not contiguous in EBCDIC.
+
+2003-08-05  Paul Eggert  <eggert@twinsun.com>
+
+       Merge getline from gnulib.
+       * lib/getline.h, lib/getline.c, m4/getline.m4: Merge from gnulib.
+       * lib/getndelim2.h, lib/getndelim2.c, m4/getndelim2.m4, m4/ssize_t.m4:
+       New files, from gnulib.
+       * lib/getdelim2.c, lib/getdelim2.h: Remove.
+       * lib/Makefile.am (libfetish_a_SOURCES): Change getdelim2.c and
+       getdelim2.h to getndelim2.c and getndelim2.h.
+       * m4/jm-macros.m4 (jm_MACROS): Use gl_GETNDELIM2 rather than
+       checking for getdelim.
+       (jm_CHECK_ALL_TYPES): Use gt_TYPE_SSIZE_T for ssize_t rather
+       than rolling our own.
+       * src/cut.c: Include getndelim2.h rather than getdelim2.h.
+       (cut_fields): Invoke getndelim2 rather than getdelim2.
+
+2003-08-04  Jim Meyering  <jim@meyering.net>
+
+       * src/sort.c (main): Use unsigned int instead of int for `nsigs'
+       and for the indices to iterate through nsigs.
+
+2003-08-02  Paul Eggert  <eggert@twinsun.com>
+
+       * src/sort.c: Minor code cleanups, mostly to use more accurate
+       types and to remove unnecessary casts.
+       (min, max): Remove.  All uses changed to MIN and MAX.
+       (hard_lc_collate, hard_LC_TIME, struct buffer.eof, struct
+       keyfield.skipsblanks, struct keyfield.skipeblanks, struct
+       keyfield.numeric, struct keyfield.general_numeric, struct
+       keyfield.month, struct keyfield.reverse, reverse, unique,
+       have_read_stdin): Now bool, not int.  All uses changed.
+       (eolchar): Now char, not int.
+       (struct keyfield.ignore): Now bool const *, not int *.
+       (struct keyfield.translate): Now char const *, not char *.
+       (struct month.name): Likewise.
+       (blanks, nonprinting, nondictionary): Now bool[], not int[].
+       (cleanup, inittables, keycompare, check, mergefps, first_same_file,
+       check, sort, main): Use const * pointers when possible.
+       (month_cmp): Rewrite to avoid casts.
+       (inittables): Initialize tables unconditionally, to avoid branches.
+       (fillbuf): Return bool, not int.  All uses changed.
+       (fillbuf, keycompare, new_key, main):
+       Use SIZE_MAX rather than (size_t) -1.
+       (trailing_blanks): Renamed from trim_trailing_blanks.
+       Return the number of blanks to trim.  All uses changed.
+       (getmonth): Use trailing_blanks rather than open code.
+       (keycompare): Do not cast char * to unsigned char *; not needed.
+       CMP_WITH_IGNORE converts args to UCHAR, so no need to convert it
+       ourselves.
+       (compare, main): Use | rather than || to avoid jumps.
+       Replace "diff = NONZERO (alen)" with "diff = 1", since alen must
+       be nonzero there.
+       (check, first_same_file, sort, main):
+       Use bool instead of int local vars when possible.
+       (check): Merge the old 'checkfp' and 'check' into a single function,
+       that returns a boolean (true if the file was ordered).
+       All uses changed.
+       (main): Use int instead of unsigned for iterating through nsigs.
+       Rename local var "posix_pedantic" to "posixly_correct".
+
+2003-08-02  Jim Meyering  <jim@meyering.net>
+
+       * src/nice.c [!NICE_PRIORITY]: Include <time.h> before <sys/resource.h>
+       to avoid compilation error on Ultrix. Reported by Christian Krackowizer.
+
+       * src/cut.c (cut_fields): Don't read again after encountering an
+       initial EOF.  E.g., `cut -f2' would do so.
+       * tests/misc/tty-eof: Add a test for the above fix.
+
+       * src/sort.c (sortlines): Add description and references.
+       From Paul Eggert.
+
+       * tests/Makefile.am (TESTS_ENVIRONMENT): Set PATH so that
+       the tests in help-version will use the just-built binaries.
+       Reported by Christian Krackowizer.
+
+2003-07-31  Paul Eggert  <eggert@twinsun.com>
+
+       * NEWS: Add --rfc-2822 option to GNU date.
+       * doc/coreutils.texi (Time directives, Options for date, Examples
+       of date): Likewise.
+       * src/date.c (long_options, usage, main): Likewise.
+       * doc/getdate.texi (General date syntax): Likewise.
+       * doc/coreutils.texi (Options for date): Fix a typo in format:
+       it's now %d not %_d.  Add URLs.
+
+2003-08-01  Jim Meyering  <jim@meyering.net>
+
+       * tests/shred/remove: Ensure that $? is 0 for the final `exit 0'.
+       Otherwise, with at least the /bin/sh from HPUX 10.20,
+       the trap code would end up converting that to exit 1 and thus an
+       unexpected test failure.  Reported by Christian Krackowizer.
+
+2003-07-31  Paul Eggert  <eggert@twinsun.com>
+
+       * src/ptx.c: Do not include bumpalloc.h.
+       (WORD_TABLE): New member alloc.
+       (ALLOC_NEW_WORD): Remove.
+       (occurs_alloc): New var.
+       (digest_word_file, find_occurs_in_text): Check for arithmetic
+       overflow when computing table size.  Use xrealloc rather than
+       bumpalloc primitives.
+
+2003-07-29  Jim Meyering  <jim@meyering.net>
+
+       * Version 5.0.90.
+
+       * README: When running tests as root, suggest using
+       sudo with NON_ROOT_USERNAME=$USER.
+
+       * tests/Makefile.am (all_programs): Makefile is in ../src, not
+       $(srcdir)/../src.
+
+2003-07-28  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (GZIP_ENV): Try Debian/gzip's new --rsyncable option.
+
+2003-07-28  Paul Eggert  <eggert@twinsun.com>
+
+       * lib/stdbool.hin (_Bool): Make it signed char, instead of
+       an enum type, so that it's guaranteed to promote to int.
+       * src/sort.c (sortlines_temp): Undo previous change.
+
+2003-07-28  Jim Meyering  <jim@meyering.net>
+
+       * src/sort.c (sortlines_temp): Declare local `swap' to be `int', not
+       `bool'.  Otherwise, at least one buggy compiler (alpha gcc-2.95.4)
+       would cause lines[-1 - swap] (with swap = false) to evaluate to
+       lines[4294967295].
+
+2003-07-27  Jim Meyering  <jim@meyering.net>
+
+       * tests/priv-check (my_uid): Use `!', not `^' in case pattern `[!0-9]',
+       since /bin/sh of at least NetBSD 1.6 and OpenBSD 3.2 don't accept `^'.
+
+       * src/remove.c (prompt) [! recursive]: Don't prompt about unwritable
+       directories, as required by POSIX.   Reported by Karl Berry.
+       * tests/rm/dir-no-w: New file.  Test for the above fix.
+       * tests/rm/Makefile.am (TESTS): Add dir-no-w.
+
+       * tests/mk-script: Emit `$xx', not its expansion.
+
+2003-07-27  Paul Eggert  <eggert@twinsun.com>
+
+       This change was inspired by a similar proposal by Stepan Kasal.
+       * src/sort.c (mergelines, sortlines_temp): New functions.
+       (sortlines): Use them, to reduce the number of times that
+       we need to copy 'struct line' values.  This improved CPU
+       performance by about 30% on one 18 MB test.
+       (sort): Don't invoke sortlines unless we have 2 or more lines.
+
+2003-07-26  Stepan Kasal  <kasal@ucw.cz>
+
+       * src/sort.c (sort): Don't require two `struct line's per text line,
+       the new sort algorithm requires just 1.5.
+
+2003-07-27  Jim Meyering  <jim@meyering.net>
+
+       * src/pathchk.c (validate_path): Use %lu, not %ld.
+       From Paul Eggert.
+       * src/cut.c (is_printable_field): Simplify bit arithmetic.
+       From Paul Eggert.
+       * src/ls.c (sort_files): Put `volatile' in the right place.
+       From Paul Eggert.
+
+2003-07-26  Jim Meyering  <jim@meyering.net>
+
+       Use only one bit per field/offset in array, not one `int'.
+       * src/cut.c (printable_field): Change type to `unsigned char'.
+       (mark_printable_field, is_printable_field): New functions.
+       Use them in place of all direct accesses of `printable_field'.
+
+       * src/expand.c (parse_tabstops): Detect overflow properly.
+       * src/cut.c (set_fields): Likewise.
+
+       * src/rm.c: Include "dirname.h".
+       (usage): Use base_name (program_name) in body of --help output.
+       This lets me...
+       * man/Makefile.am (.x.1): ...back out the kludge of 2003-07-22.
+       Idea from Brendan O'Dea, who suggested using
+       `program_name = basename (argv[0]);' everywhere --
+       can't do that, but using base_name works just fine here.
+
+       * src/Makefile.am (AM_INSTALLCHECK_STD_OPTIONS_EXEMPT): Exempt test.
+
+2003-07-24  Paul Eggert  <eggert@twinsun.com>
+
+       Fix some POSIX-compliance problems with 'test'.  This makes
+       'test' more compatible with Bash.
+
+       * NEWS, doc/coreutils.texi: Document the following.
+       * src/test.c: Include exitfail.h.
+       (TEST_FAILURE): New constant, used for exit status if 'test' fails.
+       (test-syntax_error): Use it.
+       (binary_operator): Now takes bool arg specifying whether left operand
+       is -l ARG, so that caller determines this rather than us.
+       All uses changed.
+       (term): Use posixtest to evaluate parenthesized subexpressions.
+       (unary_operator, one_argument): Remove support for -t without operand.
+       (one_argument): Take argument from argv[pos].
+       (one_argument, two_arguments, three_arguments): Advance pos.
+       All callers changed.
+       (three_arguments): Look for binary ops before "!".  Then look
+       for parenthesized one_argument expressions, instead of trusting
+       expr () to do the right thing.
+       (posixtest): Now takes number of args.  All callers changed.
+       Treat "( A B )" like "A B".
+       (main): Set exit_failure to TEST_FAILURE.  Don't depend on
+       POSIXLY_CORRECT, as we now conform to POSIX by default.
+       (main) [!LBRACKET]: Do not recognize "--help" or "--verbose" unless.
+       * tests/test/Test.pm (test_vector): Add several tests to check
+       the above.  Syntax errors now exit with status 2, not 1.
+       * man/Makefile.am (mapped_name): Use `../src/[' binary to create test.1.
+
+2003-07-26  Jim Meyering  <jim@meyering.net>
+
+       * tests/help-version: Adjust for above change in test behavior:
+       `[' exits with 2, not 1, and test doesn't accept --help or --version.
+
+       * Makefile.maint (ME): Don't use trick suggested in Make manual.
+       It doesn't work for make-3.79.1.  Reported by Christian Krackowizer.
+
+       * Makefile.maint (sc_system_h_headers): Another syntax check.
+       (syntax-check-rules): Add it to the list.
+
+       * src/pathchk.c (validate_path): Cast strlen value to `unsigned long'
+       so it matches `%ld' format even on 32-bit systems.
+
+       * src/fmt.c (flush_paragraph): Cast field width to `int' to
+       avoid warning on 64-bit systems.
+
+       * src/ls.c (sort_files): Make `func' volatile, so it can't be
+       clobbered by a `longjmp' into this function.
+
+2003-07-25  Jim Meyering  <jim@meyering.net>
+
+       * src/pathchk.c (validate_path): Use %ld format (not %d) for size_t
+       value.
+
+       * tests/misc/split-fail: Disable the --line-bytes=$_4gb test,
+       because it'd evoke spurious failure on 64-bit systems.
+
+2003-07-24  Jim Meyering  <jim@meyering.net>
+
+       * src/dd.c (usage): Document the fact that SIGUSR1 makes dd
+       output its current record counts.  Reported by Jurriaan.
+
+       * tests/wc/Test.pm (test_vector): Disable the `PIPE' tests when running
+       `wc' with no options.  This goes along with the change of 2003-07-20.
+
+2003-07-23  Jim Meyering  <jim@meyering.net>
+
+       Don't include headers already included by system.h:
+       * src/tr.c: Don't include errno.h.
+       * src/true.c: Don't include version-etc.h.
+       * src/test.c: Don't include limits.h or error.h.
+       * src/stat.c: Don't include unistd.h or time.h.
+       * src/readlink.c: Don't include stdlib.h, unistd.h, or limits.h.
+       * src/pr.c: Don't include time.h.
+       * src/pathchk.c: Don't include errno.h.
+       * src/nice.c: Don't include sys/time.h.
+       * src/ls.c: Don't include stdlib.h.
+
+       * basename.c, cat.c, chroot.c, cksum.c, comm.c, csplit.c, cut.c, date.c:
+       * dd.c, dirname.c, echo.c, env.c, expand.c, expr.c, factor.c, fmt.c:
+       * fold.c, head.c, hostid.c, hostname.c, id.c, join.c, kill.c, logname.c:
+       * md5sum.c, nice.c, nl.c, nohup.c, od.c, paste.c, pathchk.c, pinky.c:
+       * pr.c, printenv.c, printf.c, ptx.c, pwd.c, seq.c, setuidgid.c, shred.c:
+       * sleep.c, sort.c, split.c, stat.c, stty.c, su.c, sum.c, tac.c, tail.c:
+       * tee.c, test.c, tr.c, true.c, tsort.c, tty.c, uname.c, unexpand.c:
+       * uniq.c, uptime.c, users.c, wc.c, who.c, whoami.c, yes.c:
+       Don't include closeout.h.
+
+       * tests/rm/fail-2eperm: Add a check for whether $NON_ROOT_USERNAME
+       can access the required version of rm.
+       * tests/rm/Makefile.am (TESTS_ENVIRONMENT): Define PACKAGE_VERSION.
+
+       * tests/cut/Test.pm (out-delim3a): New test.
+
+       * man/help2man: Update to version 1.33.
+
+       * src/expand.c (parse_tabstops): Detect overflow in tabstop sizes.
+
+       * src/dircolors.c: Include xstrndup.h.
+       (xstrndup): Remove function, now that it's been factored out into
+       it's own file.
+
+2003-07-22  Paul Eggert  <eggert@twinsun.com>
+
+       * src/wc.c (wc): Fix typo in computation of file from file_x,
+       which caused the former to be used uninitialized if file_x was
+       nonzero.
+
+2003-07-22  Jim Meyering  <jim@meyering.net>
+
+       * src/cut.c (set_fields): Use xcalloc in place of xmalloc+memset.
+
+       * man/Makefile.am (.x.1): Substitute 's,$t/$*,$*,' on output of
+       help2man, to avoid having `rm.td/rm' appear in rm.1.  Reported by
+       Thomas Luzat.  See http://bugs.debian.org/202413 for details.
+
+       * src/cut.c (main) [lint]: Initialize spec_list_string to avoid warning.
+
+       * src/hostid.c: Don't include <unistd.h>.  system.h already does that.
+
+       * src/cut.c (set_fields): Mark all selected indices before trying to
+       determine range endpoints.
+       * tests/cut/Test.pm: New test for the above fix.
+
+       Begin to address this comment: What if someone wants to
+       extract the 1,000,000-th field of some huge input file?
+       The first step is to rearrange things so that the values
+       in the printable_field array are all 0/1 rather than 0/1/2.
+       * src/cut.c (RANGE_START_SENTINEL): Remove.
+       Store range-start indices in a hash table, rather than
+       overloading the `printable_field' array.
+       (range_start_ht): New global.
+       (hash_int, hash_compare_ints, is_range_start_index): New functions.
+       (print_kth): Use is_range_start_index; don't test printable_field.
+       (set_fields): Detect overflow.
+       (set_fields): Insert each range-start index into range_start_ht.
+       (main): Call set_fields only once, and only after
+       output_delimiter_specified and (if required) range_start_ht have
+       been defined.
+
+2003-07-20  Paul Eggert  <eggert@twinsun.com>
+
+       * src/wc.c (get_input_fstatus): Fix typo: `stat' was being
+       invoked with a null pointer when there were no file arguments.
+
+2003-07-20  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (sc_changelog): Add another nit-picky check.
+
+       * src/wc.c (write_counts): Add a comment.
+       (wc): Rename `file' parameter.
+       Set new local, `file', to be the file name, or (when it's NULL)
+       _("standard output") so that all uses of `file' use the proper value.
+       Use STREQ, not strcmp.
+
+2003-07-20  Paul Eggert  <eggert@twinsun.com>
+
+       wc count field widths now are heuristically adjusted depending
+       on the input size, if known.  If only one count is printed, it
+       is guaranteed to be printed without leading spaces.
+
+       Previously, wc did not align the count fields if
+       POSIXLY_CORRECT was set, but POSIX did not actually require
+       this undesirable behavior, so it has been removed.
+
+       * NEWS: Document this.
+       * doc/coreutils.texi (wc invocation): Likewise.
+
+       * src/wc.c (number_width): New var.
+       (posixly_correct): Remove.
+       (struct fstatus): New struct.
+       (write_counts): Output fields of width number_width.
+       Do not worry about POSIXLY_CORRECT.
+       Use null file, not empty-string file, to denote stdin,
+       since "" is a valid file name on some hosts.
+       (wc, wc_file): New arg fstatus.  Use it to avoid invoking fstat
+       if possible.
+       (wc):  Avoid problems if end_pos - current_pos overflows.
+       Do not print odd message if stdin has a read error.
+       (get_input_fstatus, compute_number_width): New functions.
+       (main): Use them to implement the new behavior.
+       Ignore POSIXLY_CORRECT.
+
+       * tests/wc/Test.pm: Adjust to the new output widths.
+
+2003-07-19  Jim Meyering  <jim@meyering.net>
+
+       * tests/rm/fail-eperm: Don't create temporary directory --
+       we don't use it.
+
+       * tests/shred/remove: Don't open-code test for UID != 0.
+       Use priv-check's require-non-root instead.
+       Update to use newer framework.
+
+       * tests/help-version (expected_failure_status_expr): Record that
+       expr exits with status of 3 for e.g., a write error.
+
+       * tests/priv-check: Use `id -u' to see if we're running as root,
+       rather than trying go write to an write-protected file.
+       When running as root, ensure $NON_ROOT_USERNAME is valid.
+       When running as root with `require-non-root', ensure that `.'
+       is writable by $NON_ROOT_USERNAME, then reinvoke $0 set-user-ID
+       to $NON_ROOT_USERNAME.  If `.' is not writable, then skip the test.
+
+       * src/printenv.c: Include "exitfail.h".
+       (main): Set exit_failure rather than calling close_stdout_set_status.
+       * src/date.c: Likewise.
+       * src/sort.c: Likewise.
+       * src/tty.c: Likewise.
+
+2003-07-18  Jim Meyering  <jim@meyering.net>
+
+       * tests/touch/not-owner: Update to use newer framework.
+
+       * tests/rm/fail-eperm: Use $srcdir/../priv-check, create a temporary
+       directory, and remove Perl-coded `you may not run as root' test.
+       * tests/cp/fail-perm: Use $srcdir/../priv-check, rather than
+       hard-coding something not quite equivalent.
+       Paul Jarc reported the inconsistent diagnostics.
+
+       * src/sort.c (main): Use close_stdout via atexit.
+       Now `sort --version' and `sort --help' fail, as they should
+       when their output is redirected to /dev/full.
+
+       * src/su.c (usage): Don't call close_stdout here.
+       (main): Use close_stdout via atexit.
+       Now `su --version > /dev/full' fails, as it should.
+       Somehow, the change of 2000-05-07 that purports to fix this
+       was not checked in.
+
+       * tests/help-version (--help/--version vs. /dev/full): Special-case
+       `[' to protect it from expected_failure_status-`eval'.
+
+       * src/uniq.c (writeline): Use a SPACE, not a TAB between the
+       count and the corresponding line, as required by POSIX.
+       Reported by Clement Wang.
+       * tests/uniq/Test.pm (101, 102): Update tests of -c accordingly.
+
+       * tests/expr/basic: Add tests for when exit status is 2.
+
+       * src/nohup.c (NOHUP_FOUND_BUT_CANNOT_INVOKE, NOHUP_FAILURE):
+       Use an anonymous `enum', rather than #define.
+
+2003-07-17  Paul Eggert  <eggert@twinsun.com>
+
+       * src/expr.c: Include "exitfail.h", "quotearg.h".
+       (EXPR_INVALID, EXPR_ERROR): New constants.
+       (nomoreargs, null, toarith, nextarg): Return bool, not int.
+       (syntax_error): New function, exiting with status 2.  Use it
+       insteading of printing "syntax error" ourselves.
+       (main): Initialize exit_failure to EXPR_ERROR.
+       Exit with EXPR_INVALID on syntax error (too few arguments).
+       (nextarg): Use strcmp, not strcoll; strcoll might return
+       an undesirable 0, or might fail.
+       (docolon, eval4, eval3): Exit with status 3 on invalid argument type
+       or other such error.
+       (eval2): Report an error if strcoll fails in a string comparison.
+       * src/sort.c: Include "exitfail.h".
+       (main): Set exit_failure, not xalloc_exit_failure and
+       xmemcoll_exit_failure.
+       * tests/expr/basic: Invalid value exits with status 3, not 2.
+
+2003-07-16  Jim Meyering  <jim@meyering.net>
+
+       * configure.ac (AC_INIT): Use 5.0.90 as the version, rather than 5.0.2,
+       per GNU maintainer guidelines.  The next non-beta release will be 5.1.
+
+       This script would have caught at least two recent bugs:
+       those in [ and kill.
+       * tests/help-version: Revive this script.
+       It wasn't doing anything useful, since $all_programs wasn't being
+       defined by the invoking Makefile.am.
+       Reflect that nohup is no longer a script, so don't exclude it.
+       Add framework to handle the programs added since it was last run:
+       kill, stat, unlink, [, link, readlink.
+       Fix path-related problems deriving from the move of this script
+       from src/ to its present location.
+       * tests/Makefile.am (all_programs): Define.
+       (TESTS_ENVIRONMENT): Use it.
+
+       * src/kill.c (main): Fix bug introduced on 2003-05-10 (for 5.0.1)
+       whereby kill would always attempt to operate on argv[0] and fail.
+
+       * src/test.c (integer_expected_error): Improve diagnostic -- now,
+       it also matches the one from bash's builtin test.
+       (binary_operator): Add \n at end of diagnostic.
+
+       * tests/rm/fail-2eperm: Remove setuidgid-related code.  Move it to ...
+       * tests/priv-check: Move setuidgid-related and
+       NON_ROOT_USERNAME-checking code to this file.
+
+       * README: Update section on testing as `root'.
+       Suggestion from Paul Jarc.
+
+       * src/test.c (AUTHORS): Replace 3-letter usernames with the actual
+       names of authors that I just found in bash's builtins/test.def.
+
+       Running `[' with no arguments would evoke a segfault.
+       * src/test.c (main) [LBRACKET]: Move initialization of argv to
+       precede potential use via test_syntax_error.
+
+       * src/Makefile.am (AM_CPPFLAGS): Rename from `INCLUDES', to avoid
+       warning from automake -Wall.
+
+2003-07-15  Jim Meyering  <jim@meyering.net>
+
+       * Version 5.0.1.
+
+       * Makefile.maint (%.asc): Remove target first, so gpg doesn't
+       prompt us about it.
+
+       * announce-gen (print_changelog_deltas): Relax tests for matching
+       version-number line in NEWS.
+       Change the .sig suffix to .asc here, too.
+
+2003-07-14  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (%.asc): Renamed from %.sig.
+       Generate and use ascii-armored signatures.
+       Use gpg's -o option.
+
+2003-07-13  Jim Meyering  <jim@meyering.net>
+
+       * src/nohup.c (NOHUP_FAILURE, NOHUP_FOUND_BUT_CANNOT_INVOKE): Define.
+       (main): Use them.
+
+       * Makefile.maint (syntax-check): Move each individual check into
+       its own target.
+       (syntax-check-rules): This is the list of syntax-check targets.
+       (sc_unmarked_diagnostics, sc_cast_of_argument_to_free):
+       (sc_cast_of_x_alloc_return_value, sc_space_tab):
+       (sc_error_exit_success, sc_xalloc_h_in_src):  New targets.
+
+2003-07-12  Jim Meyering  <jim@meyering.net>
+
+       * configure.ac: Remove uses of OPTIONAL_BIN_ZCRIPTS and last
+       traces of the nohup script.
+
+       * src/Makefile.am (bin_SCRIPTS): Remove use of just-removed
+       $(OPTIONAL_BIN_ZCRIPTS).
+
+       * src/Makefile.am (localedir.h): Put the `2>&1' after the redirect
+       target, not before the `>'.
+
+       * src/remove.c (remove_dir): Give a diagnostic upon failed save_cwd,
+       now that that function no longer calls `error'.
+
+       * src/df.c (find_mount_point): Emit a diagnostic for each
+       failed syscall, rather than relying on caller to do that.
+       The caller couldn't do a good job, anyhow -- too many different
+       ways to fail (each with a different referent).
+       Give a diagnostic upon failed save_cwd, now that that function
+       no longer calls `error'.
+       (show_point): Don't diagnose find_mount_point's errors, now that
+       it handles them itself.
+
+       * src/df.c (find_mount_point): Don't let free clobber errno upon
+       failed chdir.
+
+       * src/sys2.h: Remove alloca-related block.
+       * src/system.h: Include <alloca.h> here, instead.
+
+       It appears that the `#pragma alloca' included via "system.h" is
+       adequate, since join.c uses alloca, yet lacked an in-file #pragma.
+       * src/copy.c, src/cp.c, src/df.c, src/install.c, src/ln.c:
+       * src/ls.c, src/mv.c, src/remove.c: Remove `#pragma alloca'.
+
+       * src/chown-core.c (change_file_owner): Do not restore any special
+       permission bits (e.g., set-user-ID, set-group-ID) that are reset
+       by chown(2) on some systems.  Suggestion and insistence :-) from
+       Michael Stone.
+
+       * tests/input-tty: Also check `test -t 1'.
+       This is necessary on linux-2.4.21.  Otherwise, the stty/basic-1
+       test would block when run in the background.
+
+2003-07-11  Jim Meyering  <jim@meyering.net>
+
+       * tests/sample-test: Also fail if cat-to-create-expected-output
+       fails.  Otherwise, if both `exp' and `out' were to end up empty
+       because of e.g., a full disk, they would mistakenly compare equal.
+
+       * src/nohup.c: New file.  Rewrite of nohup.sh in C.
+       This solves a portability problem: on at least Solaris systems,
+       when nohup.sh used the vendor /bin/sh, it would exit with status
+       of `1' rather than the required 126 or 127 upon failure to exec
+       the specified program.
+
+       * src/Makefile.am (EXTRA_SCRIPTS): Remove definition.
+       (bin_PROGRAMS): Add nohup.
+       (EXTRA_DIST): Remove nohup.sh.
+       (all_programs): Remove use of $(EXTRA_SCRIPTS).
+       * src/nohup.sh: Remove file.
+       * man/Makefile.am (nohup.1): Depend on nohup.c, rather than nohup.sh.
+
+       * tests/misc/nohup: Tests for the above.
+       * tests/misc/Makefile.am (TESTS): Add nohup.
+
+       * src/head.c (diagnose_copy_fd_failure): New function, renamed from
+       the macro, COPY_FD_DIAGNOSE.
+       (diagnose_copy_fd_failure): Enclose diagnostic in _(...).
+       (head_file): Likewise.
+
+       * src/date.c: Include "quote.h".
+       (batch_convert): Use the quote function rather than using literal `...'
+       in a diagnostic.
+
+       * src/setuidgid.c (main): Enclose diagnostic in _(...).
+       * src/fmt.c (main): Likewise.
+       * src/mknod.c (main): Likewise.
+       * src/tac.c (tac_seekable): Likewise.
+       * src/yes.c (main): Likewise.
+       * src/od.c (main): Likewise.
+       * src/install.c (change_attributes): Likewise.
+
+2003-07-10  Jim Meyering  <jim@meyering.net>
+
+       * src/head.c (usage): Use 1024*1024 in place of 1048576.
+       * src/tail.c (usage): Likewise.
+
+       * tests/rm/fail-2eperm: Now that we have setuidgid, use it in
+       place of the kludge in this test.  Suggestion from Paul Jarc.
+
+       * src/Makefile.am (noinst_PROGRAMS): Define to setuidgid.
+       * src/setuidgid.c: New program, solely for testing (not installed).
+
+       * src/chown-core.c (change_file_owner): Don't leak file descriptors
+       when dereferencing symlinks.
+
+2003-07-09  Jim Meyering  <jim@meyering.net>
+
+       * tests/du/slash: New file/test for today's lib/ftw.c fix.
+       * tests/du/Makefile.am (TESTS): Add slash
+
+       * src/tail.c (xlseek): Avoid warning about ``return without value
+       from function returning non-void''.
+
+2003-07-08  Jim Meyering  <jim@meyering.net>
+
+       * man/help2man: Update to version 1.29.
+
+       * man/help2man: Add END handler to close STDOUT and check for errors.
+
+2003-06-30  Paul Eggert  <eggert@twinsun.com>
+
+       Add support for a "[" that conforms to the GNU coding standards,
+       i.e., that does not depend on its name.
+       * src/lbracket.c: New file.
+       * README: Add "[".
+       * man/Makefile.am (programs): Ignore "[", since it doesn't have
+       a separate man page.
+       * src/Makefile.am (bin_PROGRAMS): Add "[".
+       (__SOURCES): New var.
+       * src/test.c (LBRACKET): Define to 0 if not defined.
+       (main): Use LBRACKET rather than argv[0].
+
+       * src/test.c (one_argument): Do not check for -t if POSIXLY_CORRECT.
+       Reported by Paul Jarc and Dan Jacobson.
+
+       * src/test.c (main): Do not recognize --help or --version if
+       POSIXLY_CORRECT, when invoked as "test".  Handle "[ ]" correctly.
+       Do not bother testing that margv[margc] is non-null.
+
+2003-07-04  Jim Meyering  <jim@meyering.net>
+
+       * src/who.c (print_line): Rewrite to use asprintf, in order to be
+       able to avoid emitting trailing spaces.  Reported by Dan Jacobson.
+
+       * tests/misc/head-elide-tail: Add tests of head's new --lines=-N
+       option, and perform the +1600 invocations of head IFF the envvar
+       RUN_EXPENSIVE_TESTS is set.
+
+2003-07-03  Jim Meyering  <jim@meyering.net>
+
+       * src/cp.c (do_copy): Give a better diagnostic when failing due
+       to nonexistent destination directory.  Reported by Dmitry Rutsky.
+       See http://bugs.debian.org/199730 for details.
+
+2003-06-27  Jim Meyering  <jim@meyering.net>
+
+       split's --verbose option did nothing [broken in 4.5.10 and 5.0]
+       * src/split.c (longopts): Use `1', not `0' as the value for
+       for &verbose.  Reported by Keith Thompson.
+
+       Test for the above fix.
+       * tests/misc/split-a: Also use --verbose and compare stderr
+       output with what we'd expect.
+
+2003-06-20  Jim Meyering  <jim@meyering.net>
+
+       * src/copy.c (copy_internal) [HAVE_STRUCT_STAT_ST_AUTHOR]:
+       Use `error_t' (rather than int) as type for local `err'.
+       From Alfred M. Szmidt.
+
+2003-06-19  Marcus Brinkmann  <marcus@gnu.org>
+
+       * src/copy.c (copy_internal) [HAVE_STRUCT_STAT_ST_AUTHOR]:
+       Fix author preservation code.
+
+2003-06-19  Jim Meyering  <jim@meyering.net>
+
+       * src/ln.c (ENABLE_HARD_LINK_TO_SYMLINK_WARNING): Define to 0.
+       (do_link): Don't warn about hard link to symlink.
+
+2003-06-18  Jim Meyering  <jim@meyering.net>
+
+       * src/cut.c: Include "getdelim2.h", not "getstr.h".
+       Reflect renaming: getstr -> getdelim2.
+
+       * src/comm.c, src/join.c, src/nl.c, src/uniq.c: Reflect renaming:
+       readline -> readlinebuffer.
+
+2003-06-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       * src/readlink.c: Include <sys/types.h> before system.h (because
+       the latter includes <sys/stat.h>).  Required on Ultrix 4.3.
+
+2003-06-17  Jim Meyering  <jim@meyering.net>
+
+       * src/system.h (initialize_main): Define.
+       Use it in every `main'.  Applied via this:
+       p='initialize_main (&argc, &argv);'
+       perl -ni -e '/program_name.=.argv.0/ and print "  '"$p"'\n"; print' \
+         $(grep -l program_name.=.argv.0 *.c)
+       test.c uses margc/margv, so I made the change manually for that file.
+       Based on a patch from Bernard Giroud.
+
+2003-06-09  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       Fix for build failure on Ultrix 4.3.
+       * src/stat.c: Include sys/statvfs.h in preference to sys/vfs.h.
+       Include sys/param.h and sys/mount.h on ultrix.
+
+2003-06-16  Jim Meyering  <jim@meyering.net>
+
+       * src/touch.c (O_NDELAY, O_NONBLOCK, O_NOCTTY, EISDIR): Remove
+       definitions.
+       * src/system.h (O_NDELAY, O_NONBLOCK, O_NOCTTY, EISDIR): Define
+       them here instead, but with one change: define EISDIR to -1, not 0.
+
+       * src/cat.c (cat): Remove `#ifndef ENOSYS', now that it's
+       guaranteed to be defined.
+       * src/system.h (ENOSYS, ENOTSUP): Define to -1 if not defined.
+
+       * README: Mention the CVS repository.
+       Encourage addition of test cases.
+
+2003-06-12  Jim Meyering  <jim@meyering.net>
+
+       * src/touch.c (touch): Call close only if necessary.
+       From Bruno Haible.
+
+       * src/wc.c (usage): Correct wording: wc prints counts in the order
+       `newline, word, byte'.  Reported by Keith M. Briggs.
+       * man/wc.x: Fix it here, too.  And change `lines' to `newlines'.
+
+2003-06-10  Jim Meyering  <jim@meyering.net>
+
+       * tests/date/Test.pm: Add a test for the new format, e.g., May-23-2003.
+
+2003-06-07  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (syntax-check): Add commented-out (over-aggressive)
+       rule.
+
+2003-06-06  Jim Meyering  <jim@meyering.net>
+
+       * src/extract-magic (main): Avoid newer 3-arg form of open,
+       so this script works also with e.g., perl5.005_03.
+       Patch by John David Anglin.
+
+2003-06-04  Paul Eggert  <eggert@twinsun.com>
+
+       * src/system.h: Include <stdbool.h> unconditionally.
+
+2003-06-04  Jim Meyering  <jim@meyering.net>
+
+       * man/Makefile.am (check-programs-vs-x): Rename target
+       from check-programs-vs-1.  Adjust rule to check for the
+       primary (.x) file, not the generated one (.1).
+
+2003-06-03  Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>
+
+       * man/kill.x: New file.
+       * man/Makefile.am (dist_man_MANS): Add kill.1.
+       (kill.1): New rule.
+
+2003-06-04  Jim Meyering  <jim@meyering.net>
+
+       Ensure that the .x file for a new program is never forgotten again.
+       * man/Makefile.am (programs): Define.
+       (check-programs-vs-1): New phony target.
+       (check-local): Depend on it.
+
+2003-06-03  Jim Meyering  <jim@meyering.net>
+
+       Avoid unnecessary copying of environment.
+       * src/env.c (main): Rather than clearing the environment and --
+       unless told to ignore environment -- copying all settings from
+       the saved, original environment, clear the environment only when
+       that is requested.  Suggested by Jens Elkner.
+
+2003-06-02  Jim Meyering  <jim@meyering.net>
+
+       * src/system.h: Always include <string.h>, since we assume C89.
+       Include <limits.h> without checking for HAVE_LIMITS_H.
+
+       * src/test.c [!TEST_STANDALONE]: Remove #if-0'd block.
+       (STREQ, S_IXUGO): Remove redundant (in system.h) definitions.
+
+2003-06-01  Jim Meyering  <jim@meyering.net>
+
+       Avoid a race condition in `tail -f' described by Ken Raeburn in
+       http://mail.gnu.org/archive/html/bug-textutils/2003-05/msg00007.html
+       * src/tail.c (file_lines): Add new parameter, *read_pos, and set it.
+       (pipe_lines, pipe_bytes, start_bytes, start_lines): Likewise.
+       (tail_bytes, tail_lines, tail): Likewise.
+       (tail_file): Use the new `read_pos' value as the size,
+       rather than stats.st_size from the fstat call.
+
+2003-05-28  Jim Meyering  <jim@meyering.net>
+
+       * src/extract-magic: Allow expansion of `$file' in the here-
+       document corresponding to the comment at the top of fs.h.
+
+2003-05-26  Jim Meyering  <jim@meyering.net>
+
+       * src/stat.c: Fix portability problem on FreeBSD5.0: don't include
+       <sys/statvfs.h> on systems without HAVE_STRUCT_STATVFS_F_BASETYPE.
+       Use #if/#elif/... cascade so we get only one set of include files.
+       Reported by Nelson Beebe.
+
+2003-05-24  Jim Meyering  <jim@meyering.net>
+
+       * src/md5sum.c (split_3): Accept the BSD format only when in MD5 mode.
+       * tests/sha1sum/basic-1: Make sure `sha1sum --check' doesn't
+       accept the BSD format.
+
+2003-03-28  Joe Orton  <jorton@redhat.com>
+
+       * src/md5sum.c (bsd_split_3): New function.
+       (split_3): Detect checksums from BSD 'md5' command and handle them
+       using bsd_split_3.
+
+       * tests/md5sum/basic-1: New tests for --check exit status, and for
+       BSD-style checksum files.
+
+2003-05-21  Jim Meyering  <jim@meyering.net>
+
+       * src/head.c (elide_tail_lines_pipe): Fix a thinko.
+       This sort of thing is why it'd be *Really Good* to factor
+       out the common code used here and in tail.c.
+
+2003-05-14  Jim Meyering  <jim@meyering.net>
+
+       * src/head.c (usage): Document new feature: --bytes=-N and --lines=-N.
+
+       * tests/du/slink: Skip this test if `.' is on an XFS file system.
+
+       * tests/du/fd-leak: New file.  Test for the bug in du that
+       was fixed by the 2003-05-12 change to lib/ftw.c.
+       * tests/du/Makefile.am (TESTS): Add fd-leak.
+
+       * src/head.c (AUTHORS): Enclose string in N_(...), now that it
+       includes a translatable word, `and'.
+
+       * src/dd.c (usage): Don't use `,' as the thousands separator
+       in e.g. 1,000,000 and 1,048,576.  Instead, do this:
+       `SIZE may be ..., MB 1000*1000, M 1024*1024 and so on...'
+       * src/df.c (usage): Likewise.
+       * src/du.c (usage): Likewise.
+       * src/ls.c (usage): Likewise.
+
+       * Makefile.maint (syntax-check): Add another check.
+
+2003-05-13  Paul Eggert  <eggert@twinsun.com>
+
+       Fix uniq to conform to POSIX, which requires that "uniq -d -u"
+       must output nothing.  Problem reported by Josh Hyman.
+
+       * src/uniq.c (enum output_mode, mode): Remove, replacing with:
+       (output_unique, output_first_repeated, output_later_repeated):
+       New vars.  All uses of "mode" changed to use these variables,
+       which are not mutually exclusive as "mode" was.
+       (writeline): New arg "match", used to control whether to
+       obey output_first_repeated or output_later_repeated.
+       All callers changed.
+       (check_file, main): Adjust to above changes.
+
+       * tests/uniq/Test.pm: Test that 'uniq -d -u' outputs nothing.
+
+2003-05-14  Jim Meyering  <jim@meyering.net>
+
+       * tests/rm/rm3: Use tr's \n notation rather than \012.
+       This package can afford to do that, since its tests are guaranteed use
+       GNU tr, which has accepted the more modern notation for 10 years.
+       * tests/rm/rm5: Likewise.
+       * tests/cp/same-file: Likewise.
+       * tests/stty/row-col-1: Likewise.
+       * tests/stty/basic-1: Likewise.
+       * tests/rm/deep-1: Likewise.
+       * tests/mv/part-symlink: Likewise.
+       * tests/mkdir/perm: Likewise.
+       * tests/misc/nice: Likewise.
+
+2003-05-13  Jim Meyering  <jim@meyering.net>
+
+       * src/copy.c (struct F_triple) [name]: Remove const attribute.
+       (triple_free): Don't apply cast to argument of free.
+       (seen_file): Add cast here instead.
+
+       * src/cp-hash.c (struct Src_to_dest) [name]: Remove const attribute.
+       (src_to_dest_free): Don't apply cast to argument of free.
+
+       * src/sort.c (zaptemp): Don't apply cast to argument of free.
+       * src/pr.c (init_fps, init_store_cols): Likewise.
+       * src/join.c (delseq, freeline): Likewise.
+       * src/expr.c (OLD): Likewise.
+       * src/sort.c (sort): Likewise.
+       * src/head.c (elide_tail_lines_pipe): Likewise.
+
+       * src/tail.c: Include "quote.h".
+       Use quote in diagnostics.  Change many error format strings
+       from just `%s' to e.g., `error reading %s'.
+       (pipe_lines): Change type of parameter, n_lines, to uintmax_t.
+       Rewrite newline-counting loop to use memchr.
+
+       * src/head.c (elide_tail_lines_pipe): Use `if', not assert.
+       Now that assert is no longer used, don't include <assert.h>.
+
+2003-05-12  Jim Meyering  <jim@meyering.net>
+
+       * src/head.c: Include <assert.h>.
+       (AUTHORS): Add my name.
+       (elide_tail_lines_pipe): New function.
+
+2003-05-10  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (syntax-check): Check for `error (EXIT_SUCCESS,'.
+
+       * src/readlink.c (main): Set program_name before first use.
+       Remove that (redundant) first use.
+       Don't exit successfully just because --verbose was specified.
+       Pass 0, not EXIT_SUCCESS, as first argument to error; when that
+       parameter is 0, error does not exit.
+
+       * src/uname.c (main): When failing due to too many arguments, also say
+       that, rather than just "Try `uname --help' for more information.".
+       * src/comm.c (main): Likewise, but for too few arguments.
+       * src/logname.c: Include error.h.
+       (main): Say why we're failing.
+
+       * src/uniq.c (main): Don't segfault when argc < optind.
+       * src/who.c (main): Handle argc < optind.
+       * src/df.c (main): Likewise.
+       * src/install.c (main): Likewise.
+       * src/mv.c (main): Likewise.
+       * src/pwd.c (main): Likewise.
+       * src/tty.c (main): Likewise.
+       * src/chroot.c (main): Likewise.
+       * src/hostname.c: Likewise.
+       * src/du.c (main): Likewise.
+       * src/expand.c (main): Likewise.
+       * src/env.c (main): Likewise.
+       * src/unexpand.c (main): Likewise.
+       * src/printenv.c (main): Likewise.
+       * src/sync.c (main): Handle argc == 0.
+       * src/expr.c (main): Likewise.
+       * src/printf.c (main): Likewise.
+       * src/basename.c (main): Likewise.
+       * src/ln.c (main): Test for `missing argument' before computing n_files.
+       * src/tail.c (main): Test for the case of no arguments before
+       computing n_files.
+
+       * src/kill.c (send_signals): Don't check command line arguments here.
+       (main): Check them here instead.  Handle argc < optind.
+
+       * src/logname.c (main): Use error, rather than fprintf, for the sake
+       of consistency.
+
+       * src/rm.c (main): Don't overrun array bound if argc is 0.
+
+2003-05-09  Jim Meyering  <jim@meyering.net>
+
+       * src/sort.c (main): Don't overrun array bound if argc is 0.
+       That would happen when invoked via: execl ("/usr/bin/sort", NULL);
+       Reported by Wartan Hachaturow.
+
+2003-05-07  Jim Meyering  <jim@meyering.net>
+
+       Implement support so that `head --lines=-N' works on seekable files.
+       * src/head.c (enum Copy_fd_status): Define.
+       (COPY_FD_DIAGNOSE): New macro.
+       (elide_tail_lines_seekable): New funtion.
+       (elide_tail_lines_file): Call it here.
+
+2003-05-06  Jim Meyering  <jim@meyering.net>
+
+       * src/sys2.h (CHAR_BIT): Remove duplicate definition.
+
+2003-05-04  Jim Meyering  <jim@meyering.net>
+
+       * tests/head/Test.pm: Remove tests of --bytes=-N; using that framework
+       caused the addition of thousands of small files to the tar archive.
+       * tests/misc/head-elide-tail: New file.  Add them here instead.
+       * tests/misc/Makefile.am (TESTS): Add head-elide-tail.
+
+2003-05-04  Paul Eggert  <eggert@twinsun.com>
+
+       * src/remove.c (HAVE_WORKING_READDIR): Define to 0 if not defined.
+       (IF_READDIR_NEEDS_REWINDDIR): Remove.
+       (remove_cwd_entries): Rewrite to avoid IF_READDIR_NEEDS_REWINDDIR,
+       which was a bit weird because it couldn't be emulated by a function.
+
+2003-05-03  Jim Meyering  <jim@meyering.net>
+
+       Extend head to accept --lines=-N (--bytes=-N) and to print all
+       but the N lines (bytes) at the end of the file.
+       * src/head.c: Include full-write.h, full-read.h, inttostr.h, quote.h.
+       Use quote() in diagnostics, rather than literal `' marks.
+       (copy_fd, elide_tail_bytes_pipe, elide_tail_bytes_file):
+       New functions.
+       (elide_tail_lines_pipe, elide_tail_lines_file): New functions.
+       (head_file): Reorganize so as to call head from only one place.
+       (main): Likewise, for head_file.
+       Handle new, undocumented option, --presume-input-pipe.
+       Handle negative line and byte counts.
+       * tests/head/Test.pm: Add lots of tests to exercise --bytes=-N.
+
+       * tests/du/8gb: Skip test if the file system of `.' doesn't support
+       sparse files -- otherwise it'd create a file of size 8GB.
+
+2003-05-02  Jim Meyering  <jim@meyering.net>
+
+       * src/fmt.c (usage): Don't mention obsolescent -WIDTH option.
+       Instead explain about `-' and standard input.
+       (main): Give a proper diagnostic for e.g., `fmt -c -72'.
+       Reported by Keith Thompson.
+       * tests/fmt/basic: Add test for the above fix.
+
+       * src/fmt.c: Include "quote.h".
+       Use quote() in diagnostics, rather than literal `' marks.
+       (main): Exit nonzero when unable to open an input file.
+       * tests/fmt/basic: Add test for the above fix.
+
+       * src/fmt.c (main): Diagnose invalid suffix on obsolescent width
+       specifications like `-72x'.
+       * tests/fmt/basic: Add test for the above fix.
+
+       Work around nasty readdir bug on Darwin6.5.
+       * src/remove.c (IF_READDIR_NEEDS_REWINDDIR): Define.
+       [! HAVE_WORKING_READDIR] (remove_cwd_entries): If readdir has just
+       returned NULL and there has been at least one successful unlink or
+       rmdir call since the opendir or previous rewinddir, then call
+       rewinddir and reiterate the loop.
+
+       Factor out common code.
+       * src/remove.c (readdir_ignoring_dotdirs): New function.
+       (is_empty_dir): Use it here.
+       (remove_cwd_entries): Use it here.
+
+2003-05-01  Jim Meyering  <jim@meyering.net>
+
+       * tests/rm/r-3: Create 500 rather than just 300 files.
+       There's a bug in Darwin6.5's readdir that shows up only with
+       338 or more files.
+       Fix a bug in this test: `cd $pwd' (not to `..'), now that $tmp
+       has two components.
+
+       * src/tail.c:
+       Change type of n_units, n_bytes, n_lines to be `uintmax_t'.
+       (dump_remainder): Move two declarations `down' into the scope
+       where they are used.
+       (xlseek): Return the resulting offset.
+       (file_lines): Rename parameter, file_length, to end_pos.
+       (pipe_lines): Don't coerce safe_read return value to `int'.
+       Adapt tests accordingly.
+       (pipe_bytes) [struct charbuffer] (nbytes): Change type from `int'
+       to `unsigned int'.
+       Change type of `total_bytes' from `int' to `size_t',
+       since the former wouldn't always be wide enough.
+       Don't coerce safe_read return value to `int',
+       and adapt tests accordingly.
+       Now that testing for a read error no longer involves
+       using `tmp', handle that case *after* freeing `tmp'.
+       (start_bytes): Clean up.
+       (tail_bytes): Now that `n_bytes' may be larger than
+       OFF_T_MAX, test for that condition and, if it's true, don't
+       use lseek optimizations.
+       (parse_options): Don't fail just because N_UNITS is larger than
+       the maximum size of a file -- tail may be applied to an input
+       stream (e.g., a pipe) with more data than that.
+
+       * Makefile.maint (syntax-check): Rename from alloc-check.
+       Also check for SPACE-TAB sequences.
+       Also check for malloc/calloc/realloc casts.
+
+2003-05-01  Jim Meyering  <jim@meyering.net>
+
+       * src/tail.c (start_lines): Rewrite to use memchr.  Clean up.
+
+2003-04-28  Jim Meyering  <jim@meyering.net>
+
+       * tests/misc/tty-eof: Send two tokens, not just one, so we don't
+       make the now-more-picky tsort fail.
+
+2003-04-24  Jim Meyering  <jim@meyering.net>
+
+       * src/tsort.c (tsort): Remove unnecessary test of have_read_stdin.
+       (main): Minor syntactic clean-up.
+
+       * src/tsort.c (tsort): Fail if the input contains an odd number of
+       tokens.  Reported by junkio@cox.net.
+
+       * tests/tsort/basic-1: Test for the above fix.
+
+2003-04-21  Jim Meyering  <jim@meyering.net>
+
+       * tests/misc/printf: Add tests for the printf fixes below.
+
+       * Makefile.cfg (cvs_files): Add $(srcdir)/config/depcomp to the list.
+
+2003-04-20  Paul Eggert  <eggert@twinsun.com>
+
+       Fix printf POSIX compatibility bug reported by Ben Harris in
+       <http://mail.gnu.org/archive/html/bug-coreutils/2003-04/msg00070.html>.
+       * doc/coreutils.texi (printf invocation): It's \NNN in the format,
+       \0NNN in the %b operand.
+       * src/printf.c (usage): Likewise.
+       (print_esc): New arg OCTAL0 to specify whether \0NNN or \NNN
+       is desired.  All uses changed.  Behave like Bash printf if %b
+       operand uses \NNN where the initial N is not 0.
+
+2003-04-17  Jim Meyering  <jim@meyering.net>
+
+       * src/stty.c: Remove uses of PROTOTYPE macro.
+
+2003-04-15  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint: Remove (or replace-with-TAB(s) to retain alignment)
+       each sequence of spaces before a TAB character.
+
+2003-04-13  Jim Meyering  <jim@meyering.net>
+
+       * src/remove.c (is_empty_dir): Don't closedir (NULL).
+
+2003-04-12  Jim Meyering  <jim@meyering.net>
+
+       Giving nl an invalid STYLE argument (in --header-numbering=STYLE (-h),
+       --body-numbering=STYLE (-b), or --footer-numbering=STYLE (-f)) or
+       FORMAT (--number-format=FORMAT (-n)) would not give a useful diagnostic.
+       * src/nl.c (main): Fix those problems and remove literal quote marks
+       (e.g., "`%s'") from format string; instead use "%s" in each format
+       string and `quote (optarg)' as the corresponding argument.
+       Also, diagnose all invalid command line options before failing.
+
+       * src/nl.c (proc_text): Fix a bug that would make nl output extra
+       newlines in some cases.  Details here: http://bugs.debian.org/177256.
+       This bug was introduced on 2001-11-10 for textutils-2.0.17.
+       * tests/misc/nl: Add test for the above-fixed bug.
+
+       * tests/misc/readlink: New file.  Test the --canonicalize option.
+       * tests/misc/Makefile.am (TESTS): Add readlink.
+
+2003-04-11  Jim Meyering  <jim@meyering.net>
+
+       Clean up.
+       * src/chown.c, src/cp.c, src/dircolors.hin, src/du.c, src/ln.c:
+       * src/mkfifo.c, src/ptx.c, src/spline.c, src/stty.c, src/tail.c:
+       * src/test.c, src/unexpand.c: Remove (or replace-with-TAB(s) to
+       retain alignment) each sequence of spaces before a TAB character.
+
+       * src/ls.c: Include <stdlib.h> unconditionally.
+
+       * Makefile.maint (xalloc-check): Rename from header-check.
+
+       * src/yes.c: Include error.h after system.h, not before.
+
+       Clean up.
+       * src/copy.c, src/cp-hash.c, src/cp.c, src/csplit.c, src/cut.c:
+       * src/date.c, src/df.c, src/du.c, src/expand.c, src/expr.c, src/id.c:
+       * src/join.c, src/md5sum.c, src/nl.c, src/od.c, src/paste.c, src/pr.c:
+       * src/ptx.c, src/sort.c, src/split.c, src/su.c, src/tail.c, src/tee.c:
+       * src/tr.c: * src/unexpand.c, src/users.c:
+       Remove anachronistic casts of xmalloc, xrealloc, and xcalloc
+       return values and of xrealloc's first argument.
+       Fix the former with this:
+       perl -pi -e 's/\([^(]*?\*\) *(x(m|c|re)alloc)\b/$1/'
+
+2003-04-10  Jim Meyering  <jim@meyering.net>
+
+       * src/stty.c (wrapf): Declare with format attribute.
+
+       The S_MAGIC_... names shouldn't be maintained in two places (prior
+       to this change, one would have to keep stat.c and fs.h in sync).
+       This change makes it so those names and the corresponding
+       hexadecimal constants all reside in stat.c.  fs.h is now generated.
+       * src/Makefile.am (fs.h): New rule to generate fs.h from stat.c.
+       (BUILT_SOURCES): Add fs.h, now that it's generated.
+       (EXTRA_DIST): Add extract-magic.
+       * src/extract-magic: New script to extract fs.h definitions from stat.c.
+       * src/stat.c (human_fstype) [__linux__]: Append each hex constant from
+       fs.h in a comment after the corresponding `case S_MAGIC_...:' statement.
+
+       * tests/tail-2/big-4gb: Skip this test (don't fail) if creating a
+       file with nominal length > 4GB fails.  Reported by Michael Deutschmann.
+
+       * man/unexpand.x: Add `SEE ALSO' reference to expand.
+       * man/expand.x: Add `SEE ALSO' reference to unexpand.
+       Suggestion from Dan Jacobson.
+
+2003-04-10  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>
+
+       * src/fs.h (S_MAGIC_DEVPTS): New magic for Linux's devpts.
+       * src/stat.c (human_fstype): Handle Linux's devpts.
+
+2003-04-09  Paul Eggert  <eggert@twinsun.com>
+
+       * src/split.c (line_bytes_split): Arg is of type size_t, since
+       that's all that is supported for now.
+       (main): Check for overflow in obsolescent line count option.
+
+2003-04-09  Jim Meyering  <jim@meyering.net>
+
+       * tests/misc/split-fail: Add a new test for the above fix.
+
+       * src/split.c (bytes_split): Use size_t temporary (rather than
+       uintmax_t original) in remaining computations.  From Paul Eggert.
+
+       Handle command line option arguments larger than 2^31.
+       This allows e.g., splitting into files of size 2GB and larger,
+       and running split --lines=N with N=2^31 or more.
+       But for --line-bytes=N, the restriction that N <= SIZE_MAX
+       remains (for now), due to the way it is implemented.
+
+       * src/split.c: Include "inttostr.h".
+       (bytes_split, lines_split, line_bytes_split, main):
+       Use uintmax_t, not size_t, for file sizes.
+       (main): Give a better diagnostic for option arguments == 0.
+       Use umaxtostr to print file sizes.
+       Reported by Luke Hassell.
+
+2003-04-08  Jim Meyering  <jim@meyering.net>
+
+       * src/rm.c (usage): Mention that --directory (-d) works only
+       on some systems.  Suggestion from Samuel Tardieu.
+
+       * tests/basename/basic: Run $PERL to see if it is available,
+       rather than testing its value.
+       * tests/sum/sysv, tests/tsort/basic-1, tests/unexpand/basic-1:
+       * tests/basename/basic, tests/dd/skip-seek, tests/dircolors/simple:
+       * tests/expr/basic, tests/factor/basic, tests/fmt/basic:
+       * tests/ls-2/tests, tests/md5sum/basic-1, tests/md5sum/newline-1:
+       * tests/misc/sort, tests/misc/tty-eof, tests/mv/i-1:
+       * tests/rm/empty-name, tests/rm/fail-eperm, tests/rm/unreadable:
+       * tests/seq/basic, tests/sha1sum/basic-1, tests/sha1sum/sample-vec:
+       * tests/sum/basic-1, tests/seq/basic: Likewise.
+
+       * tests/misc/Makefile.am (TESTS): Add split-fail.
+       * tests/misc/split-fail: New file.
+
+       * src/split.c: Rename local variables: nchars -> n_bytes.
+       (lines_split): Rename local, nlines -> n_lines.
+       (main): Rename local variable: s/accum/n_units/.
+       (main): Use STDIN_FILENO, not literal `0'.
+
+2003-04-07  Jim Meyering  <jim@meyering.net>
+
+       * src/stat.c: Add #include directives for Ultrix 4.4.
+       Based on a suggested change from Bert Deknuydt.
+
+2003-04-06  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (makefile-check): New rule.
+       (local-check): Add it.
+
+2003-04-05  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.am (nearly all of them):
+       Use $(VAR) rather than @VAR@, now that we can rely on automake to
+       emit a definition for each substituted variable.
+       * tests/Makefile.am.in: Likewise.
+
+       * tests/rm/rm5: Add a comment explaining why this test fails when
+       using Tru64's broken sed.
+       * tests/rm/rm3: Likewise.
+
+       Make `kill -t' output signal descriptions (not `?') on Tru64.
+       * src/kill.c (sys_siglist): Also check for __sys_siglist.
+       Patch by Tony Leneis.
+       * configure.ac: Also check for declaration of __sys_siglist.
+       Required for Tru64 4.0D, 4.0F, and 5.1.
+       Reported by Tony Leneis.
+
+2003-04-04  Jim Meyering  <jim@meyering.net>
+
+       * src/Makefile.am (PERL): Remove unnecessary definition.
+
+       Because of inappropriate (but POSIX-mandated) behavior of rename,
+       `mv a b' would not remove `a' in some unusual cases.  Work around
+       this by unlinking `a' when necessary.
+
+       * src/copy.c (same_file_ok): Add an output parameter.
+       Set it in the offending case.
+       (copy_internal): When necessary, unlink SRC_PATH and inform caller.
+       Reported by Ed Avis.
+       * tests/mv/hard-4: New test for the above.
+       * tests/mv/Makefile.am (TESTS): Add hard-4.
+
+       Clean up rules for automatically generated sources:
+       * src/Makefile.am (dircolors.h, wheel-size.h, wheel.h, false.c):
+       Make each generated file be read-only.
+       Add each file name to BUILT_SOURCES separately.
+       (MAINTAINERCLEANFILES): Set to $(BUILT_SOURCES).
+
+       Put LOCALEDIR macro definition in new file: localedir.h.
+       * src/Makefile.am (DEFS): Remove definition.
+       (localedir.h): New rule.
+       (BUILT_SOURCES, DISTCLEANFILES): Add localedir.h.
+       * src/system.h: Include "localedir.h".
+
+2003-04-02  Jim Meyering  <jim@meyering.net>
+
+       * Version 5.0.
+
+       * tests/misc/Makefile.am (TESTS): Add false.
+
+       * Makefile.maint (TMPDIR): Make sure it's defined.
+       (my-distcheck): Build in $(TMPDIR), not `.'.
+
+       * src/Makefile.am (false.c): Change all occurrences of
+       `(EXIT_SUCCESS)' to `(EXIT_FAILURE)' so that false exits
+       unsuccessfully also with --help.  Reported by Paul Jarc,
+       * tests/misc/false: New test for the above.
+
+2003-03-30  Jim Meyering  <jim@meyering.net>
+
+       * NEWS: Note the location of older NEWS files.
+
+       * src/remove.c (is_empty_dir): Don't let a failing closedir
+       clobber errno.  Spotted by Arnold Robbins.
+
+       * src/env.c: Fix typo in comment.  From Arnold Robbins.
+
+2003-03-29  Jim Meyering  <jim@meyering.net>
+
+       * Version 4.5.12.
+
+       * README: Note to expect build problems for stat.c on Ultrix 4.3.
+       Note that there are some harmless test failures when running
+       `make check' as root on some systems.
+
+2003-03-28  Jim Meyering  <jim@meyering.net>
+
+       * tests/stty/row-col-1: Skip this test if stty can't get window size.
+       This happens when connecting to sparc-solaris5.7 via ssh from within
+       emacs.  Reported by Karl Berry.
+
+       * tests/du/basic: Use seq, not `yes' to generate 4KB of data.
+       Otherwise, on systems (DJGPP) that emulate pipes using files,
+       this test would never complete, waiting for `yes' to terminate.
+       * tests/du/slink: As above, use seq, not `yes' to generate link target.
+       * tests/rm/hash: As above, use seq, not `yes' to generate dir name.
+       Reported by Rich Dawe.
+
+2003-03-27  Jim Meyering  <jim@meyering.net>
+
+       * src/id.c: Remove Arnold Robbins' obsolete e-mail address
+       from `written by...' comment, at his request.
+
+2003-03-24  Paul Eggert  <eggert@twinsun.com>
+
+       Fix buffer overrun problem reported by TAKAI Kousuke, along
+       with some other POSIX incompatibilities.
+
+       * src/printf.c (print_esc): Do not treat \x specially if
+       POSIXLY_CORRECT.  Avoid buffer overrun if the format ends
+       in backslash.  Treat incomplete escape sequences as strings
+       of characters, as POSIX requires.
+       (print_formatted): Allow multiple flags.  Avoid buffer overrun
+       if the format is incomplete.
+
+2003-03-24  Jim Meyering  <jim@meyering.net>
+
+       * tests/misc/printf: Add tests for the above fixes and changes.
+
+2003-03-26  Jim Meyering  <jim@meyering.net>
+
+       * src/copy.h (struct cp_options): Add a comment.
+
+2003-03-23  Jim Meyering  <jim@meyering.net>
+
+       * README: Describe problem with 64-bit mode on HPUX 11.x,
+       with patch for /usr/include/inttypes.h.
+       * TODO: Plan to add an autoconf test to work around the bug.
+
+2003-03-22  Jim Meyering  <jim@meyering.net>
+
+       * src/stat.c: Don't include <sys/sysmacros.h>.
+       That is already done via system.h.  Otherwise, the multiple
+       inclusion would evoke redefinition warnings from Cray's /bin/cc,
+       aka Cray Standard C Version 4.0.3  (057126) Mar 22 2003  22:02:28.
+       (human_fstype): Factor some directives `up', out of this function.
+       Cast away `const' to avoid error from Cray's /bin/cc.
+
+2003-03-20  Jim Meyering  <jim@meyering.net>
+
+       * announce-gen (print_changelog_deltas): Ensure that a newline
+       precedes each row of `*'s.
+
+2003-03-20  Jim Meyering  <jim@meyering.net>
+
+       * Version 4.5.11.
+
+       * src/seq.c (valid_format): Also accept ` ' and `'' as valid
+       format flag characters.
+       Do not require that a field width be specified.
+       Do not fail when given a field width of `0'.
+       Reported by Dan Jacobson.
+       * tests/seq/basic: Add new tests for the above-fixed bug.
+
+       * src/Makefile.am (all-local): Append $(EXEEXT) to use of `su'
+       (install-root): Likewise.
+       (install-exec-local): Likewise.
+       Based on a patch from Richard Dawe.
+
+2003-03-19  Jim Meyering  <jim@meyering.net>
+
+       * man/Makefile.am (.x.1): Use $(LN_S) instead of 'ln -s',
+       because the DJGPP 2.03 port of 'ln -s' doesn't work.
+       Include $(EXEEXT) in program names.
+       Since $(LN_S) may degenerate to `cp -p', be careful
+       to invoke it from the destination directory.
+       Mostly from Richard Dawe.
+       * configure.ac: Use AC_PROG_LN_S.
+
+       * tests/mv/part-symlink: Unset CDPATH.  Otherwise, having the
+       CDPATH shell variable set could cause this test to fail.
+       Reported by Karl Berry.
+
+2003-03-18  Jim Meyering  <jim@meyering.net>
+
+       * src/fmt.c [struct Word] (paren, period, punct, final): Change the
+       type of each member from bool <MEMBER>:1 to unsigned int <MEMBER>:1.
+       AIX 5.1's xlc could not compile the former.
+       Patch by Petter Reinholdtsen.  Also reported by Mike Jetzer.
+
+2003-03-17  Richard Dawe  <rich@phekda.freeserve.co.uk>
+
+       * configure.ac: Include $(EXEEXT) in OPTIONAL_BIN_PROGS'
+       program names, since automake only adds $(EXEEXT) to programs
+       in its *_PROGRAMS.
+
+2003-03-16  Jim Meyering  <jim@meyering.net>
+
+       * src/remove.c (rm): Put two local variables in static storage,
+       so they can't be clobbered by the potential longjmp.
+
+2003-03-15  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.cfg (gnu_rel_host): Fix code to match the comment
+       so that a version number with a two-digit component can still count
+       as an alpha release.  Reported by Richard A Downing.
+       (gnu_rel_host): Define in terms of $(RELEASE_TYPE) instead.
+
+2003-03-14  Jim Meyering  <jim@meyering.net>
+
+       * src/ansi2knr.c: Remove no-longer-used file.
+       * src/ansi2knr.1: Likewise.
+
+       * Makefile.maint (prev_version_file): Don't use ?= for this particular
+       assignment, since it causes trouble with old versions of GNU make
+       (e.g. 3.76.1).  The other uses of `?=' are inoffensive.  Details here.
+       http://mail.gnu.org/archive/html/bug-coreutils/2003-03/msg00028.html
+       Patch from Alexandre Duret-Lutz.
+
+       * Use patched automake-1.7.3.  Regenerate Makefile.in files in
+       subdirectories so that each includes a definition of ACLOCAL_M4.
+
+       * announce-gen (main): Label the compressed source URLs.
+
+       * Version 4.5.10.
+
+       * tests/du/slink: Relax the test for the `local'ness of a file system,
+       so that now it works also for tmpfs.
+
+       * tests/du/hard-link: Transform output from first du, so that this
+       test doesn't fail on file systems like tmpfs that order directory
+       entries differently.
+
+2003-03-13  Jim Meyering  <jim@meyering.net>
+
+       * tests/du/8gb: Work around what appears to be an NFS failure that
+       would make this test fail on some systems.
+
+2003-03-11  Jim Meyering  <jim@meyering.net>
+
+       * tests/du/basic: Make the test file exactly 4k bytes long.
+
+       * src/split.c (longopts): Don't hard-code `2' here.
+       Instead, just specify `&verbose', and ...
+       (main): ... remove the `case 2:' block for --verbose.
+
+       * tests/du/basic: Make the test file larger than 64 bytes, so that
+       we don't immediately disqualify file systems (e.g., NetApp) on which
+       smaller files take up zero disk blocks.  Reported by Vin Shelton.
+
+2003-03-10  Jim Meyering  <jim@meyering.net>
+
+       Don't segfault for a negative field width or precision in format string.
+       Note that this is just a stopgap fix.  The longer term solution may
+       involve adapting bash's builtins/printf.def.
+
+       * src/printf.c: (UNSPECIFIED): Define.
+       (print_direc): Use the special value, UNSPECIFIED, to indicate
+       that field_width or precision has not been specified.
+       (print_formatted): Fail if field_width or precision is the
+       special value, UNSPECIFIED.
+       Reported by Oliver Kiddle <okiddle@yahoo.co.uk>
+
+       * src/sys2.h (INT_MIN): Define, if necessary.
+       * tests/misc/printf: Add a test for the above-fixed bug.
+
+2003-03-09  Jim Meyering  <jim@meyering.net>
+
+       * src/remove.c (AD_stack_pop): Cast sizeof... to int before
+       changing its sign.  This avoids a warning from gcc on 64-bit systems.
+       Reported by Bob Proulx.
+       (pop_dir): Reverse order of sign change and cast, to be consistent
+       with the above.
+
+2003-03-08  Jim Meyering  <jim@meyering.net>
+
+       * tests/Makefile.am (evar-check): Check for POSIXLY_CORRECT not as a
+       shell variable, but only in the environment.  With /bin/sh->bash, the
+       shell variable is set to `y', and that would cause a spurious warning.
+       Reported by Bob Proulx.
+
+       * tests/Makefile.am (check-root): Remove touch/fifo.
+       It doesn't appear to have to be run as root.
+
+       * tests/rm/fail-2eperm: Rather than simply using the first non-root
+       user name, make sure that the selected user name has a usable shell.
+       Reported by Paul Jarc.
+
+       Before, when using shred on a device, one had to specify --exact,
+       or be careful to choose a size that would not be rounded up and
+       exceed the maximum value;  that could result in a failure of
+       the final write.
+       * src/shred.c (do_wipefd): --exact is now the default for non-regular
+       files.  Suggestion from Ben Elliston.
+       (usage): Say it.
+
+       * tests/misc/tty-eof: Require at least version 1.11 of Expect.pm.
+       Old versions of Expect.pm (e.g., 1.07) lack the log_user function.
+       Patch by Bob Proulx.
+
+       * src/Makefile.am (check-misc): Check for use of `defined' in
+       #define directives.
+       Change to $(srcdir) before running grep.
+
+       * src/sleep.c: Remove now-unused #include and #define directives.
+
+       * src/du.c (process_file): If a file's size is not being counted
+       e.g., because it's a hard link to a file we've already counted,
+       then don't print a line for it.
+
+       * tests/du/hard-link: New test for the above-fixed bug.
+       * tests/du/Makefile.am (TESTS): Add hard-link.
+
+       `du -S' didn't work
+       * src/du.c: Revert most of the `reorganization' change of 2003-02-20,
+       and make the two-array approach work.
+
+       * tests/du/basic: Correct/add tests for the above fix.
+       Set LC_ALL, etc., now that we use sort.
+       Check the block/size of a small file, too.
+       Correct expected results for simple dir1/dir2/file case.
+       Add another test of du -S.
+
+2003-03-07  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       Avoid build failure with gcc on hppa1.1-hp-hpux10.20 (see GCC PR
+       middle-end/9986).  As one of GCC's optimizations, it transforms a
+       fputs_unlocked call to a fputc_unlocked call when the string is
+       one character long.  However, hpux doesn't have fputc_unlocked.
+
+       * expr.c (usage): Use putchar, not fputs, to output a single character.
+       * ls.c (dired_dump_obstack): Likewise.
+       * ptx.c (output_one_tex_line, output_one_dumb_line): Likewise.
+       * stat.c (print_it): Likewise.
+
+2003-03-07  Jim Meyering  <jim@meyering.net>
+
+       * src/cp.c: Remove everything associated with mmap-stack.c.
+       This reverts the two changes of 2003-02-21.
+       * src/du.c: Remove everything associated with mmap-stack.c.
+       This reverts the change of 2003-02-19.
+
+2003-03-06  Jim Meyering  <jim@meyering.net>
+
+       * tests/cp/same-file: Unset CDPATH.  Otherwise, having the
+       CDPATH shell variable set could cause this test to fail.
+       Reported by Karl Berry.
+
+2003-03-05  Jim Meyering  <jim@meyering.net>
+
+       * Version 4.5.9.
+
+       * src/printf.c (print_esc): Remove pointless comparison of unsigned
+       integer with zero, to avoid a warning from Intel's ecc.
+       Reported by Nelson Beebe.
+
+       * src/du.c (process_file): Sizes must all be of type uintmax_t.
+       Otherwise, for files or totals that are too big, numbers would
+       be truncated.  Patch mostly by Michael Stone.
+       Reported by Ingo Saitz as Debian bug #183210.
+
+       * tests/du/8gb: New test for the above-fixed bug.
+       * tests/du/Makefile.am (TESTS): Add 8gb.
+
+       * src/du.c (MAX_N_DESCRIPTORS): Use 3 * UTILS_OPEN_MAX / 4
+       rather than UTILS_OPEN_MAX - 10.
+
+2003-03-04  Jim Meyering  <jim@meyering.net>
+
+       * README: Refer new feature discussion to bug-coreutils@gnu.org,
+       rather than bug-gnu-utils, now that the former is better known.
+       Suggestion from Göran Uddeborg.
+
+       * src/stat.c (usage): Capitalize consistently.
+       Reported by Göran Uddeborg.
+
+       * Makefile.maint (rel-files): Include $(signatures), so that
+       those files are also copied into $(release_archive_dir).
+
+       * src/df.c (find_mount_point): Call error here, now that restore_cwd
+       no longer does it.
+       * src/remove.c (AD_pop_and_chdir): Likewise.
+
+       * tests/Makefile.am (check-root): Add fail-2eperm.
+
+2003-03-03  Jim Meyering  <jim@meyering.net>
+
+       * src/remove.c (remove_cwd_entries): Include the full filename of
+       the offending file, not just the basename.
+
+       * tests/misc/tty-eof: Set $ME properly.
+
+       * Makefile.maint (THIS_VERSION_REGEXP, PREV_VERSION_REGEXP):
+       Remove now-unused variables.
+       (tag-prev-version, prev-cvs-tag): Likewise.
+
+       * src/remove.c (remove_cwd_entries) [!ROOT_CAN_UNLINK_DIRS]: Give an
+       accurate diagnostic when failing to remove a file owned by some other
+       user.  Reported by Ivo Timmermans via Michael Stone.
+       This fixes Debian bug# 178471.
+
+       * tests/rm/Makefile.am (TESTS): Add fail-2eperm.
+       * tests/rm/fail-2eperm: New test, for the above-fixed bug.
+       Based on a report from Ivo Timmermans.
+
+2003-03-02  Jim Meyering  <jim@meyering.net>
+
+       * src/copy.c (copy_internal) [un_backup]: When recovering from a
+       failure to create a hard link, do not remove the entry associating
+       the source dev/ino with the destination file name.
+       * tests/mv/Makefile.am (TESTS): Add hard-3.
+       * tests/mv/hard-3: New test, for the above-fixed bug.
+       Inspired by a report from Iida Yosiaki.
+
+2003-03-01  Jim Meyering  <jim@meyering.net>
+
+       * src/df.c (print_header): Don't embed spaces in a separate `Type'
+       header string.  Instead, put `Filesystem' and `Type' headers in the
+       same string, so translators can use horizontal space as needed.
+       Reported by Jean Charles Delepine.
+
+2003-02-28  Jim Meyering  <jim@meyering.net>
+
+       * src/copy.c (copy_internal): When link fails because of an
+       existing destination file, unlink that file and try again.
+       Reported by Iida Yosiaki.
+
+       * tests/mv/Makefile.am (TESTS): Add hard-2.
+       * tests/mv/hard-2: New test for the above-fixed bug.
+       Based on a test case from Iida Yosiaki.
+
+2003-02-26  Jim Meyering  <jim@meyering.net>
+
+       * tests/du/basic: Don't test du's -b option here.  Directory byte
+       counts are smaller (512 rather than 4096) on at least OSF/1 5.1
+       and IBM AIX 4.2.  Reported by Nelson Beebe.
+
+2003-02-25  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (announcement): Now that ChangeLog entries
+       are output by announce-gen, don't do it here.
+       * announce-gen (print_changelog_deltas): New function.
+       (main): Use it.
+
+2003-02-22  Jim Meyering  <jim@meyering.net>
+
+       * announce-gen: New option: --release-type=TYPE
+       * Makefile.maint (beta, major): New targets.  Remove `release'.
+       Put them all together on a line.
+       Pass the release type (via RELEASE_TYPE envvar) to the MAKE
+       invocation of `announcement'.
+       (announcement): Invoke announce-gen with --release-type=$RELEASE_TYPE.
+
+       * announce-gen: New option: --news=NEWS_FILE.
+       Extract NEWS entries here, not via rules in Makefile.maint.
+       * Makefile.maint (announcement): Now that NEWS entries are
+       extracted by announce-gen, don't do it here.
+       (news-r1, news-r2): Remove now-unused definitions.
+
+2003-02-21  Jim Meyering  <jim@meyering.net>
+
+       * Version 4.5.8.
+
+       Merge in changes from autoconf's version of this file.
+       * Makefile.maint (www-gnu): Define.
+       (standards.texi-url_prefix): Use $(www-gnu).
+       (make-stds.texi-url_prefix): Likewise.
+
+       * src/cp.c: Include "mmap-stack.h".
+       (main): Invoke `run' through a macro that (when possible) runs it
+       with a large, mmap'd stack.
+
+       * src/cp.c (run): New function, preparing for the above.
+       Exit from this function, not from main
+       (main): Call run.
+
+       * src/du.c: New option: --apparent-size.
+       (enum) [APPARENT_SIZE_OPTION]: New member.
+       (long_options): Add it.
+       (usage): Describe it.
+       (main): Handle it.
+       ['b']: Set apparent_size.
+       David Eisner reported that the behavior of --bytes had changed.
+       Paul Eggert proposed the use of a new option, --apparent-size.
+
+       * src/du.c (apparent_size): New global.
+       (print_only_size): Reflect the fact that we're printing byte counts,
+       not ST_NBLOCKSIZE-byte-block counts.
+       (print_size): Call print_only_size rather than duplicating its code.
+       (process_file): Accumulate byte counts, rather than block counts.
+
+       * src/du.c (process_file): Always reset size_to_propagate_to_parent
+       for --separate-dirs (-S).
+
+2003-02-20  Jim Meyering  <jim@meyering.net>
+
+       * Use automake-1.7.3.  Regenerate dependent files.
+
+       * src/stat.c (print_stat): New format: %B (to print ST_NBLOCKSIZE).
+       This makes %b (number of ST_NBLOCKSIZE-byte blocks) more useful.
+       (usage) [%B]: Describe it.
+       [%b]: Refer to %B.
+
+       * src/du.c (process_file): Reorganize the code to use only
+       one `sum' array, and change how -S works back to the way it was
+       before 2003-01-31.  Patch by Bruno Haible.
+
+       * tests/du/basic: New test.
+       * tests/du/Makefile.am (TESTS): Add basic.
+
+       * tests/envvar-check: Add checks for the following:
+       BLOCK_SIZE, DU_BLOCK_SIZE, DF_BLOCK_SIZE, LS_BLOCK_SIZE.
+
+       * tests/Makefile.am: Rename phony target envvar-check to evar-check
+       so as not to conflict with the distributed file by the same name.
+
+       * src/du.c (process_file): Set info->skip before any possible return.
+
+       Report correct usage for directories, not 0.
+       * src/du.c (process_file): Return for `file_type == FTW_DPRE'
+       _before_ recording the dev/ino of a directory.
+       Reported by Bruno Haible.
+
+       Now, df always displays the device file name corresponding to the
+       listed mount point under `Filesystem'.  Before, for an unmounted
+       block- or character-special file argument, it would display the
+       command-line argument instead.
+       * src/df.c (show_disk): Return a value indicating whether
+       there was a match.  Don't try to find a mount point here.
+       (show_entry): If show_disk doesn't find a match, call show_point.
+
+2003-02-19  Jim Meyering  <jim@meyering.net>
+
+       * src/du.c: Include "mmap-stack.h".
+       (du_files): Add prototype with ATTRIBUTE_NORETURN.
+       Exit from this function, not from...
+       (main): ...here.
+       Instead, if possible, invoke du_files through a macro that
+       runs it with a large, mmap'd stack.
+
+       * src/join.c (usage): Change wording in --help output:
+       use FILENUM instead of `SIDE' and say what FILENUM means.
+       Reported by Bernhard Gabler.
+
+       * src/df.c (print_header): Rather than using a hard-coded literal
+       string of spaces matching the length of the English `...Type' header,
+       output the right number of spaces to match the selected translation.
+       Reported by Yann Dirson and Jean Charles Delepine as Debian bug 131113.
+
+       * src/split.c (bytes_split): Remove unnecessary `else' after break.
+       (lines_split): Likewise.  and correct misleading indentation.
+
+       * src/split.c: Include "full-read.h".
+       (bytes_split, lines_split, line_bytes_split): Use full_read,
+       not safe_read.   The way split was using the latter, a short read
+       could cause split to terminate before EOF.
+
+       * tests/misc/tty-eof: Test all programs that can read stdin,
+       requiring no arguments and that write to standard output.
+
+       * tests/misc/tty-eof: New file.  Renamed from ...
+       * tests/misc/cat-tty-eof: Remove file.  Rename to tty-eof.
+       * tests/misc/Makefile.am (TESTS): Reflect renaming.
+
+2003-02-18  Jim Meyering  <jim@meyering.net>
+
+       cksum would perform an extra read after encountering EOF
+       * src/cksum.c (cksum): Exit the loop upon EOF, too.
+       Patch by Michael Bacarella.
+
+       Test for the bug fixed today in cksum, md5sum, and sha1sum.
+       * tests/misc/cat-tty-eof: Generalize, clean-up, and test for
+       cat, cksum, md5sum, and sha1sum all in the same loop.
+
+2003-02-14  Jim Meyering  <jim@meyering.net>
+
+       * src/remove.c: Include "euidaccess.h".
+       Remove declaration of euidaccess.
+
+2003-02-12  Jim Meyering  <jim@meyering.net>
+
+       * src/pathchk.c (portable_chars_only): Remove unnecessary `const'
+       in cast to avoid warning from icc.  Reported by Alexandre Duret-Lutz.
+
+2003-02-10  Jim Meyering  <jim@meyering.net>
+
+       * src/test.c: Don't include group-member.h.
+       Include euidaccess.h.
+       (eaccess): Rewrite function to set the real uid and gid temporarily
+       to the effective uid and gid, then invoke 'access', and then set the
+       real uid and gid back.  On systems that lack setreuid or setregid,
+       fall back on the kludges in euidaccess.  Before, it would not work
+       for e.g., files with ACLs, files that were marked immutable,
+       or on file systems mounted read-only.  Nelson Beebe raised the issue.
+       Paul Eggert suggested the new implementation.
+
+2003-02-09  Jim Meyering  <jim@meyering.net>
+
+       * src/test.c (test_stat): Remove function.  It's job is done (only
+       when necessary) by the wrapper in lib/stat.c.  Adjust all uses.
+
+2003-02-08  Jim Meyering  <jim@meyering.net>
+
+       * Version 4.5.7.
+
+       * tests/mv/part-symlink: Don't assume that the file owner username
+       length is less than 9 in ls output: instead, omit that field
+       altogether.  Reported by, and suggested fix from, Ferdinand.
+
+       * tests/du/restore-wd: New test for just-fixed bug in ftw.c.
+       * tests/du/Makefile.am (TESTS): Add restore-wd.
+
+       * src/rm.c: Correct now-invalid comment about cycle-detection.
+
+2003-02-06  Jim Meyering  <jim@meyering.net>
+
+       * NEWS: Add entries from old/*/NEWS
+       from fileutils-4.1 through 4.1.11 and
+       from sh-utils-2.0 through 2.0.15.  Suggestion from Karl Berry.
+
+       * Version 4.5.6.
+
+       * src/du.c (process_file): Don't return early for excluded files
+       or for files whose dev/inode we've already seen.
+
+2003-02-05  Jim Meyering  <jim@meyering.net>
+
+       * tests/du/exclude: New file.
+       * tests/du/Makefile.am (TESTS): Add exclude.
+
+2003-02-04  Dmitry V. Levin  <ldv@altlinux.org>
+
+       * src/who.c (print_boottime, print_deadprocs, print_runlevel):
+       Fix memory allocation arithmetic.
+
+2003-02-04  Jim Meyering  <jim@meyering.net>
+
+       `df /dev/block-or-char-device-file--not-mounted' now reports
+       the name of the file system on which the file resides, usually `/'.
+       Before, it would leave the `Mounted on' field blank.
+       * src/df.c (show_disk): Move function to precede find_mount_point.
+       (show_disk): Add parameter: STATP.
+       If we don't find a matching device name, then resort to calling
+       find_mount_point.  Reported by Bob Proulx.
+
+2003-02-03  Andreas Schwab  <schwab@suse.de>
+
+       * tests/rm/cycle: Require non-root.
+       * tests/rm/isatty: Likewise.
+
+2003-02-02  Jim Meyering  <jim@meyering.net>
+
+       * Version 4.5.5.
+
+       * man/Makefile.am (check-x-vs-1): Use @PATH_SEPARATOR@, not `:'.
+
+       Ensure that there are no offending uses of `:'.
+       * Makefile.maint (makefile_path_separator_check): New rule.
+       (local-check): Add it to the list.
+
+2003-02-01  Jim Meyering  <jim@meyering.net>
+
+       * src/du.c (MAX_N_DESCRIPTORS): Define.
+
+       * src/stat.c (G_fail): New global.
+       (human_time): Diagnose failed localtime, not failed nstrftime.
+       (main): Fail if G_fail is set.
+
+2003-01-31  Richard Dawe  <rich@phekda.freeserve.co.uk>
+
+       * tests/basename/Makefile.am: Use @PATH_SEPARATOR@ instead of
+       hard-coding the path-separator.  Also double-quote the new PATH,
+       to avoid problems when the path-separator is a semi-colon or when
+       `pwd` contains e.g. a space.
+       * tests/chgrp/Makefile.am: Likewise.
+       * tests/chmod/Makefile.am: Likewise.
+       * tests/chown/Makefile.am: Likewise.
+       * tests/cp/Makefile.am: Likewise.
+       * tests/dd/Makefile.am: Likewise.
+       * tests/dircolors/Makefile.am: Likewise.
+       * tests/du/Makefile.am: Likewise.
+       * tests/expr/Makefile.am: Likewise.
+       * tests/factor/Makefile.am: Likewise.
+       * tests/fmt/Makefile.am: Likewise.
+       * tests/install/Makefile.am: Likewise.
+       * tests/ln/Makefile.am: Likewise.
+       * tests/ls/Makefile.am: Likewise.
+       * tests/ls-2/Makefile.am: Likewise.
+       * tests/md5sum/Makefile.am: Likewise.
+       * tests/misc/Makefile.am: Likewise.
+       * tests/mkdir/Makefile.am: Likewise.
+       * tests/mv/Makefile.am: Likewise.
+       * tests/od/Makefile.am: Likewise.
+       * tests/rm/Makefile.am: Likewise.
+       * tests/rmdir/Makefile.am: Likewise.
+       * tests/seq/Makefile.am: Likewise.
+       * tests/sha1sum/Makefile.am: Likewise.
+       * tests/shred/Makefile.am: Likewise.
+       * tests/stty/Makefile.am: Likewise.
+       * tests/sum/Makefile.am: Likewise.
+       * tests/tail-2/Makefile.am: Likewise.
+       * tests/touch/Makefile.am: Likewise.
+       * tests/tsort/Makefile.am: Likewise.
+       * tests/unexpand/Makefile.am: Likewise.
+
+2003-01-31  Jim Meyering  <jim@meyering.net>
+
+       * src/stat.c: Include "file-type.h"
+       (print_human_type): Remove function.
+       (human_access): Rename from print_human_access.  Return a string.
+       (human_time): Rename from print_human_time.  Return a string.
+       (print_stat): Arrange so that field width and an alignment specifier
+       are honored for the %A, %F, %x, %y, and %z formats.
+       [%F]: Use file_type; this gives slightly different file type strings,
+       e.g., `directory' instead of `Directory' and `regular file' or
+       `regular empty file' instead of `Regular file'.
+       Prompted by a report from Richard Dawe that the uses of
+       S_IFSOCK and S_IFIFO in print_human_time were not portable
+       to systems using e.g., DJGPP.
+
+2003-01-31  Richard Dawe  <rich@phekda.freeserve.co.uk>
+
+       * src/stat.c (print_stat): Use S_ISLNK rather than an explicit
+       test using S_IFMT and S_IFLNK.  S_IFLNK may not be defined.
+
+2003-01-31  Jim Meyering  <jim@meyering.net>
+
+       * src/du.c (main): Upon processing an invalid option or an invalid
+       --exclude-from or --max-depth option argument, don't exit right away,
+       in case there are others.  Rather record the failure and exit after
+       processing other options.
+
+       * GNUmakefile (TAR_OPTIONS): Set and export, in order to make
+       tar archive easier to reproduce.
+
+       Rewrite to perform directory traversal using nftw.
+
+       * src/du.c: Include "dirname.h", "ftw.h", and "quotearg.h".
+       (AUTHORS): Add self.
+       (opt_one_file_system): Move global into `main'.
+       (path, xstat, exit_status): Remove declarations.
+       (arg_length, suffix_length): New globals.
+       (G_fail): New global, sort of like the old `exit_status'.
+       (IS_FTW_DIR_TYPE): Define.
+       (print_only_size): New function.
+       (process_file): New function.
+       (str_init, ensure_space, str_copyc, str_concatc): Remove functions.
+       (str_trunc, pop_dir, count_entry): Likewise.
+       (du_files): Rewrite to use nftw.
+
+2003-01-30  Jim Meyering  <jim@meyering.net>
+
+       * tests/du/trailing-slash: Ensure that du/ftw follows a command-line
+       symlink-to-directory with -L, even without the trailing slash.
+
+2003-01-27  Jim Meyering  <jim@meyering.net>
+
+       * src/Makefile.am (check-misc): Check for st_blocks, too.
+
+       * src/stat.c (print_stat): Use ST_NBLOCKS rather than `->st_blocks'.
+       Reported by Richard Dawe.
+
+2003-01-27  Andreas Schwab  <schwab@suse.de>
+
+       * src/ls.c (quote_name): Add fourth parameter, width, into which to
+       store the screen columns, and return the number of bytes instead.
+       (print_dir): Pass NULL as fourth parameter of quote_name.
+       (print_name_with_quoting): Likewise.
+       (length_of_file_name_and_frills): Get the width from the fourth
+       parameter of quote_name instead of return value.
+
+2003-01-27  Jim Meyering  <jim@meyering.net>
+
+       * src/ls.c (decode_switches): If `dired' is set without
+       `format == long_format', then silently reset dired.  This doesn't
+       change the behavior of ls (all prior uses of dired were protected
+       by `&& format == long_format'), and lets us...
+       (DIRED_INDENT): ... remove the `format == long_format' conjunct.
+       (PUSH_CURRENT_DIRED_POS): Likewise.
+       (main): Likewise.
+
+2003-01-22  Jim Meyering  <jim@meyering.net>
+
+       * tests/du/no-x: New test, for functionality added to lib/ftw.c.
+       * tests/du/Makefile.am (TESTS): Add no-x.
+
+2003-01-21  Jim Meyering  <jim@meyering.net>
+
+       * src/remove.c (remove_entry) [ROOT_CAN_UNLINK_DIRS
+       && HAVE_STRUCT_DIRENT_D_TYPE]: If a file has d_type == DT_UNKNOWN
+       it may still be a directory -- or not (e.g., with FreeBSD on an
+       NFS-mounted file system), so resort to calling lstat to find out.
+       Based on a patch by Michael van Elst.
+
+       * tests/cp/same-file: Don't assume that the file owner username
+       length is less than 9 in ls output: instead, omit that field
+       altogether.  Reported by, and suggested fix from, Ferdinand.
+
+2003-01-20  Jim Meyering  <jim@meyering.net>
+
+       * tests/date/Test.pm (wide-fmt): New test to demonstrate that
+       large format widths no longer cause strftime to infloop.
+
+       * Makefile.maint (mail_gpg_sign_cookie): Remove now-unused definition.
+
+2003-01-19  Jim Meyering  <jim@meyering.net>
+
+       * src/readlink.c: Include "canonicalize.h".
+
+2003-01-18  Jim Meyering  <jim@meyering.net>
+
+       * src/ls.c (Dereference_symlink) [DEREF_COMMAND_LINE_SYMLINK_TO_DIR]:
+       New member.
+       (enum) [DEREFERENCE_COMMAND_LINE_SYMLINK_TO_DIR_OPTION]: New member.
+       (long_options): Add option --dereference-command-line-symlink-to-dir.
+       (main): Make DEREF_COMMAND_LINE_SYMLINK_TO_DIR be the default,
+       rather than DEREF_COMMAND_LINE_ARGUMENTS, when none of the
+       -d, -F, -l options is specified.
+       (decode_switches): Handle --dereference-command-line-symlink-to-dir.
+       (gobble_file): Honor DEREF_COMMAND_LINE_SYMLINK_TO_DIR.
+       Change --dereference-command-line (-H) to dereference *all*
+       command line arguments, including broken symlinks.
+
+2003-01-15  Paul Eggert  <eggert@twinsun.com>
+
+       Change ls -H back to the way it was yesterday, since this is
+       compatible with FreeBSD and the POSIX spec is confusing
+       and somewhat contradictory.
+
+       * src/ls.c (DEREF_COMMAND_LINE_ARGUMENTS): Change name back
+       from DEREF_COMMAND_LINE_SYMLINK_TO_DIR, updating all uses.
+       (long_options): Change the long option name back.
+       (usage): Change the usage back.
+       (gobble_file): When -H is specified, dereference a top-level
+       arg even if it points to a non-directory.
+
+2003-01-15  Jim Meyering  <jim@meyering.net>
+
+       * src/ls.c (gobble_file): Fall back on using lstat when required:
+       when --dereference (-L) is not specified, and
+       - when operating on a dangling symlink
+       - when operating on command-line-symlink-to-directories
+       This fixes numerous problems.  Here are examples:
+       - `ls dangling-symlink' would fail with `no such file...'
+       Now it prints `dangling-symlink'.
+       - `ls -i symlink' would mistakenly print the inode of the referent.
+       Now it prints the inode of the symlink.  Likewise for --size (-s).
+       Based on a patch from Michael Stone.
+       Reported by Deepak Goel as Debian bug #173793.
+
+       Rename ls's --dereference-command-line (-H)
+       option to   --dereference-command-line-symlink-to-dir.
+       * src/ls.c [enum Dereference_symlink]
+       (DEREF_COMMAND_LINE_SYMLINK_TO_DIR): Rename from
+       DEREF_COMMAND_LINE_ARGUMENTS.  Update all uses.
+       (long_options): Rename the long option.
+       (usage): Say that --dereference-... changes how ls treats
+       only symlinks to directories specified on the command line.
+
+2003-01-14  Jim Meyering  <jim@meyering.net>
+
+       * tests/ls/dangle: New file/test, for the above fix.
+       * tests/ls/inode: Another new file/test, for the above fix.
+       * tests/ls/Makefile.am (TESTS): Add dangle and inode.
+
+       * src/ls.c (gobble_file): Fix a bug introduced in 4.5.4 that made it
+       so that ls --color would no longer highlight the names of files with
+       the execute bit set when not specified on the command line.
+       Patch by Michael Stone.  Reported by Stephen Depooter as
+       Debian bug 175135.
+
+       * tests/ls-2/tests (color-exe): New test, for the above fix.
+
+2003-01-13  Jim Meyering  <jim@meyering.net>
+
+       * tests/shred/exact: Also test for just fixed bug with --zero.
+
+       * src/shred.c (long_opts): --zero does not require an argument.
+       Patch by Michael Stone.  Reported by Roland Turner as Debian bug 172019.
+
+2003-01-12  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (cvs-update): Skip any file with local modifications.
+
+       * src/unexpand.c (usage): Document --first-only and mention that
+       --tabs=N (-t) enables --all (-a).  Reported by wiregauze@yahoo.com.
+
+2002-12-01  Dmitry V. Levin  <ldv@altlinux.org>
+
+       * src/df.c: Include "canonicalize.h".
+       Use canonicalize_file_name unconditionally.
+
+2003-01-09  Jim Meyering  <jim@meyering.net>
+
+       * README: Add readlink.
+
+2002-11-30  Dmitry V. Levin  <ldv@altlinux.org>
+
+       * src/df.c: Include "xgetcwd.h".
+       * src/pwd.c: Likewise.
+
+2002-11-30  Dmitry V. Levin  <ldv@altlinux.org>
+
+       * src/shred.c: Remove declaration of xstrdup.
+       We already get it via xalloc.h which is included via system.h.
+
+2002-08-27  Dmitry V. Levin  <ldv@altlinux.org>
+
+       New program: readlink.
+
+       * src/Makefile.am (bin_PROGRAMS): Add readlink.
+       * src/readlink.c: New file.
+
+       * man/readlink.x: New file.
+       * man/Makefile.am (dist_man_MANS): Add readlink.1.
+       (readlink.1): New rule.
+
+2003-01-09  Jim Meyering  <jim@meyering.net>
+
+       When selecting ranges of byte offsets (as opposed to ranges of fields)
+       and when --output-delimiter=STRING is specified, output STRING between
+       ranges of selected bytes.
+       * src/cut.c (RANGE_START_SENTINEL): Define.
+       (output_delimiter_specified): New global.
+       (print_kth): Add parameter.  Adjust all callers.
+       (set_fields): Mark each range-start index with RANGE_START_SENTINEL.
+       (cut_bytes): When requested, output STRING between ranges of
+       selected bytes.
+       (main): Make a diagnostic a little clearer.
+       Based on a patch from Jan Nieuwenhuizen.
+
+       * tests/cut/Test.pm: New tests for the above.
+
+       * src/cut.c (set_fields): Make code agree with comment:
+       Don't merge abutting ranges like 4- and 2-3.  This makes no
+       difference currently, but is required to support an upcoming change.
+
+2003-01-07  Jim Meyering  <jim@meyering.net>
+
+       * src/cut.c (set_fields): Fix typo in comment.
+
+       * tests/touch/not-owner: New test, mostly extracted from fail-diag.
+       * tests/touch/Makefile.am (TESTS): Add not-owner.
+       * tests/touch/fail-diag: Remove the test for non-owner diagnostic.
+       Now, this tests only the nonexistent-directory diagnostic.
+       Suggestion from Michael Stone.
+
+       * tests/touch/fail-diag: Fix typo: s/ld/ls/.
+
+2003-01-04  Jim Meyering  <jim@meyering.net>
+
+       * src/copy.h: Remove use of PARAMS.
+       * src/remove.h: Likewise.
+       * src/chown-core.h: Likewise.
+
+       rm could be tricked into mistakenly reporting a cycle.
+       * src/remove.c: [cycle_check_state]: New global.
+       (remove_cwd_entries): Adapt to new semantics of cycle_check.
+       (rm): Call cycle_check_init and cycle_check_free for each file.
+       * tests/rm/cycle (rm): New test, for the above fix.
+       * tests/rm/Makefile.am (TESTS): Add cycle.
+
+       When rm detects a cycle, don't abort the entire command,
+       but rather just the affected command line argument.
+       * src/remove.c: Include <setjmp.h>
+       (struct dirstack_state) [current_arg_jumpbuf]: New member.
+       (remove_cwd_entries): Call longjmp if we detect a cycle.
+       (rm): Call setjmp here.
+
+       * src/remove.c (cycle_check, is_power_of_two): Remove functions.
+       Instead, include cycle-check.h and use it.
+
+       * src/remove.h (struct dev_ino): Remove declaration.
+
+       * src/remove.c (remove_cwd_entries): Fix typos in comment.
+
+       Don't include trailing /. in diagnostics about directories.
+       * src/remove.c (full_filename_): When FILENAME is just `.'
+       and there is a nonempty directory-name part, don't append `/.'.
+       * tests/rm/unread2: Remove trailing /. from diagnostic.
+       * tests/rm/rm2: Likewise.
+
+       * src/remove.c (struct dirstack_state): Define.
+       To be used in place of these file-scoped globals ...
+       (dir_stack, len_stack, Active_dir): Remove globals.
+       (ds_init, ds_free): New functions.
+       (full_filename): Define.
+       (full_filename_): Rename from full_filename.
+
+       Begin to make AD_* functions more generic.
+       * src/remove.c (AD_push_initial): Don't set status to RM_OK here.
+       (AD_push): Likewise.
+       (AD_INIT_OTHER_MEMBERS): Define.
+       (remove_dir): Define the `status' member manually after each
+       call to AD_push or AD_push_initial.
+
+       * src/Makefile.am (check-misc): New rule, to ensure that no more
+       S_IS* macro definitions sneak into the code.
+       (check): Depend on check-misc.
+
+       * src/remove.c [S_ISLNK]: Don't define.  It's already defined in sys2.h.
+       * src/du.c (count_entry) [S_ISLNK]: Don't define.
+       * src/shred.c [S_ISLNK, S_ISFIFO, S_ISSOCK]: Don't define.
+
+2003-01-03  Jim Meyering  <jim@meyering.net>
+
+       * src/true.c: Add copyright.
+       (AUTHORS): I suppose I've written it.
+
+       * src/Makefile.am (false.c): Make the generated file be read-only.
+
+2003-01-04  Jim Meyering  <jim@meyering.net>
+
+       * src/ls.c: Include "dev-ino.h".
+       [struct dev_ino]: Remove declaration.
+
+2003-01-02  Jim Meyering  <jim@meyering.net>
+
+       * src/cp.c (do_copy): Tweak diagnostic to be consistent with the one
+       from mv: s/missing file arguments/missing file argument/.
+       With --target-directory=DIR, cp and mv work with a single file argument.
+       Reported by Karl Berry.
+
+       * tests/rm/isatty: Enable this test.
+
+2002-12-31  Jim Meyering  <jim@meyering.net>
+
+       * src/remove.c (AD_push_initial): Don't set status to RM_OK here.
+       (AD_push): Likewise.
+       (AD_INIT_OTHER_MEMBERS): Define.
+       (remove_dir): Define the `status' member manually after each
+       call to AD_push or AD_push_initial.
+
+       * src/ls.c [struct dev_ino]: Remove definition.
+       Include "dev-ino.h" instead.
+
+2002-12-28  Jim Meyering  <jim@meyering.net>
+
+       * tests/du/Makefile.am (TESTS): Add no-deref.
+       * tests/du/no-deref: New script.
+
+2002-12-23  Jim Meyering  <jim@meyering.net>
+
+       * src/remove.c (remove_cwd_entries): Fix typo in comment.
+
+2002-12-21  Jim Meyering  <jim@meyering.net>
+
+       * announce-gen: Generate MML-formatted announcement.
+       This makes it a *lot* harder to send stale MD5/SHA1 signatures.
+
+2002-12-20  Jim Meyering  <jim@meyering.net>
+
+       * src/touch.c (touch): Change the wording of a diagnostic so
+       that it makes sense both when the file exists and when it doesn't.
+       Suggestion from Michael Stone.
+
+2002-12-18  Jim Meyering  <jim@meyering.net>
+
+       * src/stty.c (valid_options): Declare to be static.
+
+2002-12-15  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.cfg: Remove rules related to generating m4/jm-glibc-io.m4.
+
+       * src/chmod.c, src/copy.c, src/copy.h, src/cp-hash.h, src/csplit.c:
+       * src/date.c, src/expr.c, src/fmt.c, src/id.c, src/install.c:
+       * src/ls.c, src/od.c, src/pathchk.c, src/pr.c, src/remove.c:
+       * src/shred.c, src/sort.c, src/stat.c, src/stty.c, src/sum.c:
+       * src/tee.c, src/test.c: Remove all uses of `PARAMS'.
+
+       * src/remove.c (PARAMS): Remove definition.
+       * src/sys2.h: Likewise.
+
+       * src/ls.c, src/stat.c, src/date.c: Remove declaration of nstrftime.
+       Include strftime.h instead.
+
+2002-12-14  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.cfg ($(url_dir_list)): Use .../coreutils, not .../fetish.
+
+       * src/system.h [! HAVE_DECL_MEMRCHR]: Declare memrchr.
+       This is necessary at least for Irix6.5 when using c89.
+       Reported by Nelson Beebe.
+
+       * tests/misc/Makefile.am (TESTS): Add cat-tty-eof.
+
+       * tests/misc/cat-tty-eof: New test.
+
+       * src/mknod.c (usage): Specify how major and minor mode numbers
+       are interpreted.  Report forwarded by Kristin E Thomas.
+       * src/mknod.c: Remove now-redundant usage-specifying comment.
+
+2002-12-13  Jim Meyering  <jim@meyering.net>
+
+       * Version 4.5.4.
+
+       * tests/du/trailing-slash: Allow for a directory of size `0'.
+       That happens at least on file systems of type tmpfs on linux-2.4.18.
+
+       * announce-gen: New script to begin replacing the commands
+       associated with the rule here...
+       * Makefile.maint (announcement): Invoke announce-gen.
+       * Makefile.am (EXTRA_DIST): Add announce-gen.
+
+       * tests/cp/preserve-2: New file/test, for latest fix.
+       * tests/cp/Makefile.am (TESTS): Add preserve-2.
+
+2002-12-11  TAKAI Kousuke  <takai@vlsi.kuee.kyoto-u.ac.jp>
+
+       Fix a bug whereby cp would fail to parse an option like
+       --preserve=mode,ownership.
+       * src/cp.c (decode_preserve_arg): Advance `comma' to
+       point the character following the comma.
+
+2002-12-11  Jim Meyering  <jim@meyering.net>
+
+       * src/pathchk.c (NEED_PATHCONF_WRAPPER): Undefine before defining,
+       in case it's already defined.
+
+2002-12-09  Jim Meyering  <jim@meyering.net>
+
+       * tests/touch/fail-diag: Don't get a test failure if /no exists.
+       Instead, evoke a framework failure if /no-$$ exists.
+       Reported by Michael Stone.
+
+2002-12-08  Jim Meyering  <jim@meyering.net>
+
+       * src/du.c (lstat) [! LSTAT_FOLLOWS_SLASHED_SYMLINK]:
+       Define to rpl_lstat, so that even on systems like Solaris 5.8,
+       du honors (per POSIX) the trailing slash on an argument referring
+       to a symlink-to-directory.
+
+2002-12-06  Jim Meyering  <jim@meyering.net>
+
+       * Use autoconf-2.57.  Regenerate dependent files.
+       * Use automake-1.7.2.  Regenerate dependent files.
+
+       * src/ls.c (gobble_file): Also stat the file if it's a
+       regular file and --indicator-style=classify (aka -F).
+       Thanks to Ed Santiago for opening my eyes.
+
+       * tests/ls/file-type: New file.  Test for the above.
+       A test to contrast ls -F and ls --indicator-style=file-type.
+       * tests/ls/Makefile.am (TESTS): Add file-type.
+
+2002-12-04  Jim Meyering  <jim@meyering.net>
+
+       * tests/ls/follow-slink: Make sure the symlink was created.
+       Richard Dawe reported that `ln -s link link' succeeds, but creates
+       no file on systems running some version of the DJGPP libc.
+
+2002-12-03  Jim Meyering  <jim@meyering.net>
+
+       * src/Makefile.am (AUTOMAKE_OPTIONS): Remove definition (to ansi2knr)
+       since this package no longer panders to K&R compilers.
+
+2002-12-02  Jim Meyering  <jim@meyering.net>
+
+       * tests/du/slink: Skip this test if `.' is on a non-local file system.
+
+       * tests/Fetish.pm (_at_replace): Do the substitution only if there's
+       something to replace.
+
+2002-12-01  Jim Meyering  <jim@meyering.net>
+
+       * src/stat.c: Don't include <string.h> or <ctype.h>.
+       That's already done via system.h.
+       * src/dircolors.c: Don't include <ctype.h>.
+
+2002-11-30  Jim Meyering  <jim@meyering.net>
+
+       * ls.c (gobble_file): Remove the block of code that caused
+       `ls --color -F symlink-to-dir' to list the files in
+       `symlink-to-dir/.'.  Now, it prints `symlink-to-dir@', (just
+       like `ls -F symlink-to-dir') but with the addition of highlighting.
+       Similarly, `ls --color -dF symlink-to-dir' would print
+       `symlink-to-dir/';  now it prints `symlink-to-dir@'.
+       Reported by Jeff Sheinberg as Debian bug #168203.
+       * tests/ls-2/tests (sl-F-color, sl-dF-color): New tests for the above.
+
+       ls is now more efficient: with certain options, it no longer needs
+       to stat each directory entry on systems with valid dirent.d_type.
+       * src/ls.c (print_dir): Add DT_LNK and DT_REG.
+       (main): Make --recursive set format_needs_type, not format_needs_stat.
+       (gobble_file): Remove a FIXME comment, now that it's fixed.
+
+2002-11-24  Jim Meyering  <jim@meyering.net>
+
+       * src/du.c (du_files): Don't strip any trailing slash.
+       Rewrite so that `/' is no longer represented internally as
+       the empty string.
+       (count_entry): When appending a file name component,
+       account for the fact that the current path may end in `/'.
+       François Pinard reported that `du symlink-to-dir/' was not
+       equivalent to `du symlink-to-dir/.'.  Now it is.
+       * tests/du/trailing-slash: New file/test, for the above fix.
+       * tests/du/Makefile.am (TESTS): Add trailing-slash.
+
+2002-11-23  Jim Meyering  <jim@meyering.net>
+
+       * src/tac.c (output): Declare some local variables to be of type size_t,
+       rather than `int' to avoid warnings from gcc.
+
+2002-11-21  Paul Eggert  <eggert@twinsun.com>
+
+       * src/ls.c (decode_switches): Use case-sensitive matching to
+       decode the QUOTING_STYLE environment variable.  This is more
+       consistent with the documentation, and with --quoting-style.
+
+2002-11-21  Martin Buck  <martin.buck@ascom.ch
+
+       * src/stty.c (struct speeds): Add support for all baud rates defined
+       in linux-2.4.19.
+
+2002-11-19  Jim Meyering  <jim@meyering.net>
+
+       * tests/sum/sysv: Export LC_ALL=C, to avoid failure when
+       run in a UTF locale.  Report and suggested fix by Bruno Haible.
+       * tests/fmt/basic: Likewise.
+
+2002-11-17  Jim Meyering  <jim@meyering.net>
+
+       * configure.ac: Update via autoupdate.
+       Add `AM_GNU_GETTEXT_VERSION(0.11.5)'.
+
+       * src/mv.c (movefile): Don't remove trailing slashes from SOURCE.
+       Reported by Hans Ginzel.
+
+2002-11-15  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.cfg (gnu_rel_host): Define.
+       (url_dir_list): Choose from (alpha|ftp).gnu.org depending
+       on whether $(VERSION) looks like a major release number.
+
+       * Makefile.maint (mail_gpg_sign_cookie): Backslash-escape `#'.
+       (release): Rename from `alpha'.
+       (alpha): Depend on release.
+
+       * Makefile.maint (signatures): Define with ?=, so it's easy to override.
+
+2002-11-14  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.maint (mail_gpg_sign_cookie): Make optional.
+       (announcement): Use the new variable.
+
+       * Makefile.maint: Sync with Bison, i.e.:
+       (po-check): Scan .l and .y files instead of the
+       .c and the .h files that they generate.  This fixes the bug
+       reported by Tim Van Holder in:
+       <http://mail.gnu.org/pipermail/bison-patches/2002-November/001352.html>
+       Look for N_ as well as for _.  Try to avoid matching #define for
+       N_ and _.
+       From Paul Eggert.
+
+2002-11-12  Jim Meyering  <jim@meyering.net>
+
+       * src/ls.c (HAVE_SYMLINKS): Remove unnecessary macro definition.
+       Replace sole use with equivalent `#ifdef S_ISLNK'.
+       Inconsistency reported by Dmitry V. Levin.
+
+2002-11-11  Jim Meyering  <jim@meyering.net>
+
+       * src/stat.c (usage): Transform --help items output via s/ - /   /,
+       so that help2man produces properly formatted man pages.
+       Reported by Herbert Xu as Debian bug #168400.
+
+2002-11-10  Jim Meyering  <jim@meyering.net>
+
+       * src/ls.c (sighandler): Handle SIGTSTP specially.
+       Based on suggestions from Solar Designer and Dmitry V. Levin.
+       Add comments.
+
+       * Makefile.cfg (cvs_files): Define.  From autoconf.
+       (local_updates): Likewise.
+
+       * src/ls.c (restore_default_color_handler, sigtstp_handler):
+       Remove functions.
+       (sighandler): New function, based on the one in sort.c.
+       (main): Use sigaction, if possible; otherwise signal.
+       Handle these signals:
+       SIGHUP, SIGINT, SIGPIPE, SIGQUIT, SIGTERM, SIGTSTP.
+       Don't register our handler if the signal is already being ignored.
+
+       * src/dd.c (interrupt_handler): Use raise, rather than kill+getpid.
+       * src/csplit.c (interrupt_handler): Likewise.
+       * src/sort.c (sighandler): Likewise.
+       (main): Declare `i' and `nsigs' to be unsigned, not int.
+
+2002-11-09  Jim Meyering  <jim@meyering.net>
+
+       ls --color: restore terminal text color upon signal.
+       * src/ls.c: Include "full-write.h" and <signal.h>.
+       (restore_default_color, restore_default_color_handler): New functions.
+       (sigtstp_handler, put_indicator_direct): New functions.
+       (main) [print_with_color]: Register signal handlers.
+       Patch mostly by Solar Designer and Stanislav Ievlev.
+
+       Update from autoconf.
+       * Makefile.maint (AMTAR): Remove definition.
+       (update, cvs-update, po-update, do-po-update): New rules.
+       (wget-update): Update (thus renaming to cvs-update).
+       (automake_repo): Use anoncvs@sources.redhat.com.
+
+2002-11-06  Jim Meyering  <jim@meyering.net>
+
+       * tests/misc/Makefile.am (TESTS): Add printf-hex.
+
+       * tests/misc/printf: Be careful to test the code in this package,
+       not the shell built-in function.
+
+       * src/printf.c (print_esc): A hexadecimal escape sequence has
+       at most two hex. digits, not three.  Reported by Padraig Brady.
+       (usage): Update description.
+       * tests/misc/printf-hex: New file/test, for the above fix.
+
+2002-10-07  Paul Eggert  <eggert@twinsun.com>
+
+       Add support for locale-specific size indications (e.g.,
+       thousands-separators) and for explicit size suffixes on output.
+
+       * doc/coreutils.texi (Block size): Say that:
+       This affects display format as well as block size.
+       Fractional block counts are rounded up.
+       ls file size blocksize defaults to 1.
+       A block size spec preceded by ' generates thousands separators.
+       A suffix without a preceding integer generates suffixes.
+       (tail invocation): 32k -> 32 KiB.
+       (What information is listed): ls -h is now equivalent to
+       ls --block-size=human, and ls -H is now equivalent to
+       ls --block-size=si.  Displayed file size is now always affected by
+       --block-size.
+
+       * lib/inttostr.c, lib/inttostr.h, lib/imaxtostr.c, lib/offtostr.c,
+       lib/umaxtostr.c: New files, taken from GNU tar.
+
+       * lib/Makefile.am (libfetish_a_SOURCES): Add imaxtostr.c, offtostr.c,
+       umaxtostr.c.
+       (EXTRA_DIST): Add inttostr.c.
+
+       * lib/human.c, lib/human.h: Rewrite to support locale-specific
+       notations like thousands separators.
+       Specify what includer of include.h must include beforehand.
+       (human_group_digits, human_suppress_point_zero, human_autoscale,
+       human_base_1024, human_SI, human_B): New enum values.
+       (human_readable): Rename from human_readable_inexact; put the
+       options before the sizes.  All uses changed.  The old human_readable
+       function has been removed; use inttostr.h instead.
+       (human_options): Renamed from human_block_size, with new signature
+       that allows block sizes up to UINTMAX_MAX.  All callers changed.
+
+       * m4/prereq.m4 (jm_PREREQ_HUMAN): Check for locale.h, localeconv,
+       AC_HEADER_STDBOOL.  No need to check for limits.h since it's in
+       freestanding C89.  No need to check for stdlib.h or string.h since
+       autoconf does this now.
+
+       * src/cksum.c (cksum): Use primitives from inttostr.h, not
+       human.h, to print large numbers simply.
+       * src/csplit.c (handle_line_error, parse_patterns): Likewise.
+       * src/dd.c (print_stats, main): Likewise.
+       * src/df.c (print_header): Likewise.
+       * src/factor.c (print_factors): Likewise.
+       * src/ls.c (print_long_format, print_file_name_and_frills): Likewise.
+       * src/shred.c (dopass): Likewise.
+       * src/sort.c (checkfp): Likewise.
+       * src/sum.c (bsd_sum_file, sysv_sym_file): Likewise.
+       * src/tail.c (xlseek): Likewise.
+       * src/wc.c (write_counts, wc): Likewise.
+
+       * src/df.c (human_output_opts): New var.
+       (output_block_size): Now uintmax_t, not int, to handle larger
+       block sizes.  All uses changed.
+       * src/du.c: Likewise.
+       * src/ls.c: Likewise.
+
+       * src/df.c (print_header): In the header line, prefer SI to human
+       representation if it's shorter; if neither is shorter, try to
+       intuit what the user would prefer.
+
+       * src/expr.c (inttostr): Remove; use new imaxtostr library
+       function instead.
+
+       * src/ls.c (file_output_block_size): New var, to distinguish
+       file sizes from other sizes.
+       (decode_switches): Set it.
+
+       * src/shred.c (OUTPUT_BLOCK_SIZE): remove.
+       (dopass): When printing progress, use floor for what has been done
+       so far (since we should be conservative there), and ceiling for
+       what needs to be done (since that's what other programs use).
+
+2002-10-19  Jim Meyering  <jim@meyering.net>
+
+       * src/pinky.c (print_heading): Align TTY and Name headings.
+       Reported by Karl Eichwalder.
+
+2002-10-18  Jim Meyering  <jim@meyering.net>
+
+       * src/split.c (cwrite): Change type of `bytes' parameter to size_t
+       Remove now-useless cast.
+       (stdread): Remove function.
+       (bytes_split): Use size_t instead of int.
+       Use safe_read, not stdread.
+       (lines_split): Likewise.
+       Use memchr rather than a `while' loop.
+       (line_bytes_split): Use size_t instead of int.
+       Use safe_read, not stdread.
+       (main): Add some FIXME comments to remind me to remove casts.
+
+       * src/system.h (ST_BLKSIZE): Correct comment describing how to
+       reproduce HPUX-11 cat failure.  From Petter Reinholdtsen.
+
+2002-10-17  Jim Meyering  <jim@meyering.net>
+
+       Fix a problem that could make e.g., `cat' misbehave on systems which
+       give invalid (unreasonably large) values for stat.st_blksize.
+       * src/system.h (ST_BLKSIZE): Ensure that the result is in [1..4MB].
+       Reported by Petter Reinholdtsen.
+
+2002-10-14  Jim Meyering  <jim@meyering.net>
+
+       Specifying a printf conversion specifer as nl's separator string
+       could cause nl to segfault.
+       * src/nl.c (build_print_fmt): Don't include separator string
+       in the printf format; it might contain `%'.
+       Use a better bound on the length of the print_fmt buffer.
+       (print_lineno): Print the separator here instead.
+       Reported by Doug Coleman.
+
+       * tests/misc/nl: New file/tests, including a test for the above.
+       * tests/misc/Makefile.am (TESTS): Add nl.
+
+       * tests/misc/split-l: New test, to make sure `split --lines=N' works.
+       * tests/misc/Makefile.am (TESTS): Add split-l.
+
+2002-10-13  Jim Meyering  <jim@meyering.net>
+
+       * Version 4.5.3.
+
+       * src/du.c (usage): Tweak description of --dereference-args/-D.
+
+       * src/du.c (count_entry): Also save cwd when dereferencing (via
+       --dereference-args, -D) a command-line argument.
+       Reported by Michal Svec.  Based on a patch by Andreas Schwab.
+
+       * src/Makefile.am (../AUTHORS): New target/rule.
+
+2002-10-12  Jim Meyering  <jim@meyering.net>
+
+       * src/paste.c (paste_parallel): Declare local, `delims_saved', to be
+       of type size_t, since that's the way it's used and avoids a warning.
+
+       * src/csplit.c (struct cstring) [len]: Declare to be unsigned int,
+       since that's how it's always used and avoids a new warning from gcc.
+       (read_input): Adapt to new safe_read ABI.
+
+       * src/cut.c (cut_fields): Add a temporary size_t variable, n_bytes,
+       to avoid warnings.
+
+       * src/pinky.c (print_long_entry): fread returns size_t.
+       Declare local `bytes' accordingly, to avoid warning.
+
+       tail -c +N would perform an extra read after encountering EOF
+       [this change is analogous (bytes vs. lines) to the one of 2002-01-27]
+       * src/tail.c (start_bytes): Detect EOF, inform caller.
+       (tail_bytes): Upon EOF in start_bytes, return immediately.
+       (file_lines): Reorganize to use memrchr rather than an explicit loop.
+       Adapt to new safe_read ABI.
+
+2002-10-11  Jim Meyering  <jim@meyering.net>
+
+       * tests/du/deref: New file/test, for the above fix.
+       * tests/du/Makefile.am (TESTS): Add deref.
+
+2002-10-10  Jim Meyering  <jim@meyering.net>
+
+       * tests/ln/Makefile.am (TESTS): Add target-1.
+       * tests/ln/target-1: New file/test, for the fix on 2002-10-08.
+
+2002-10-09  Jim Meyering  <jim@meyering.net>
+
+       * tests/cp/backup-is-src: Ensure that certain environment variables
+       are not set (e.g., SIMPLE_BACKUP_SUFFIX).  Reported by Duncan Roe.
+
+       * tests/tail-2/big-4gb: Mark this as an expensive test; it would
+       consume 4GB of disk space on systems without support for sparse files.
+       Fix a logic error that'd make it `cat err' even though dd didn't fail.
+
+       * src/dircolors.hin (.jar): Fix typo: s/;3$/;31/.
+       Patch by steven@magelico.net, forwarded by Michael Stone.
+
+       * tests/ls/dired: Ensure that ls produces English messages.
+       Patch by Alexey Vyskubov, forwarded by Michael Stone.
+
+2002-10-08  Dmitry V. Levin  <ldv@altlinux.org>
+
+       * src/ln.c (main): Fix target_directory parsing when n_files == 1.
+
+2002-10-08  Jim Meyering  <jim@meyering.net>
+
+       * tests/tail-2/big-4gb: Use double quotes around diagnostic.
+       Fix syntax in test: use =, not ==.
+       Reported by Bob Proulx.
+       Change all the rest like this: grep -lR "testing framework'" .\
+       |xargs perl -pi -e 's/'\''(\$0: failure in testing framework)'\''/"$1"/'
+
+       * src/sum.c (sysv_sum_file): Adapt to new safe_read ABI.
+       * src/tr.c (squeeze_filter, read_and_delete, read_and_xlate): Likewise.
+       * src/tac.c (save_stdin, tac_stdin_to_mem): Likewise.
+       * src/wc.c (wc): Likewise.
+
+2002-10-07  Paul Eggert  <eggert@twinsun.com>
+
+       * src/cat.c (cat):
+       Don't advance the write pointer past the end of the write buffer.
+       * src/sort.c (begfield, limfield): Likewise.
+
+2002-10-07  Jim Meyering  <jim@meyering.net>
+
+       * src/cat.c (simple_cat, cat): Adapt to new safe_read ABI.
+       * src/head.c (head_bytes, head_lines): Likewise.
+
+2002-10-06  Jim Meyering  <jim@meyering.net>
+
+       * src/dd.c (scanargs): Ensure that specified block sizes (specified
+       via ibs=N, obs=N, and bs=N) are no larger than SSIZE_MAX.
+       (skip, dd_copy): Adapt to new safe_read ABI.
+
+       * Makefile.maint (signatures): Define.
+       (%.sig): New rule.
+       (announcement): Depend on $(signatures).
+
+       * Makefile.maint (announcement): Output all URLs for detached
+       signatures, not just the last one from the previous loop.
+
+2002-10-05  Jim Meyering  <jim@meyering.net>
+
+       * Version 4.5.2.
+
+       * src/remove.c (remove_entry) [ROOT_CAN_UNLINK_DIRS]: With `rm -i DIR',
+       don't recurse into directory, DIR.  Prompted by a report from
+       Leonardo Milano.
+
+       * tests/rm/i-no-r: New file/test, for the above fix.
+       * tests/rm/Makefile.am (TESTS): Add i-no-r.
+
+       * tests/tail-2/big-4gb: New file/test, for the fix of 2002-09-27.
+       * tests/tail-2/Makefile.am (TESTS): Add big-4gb.
+
+2002-10-03  Jim Meyering  <jim@meyering.net>
+
+       * src/rm.c (AUTHORS): Mark translatable string with `N_ (...)'.
+       * src/df.c (AUTHORS): Likewise.
+       * src/du.c (AUTHORS): Likewise.
+       * src/tail.c (AUTHORS): Likewise.
+       * src/touch.c (AUTHORS): Likewise.
+
+2002-10-02  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.am (SUBDIRS): Remove `old'.
+       (EXTRA_DIST): List the files in old/.
+       * configure.ac (AC_CONFIG_FILES): Remove old/* names.
+       Suggestion from Akim Demaille.
+
+2002-10-01  Jim Meyering  <jim@meyering.net>
+
+       * src/sys2.h (SSIZE_MAX): Define.
+
+2002-09-30  Jim Meyering  <jim@meyering.net>
+
+       * src/csplit.c: Don't include stdlib.h here.  It's already included
+       via system.h.
+
+2002-09-29  Jim Meyering  <jim@meyering.net>
+
+       * src/tr.c (find_bracketed_repeat): Rearrange pointer/integer
+       expression to avoid bogus warning from gcc.
+
+       * src/cat.c (simple_cat): Use a temporary to avoid bogus warnings.
+       (cat): Declare insize and outsize to be of type size_t, not int.
+       Rearrange pointer/integer expressions to avoid bogus warnings.
+       (main): Declare insize and outsize to be of type size_t, not int.
+
+       * src/tail.c (parse_options): Give a sensible diagnostic for
+       an invalid byte or line count.  Reported by Mikko Tuumanen.
+
+       * src/touch.c (main): Split a long line.
+
+       * tests/du/Makefile.am (TESTS): Add slink.
+       * tests/du/slink: New test for system.h change of 2002-08-31.
+
+       In move mode, always first try to rename.  Before, upon failure to
+       rename a directory, this code would never attempt to rename any
+       other file in that directory, but would thenceforth always copy.
+       On some systems (e.g., NetApp's OnTap-6.4), renaming a directory
+       may fail with EXDEV, yet renaming files within that directory to
+       a newly-created destination directory succeeds.
+       * src/copy.c (copy_internal): Remove local, move_mode;
+       use x->move_mode instead.  Based on a patch from Tom Haynes.
+
+2002-09-28  Jim Meyering  <jim@meyering.net>
+
+       * src/split.c (FAIL_ONLY_ONE_WAY): New macro.
+       Factor out some duplication.
+       (main): Use it.
+       [case 'a']: Use strtoul rather than strtol to avoid compiler warnings.
+
+       * src/sort.c (begfield, limfield): Rearrange comparisons to avoid
+       compiler warnings.
+       (fillbuf, keycompare): Cast literal `-1' to size_t in comparisons,
+       to avoid compiler warnings.
+
+       * src/shred.c (dopass): Use a uintmax_t temporary to avoid bogus
+       compiler warnings.
+
+       Fix things so `mkdir -p' can create very deep directories, e.g.,
+       mkdir -p $(perl -e 'print "a/" x 40000') now works.
+       * src/mkdir.c (main): For --parents (-p), call make_path with the
+       entire directory name, so we don't ever require that file operations
+       like stat or chmod be performed on the entire command line argument.
+       * makepath.c (make_path): Restore umask *before* creating the final
+       component.
+
+2002-09-27  Andreas Schwab  <schwab@suse.de>
+
+       * src/tail.c (tail_bytes): Change type of bytes_remaining to off_t
+       to avoid overflow.  Reported by Hans Lermen.
+
+2002-09-26  Jim Meyering  <jim@meyering.net>
+
+       * src/install.c (get_ids): Use strtoul, not strtol.  Remove some casts.
+
+2002-09-25  Jim Meyering  <jim@meyering.net>
+
+       * src/test.c (eaccess): Change type of local `euid' from int to uid_t
+       and add a cast, to avoid a warning about `signed and unsigned type in
+       conditional expression'.
+
+2002-09-22  Jim Meyering  <jim@meyering.net>
+
+       * src/rmdir.c: Include "dirname.h", for declaration of
+       strip_trailing_slashes.
+
+       * src/stat.c (PRIdMAX, PRIuMAX): Remove definitions.
+       Now they're defined through system.h.
+
+       * src/cp-hash.c, src/dd.c, src/df.c, src/du.c, src/ls.c,
+       * src/stat.c, src/wc.c: Remove all inclusions of inttypes.h,
+       since it's already included from sys2.h via system.h.
+
+       * Use automake-1.6f.  Regenerate dependent files.
+
+       * src/Makefile.am (PERL): Remove duplicate definition.
+
+       fmt's -s, -t, -c options didn't work properly for long lines.
+       Since get_line may end up calling put_paragraph (for long lines),
+       be sure to set global, `other_indent', before it is used there.
+
+       * src/fmt.c (set_other_indent): New function, factored out of...
+       (get_paragraph): ... here.  Call it.
+       (get_line): Call set_other_indent before calling flush_paragraph,
+       which calls fmt_paragraph, which in turn calls put_paragraph,
+       which uses other_indent.
+
+       * tests/fmt/Makefile.am (TESTS): Add long-line.
+       * tests/fmt/long-line: New file/test, for the above fix.
+
+2002-09-21  Jim Meyering  <jim@meyering.net>
+
+       * src/od.c: No longer include deprecated <values.h>.
+       It was required solely for now-removed reference to BITSPERBYTE.
+       * src/install.c: Likewise.
+       Suggestion from Bruno Haible.
+
+2002-09-06  Andreas Schwab  <schwab@suse.de>
+
+       `rmdir -p dir-specified-with-trailing-slash/' would fail.
+       * src/rmdir.c (remove_parents): Strip trailing slashes.
+
+2002-09-20  Jim Meyering  <jim@meyering.net>
+
+       * tests/rmdir/t-slash: New file/test, for the above fix.
+       * tests/rmdir/Makefile.am (TESTS): Add t-slash.
+
+       * Makefile.maint (announcement): Arrange to gpg-sign the message.
+       Add a URL for each detached signature file.
+
+2002-09-07  Bruno Haible  <bruno@clisp.org>
+
+       * configure.ac: Add need-ngettext to AM_GNU_GETTEXT invocation.
+
+2002-09-18  Jim Meyering  <jim@meyering.net>
+
+       `od -t x8' used the wrong (`l'-prefixed) printf format.
+       Likewise for the o8 and u8 formats.
+       * src/od.c (ISPEC_TO_FORMAT): Define macro.
+       (decode_one_format): Use PRIdMAX, PRIoMAX, etc. for LONG_LONG.
+       Reported by Arun Sharma.
+
+2002-09-17  Jim Meyering  <jim@meyering.net>
+
+       * src/sys2.h (PRIdMAX, PRIoMAX, PRIuMAX, PRIxMAX): Define if necessary.
+       From gettext's intl/loadmsgcat.c.
+
+       * tests/od/x8: New file/test, for the above fix.
+       * tests/od/Makefile.am (TESTS): Add x8.
+
+2002-09-15  Jim Meyering  <jim@meyering.net>
+
+       * Use autoconf-2.54.  Regenerate dependent files.
+
+       * src/csplit.c (get_format_width): Add cast to avoid
+       warning about `signed and unsigned type in conditional expression'.
+
+2002-09-14  Jim Meyering  <jim@meyering.net>
+
+       * src/who.c (print_user): Change type of local to size_t
+       to avoid warnings about `comparison between signed and unsigned'.
+       * src/ptx.c (generate_all_output): Likewise.
+
+       * src/dd.c (main, skip): Add casts to avoid warnings about
+       `comparison between signed and unsigned'.
+
+       * src/id.c (print_full_info, print_group_list): Add casts to avoid
+       warnings about `signed and unsigned type in conditional expression'.
+
+       * src/md5sum.c: Change type of global, digest_hex_bytes, to size_t
+       to avoid warnings about `comparison between signed and unsigned'.
+       (split_3): Change parameter names to be readable and add comment.
+       Clean up the test for whether a line may be ignored.
+
+2002-09-13  Jim Meyering  <jim@meyering.net>
+
+       * src/printf.c (main): Handle leading command line argument of `--'.
+       Reported by Raul: DervishD <raul@pleyades.net>
+       * tests/misc/printf: New file: test for the above.
+       * tests/misc/Makefile.am (TESTS): Add printf.
+
+       * src/date.c (usage): Explain that %S's range of [0..60] is required --
+       rather than 0..59 -- to accommodate the occasional positive leap second.
+       Reported by Richard Neill.
+
+2002-09-12  Jim Meyering  <jim@meyering.net>
+
+       * src/Makefile.am (nanosec_libs): Define.
+       (sleep_LDADD, tail_LDADD): Use it here.
+
+       Factor nanosleep-related code into ../lib/xnanosleep.c.
+       * src/sleep.c: Include xnanosleep.h.
+       Factor out fenv.h-related code.
+       (timespec_subtract): Remove function.
+       (main): Remove code that deals with computing start and stop times
+       as well as the loop around nanosleep.  Now that's in xnanosleep.c.
+
+       Allow S (in --sleep-interval=S) to be a floating point value.
+       * src/tail.c: Include xnanosleep.h and xstrtod.h.
+       Move declaration of global variable, sleep_interval, to ...
+       (main): ...here.
+       (usage): Update description of --sleep-interval option.
+       (tail_forever): New parameter, sleep_interval.  Update caller.
+       Use xnanosleep, rather than sleep.
+       (parse_options): New parameter, sleep_interval.  Update caller.
+       Use xstrtod, now that we accept floating point values.
+       Prompted by a patch from Augey Mikus.
+
+2002-09-06  Jim Meyering  <jim@meyering.net>
+
+       * src/remove.c (prompt): Change comment to give a better note to
+       translators.  From Michael Piefel.
+
+2002-09-02  Jim Meyering  <jim@meyering.net>
+
+       * README: A good problem report/patch includes diffs against
+       the most recent test release.
+
+       * src/pathchk.c (NEED_PATHCONF_WRAPPER): Define.
+       (pathconf_wrapper): Define only if NEED_PATHCONF_WRAPPER is set.
+
+       * src/kill.c (print_table_row): Use an unsigned type for widths
+       to avoid warning about comparison between signed and unsigned.
+       (list_signals): Likewise.
+
+       * src/od.c (skip): Add a cast to avoid warning about comparison
+       between signed and unsigned.
+       * src/install.c (get_ids): Likewise.  Also rearrange range-checking
+       comparisons to make them more readable.
+
+2002-09-01  Jim Meyering  <jim@meyering.net>
+
+       * Version 4.5.1.
+
+2002-08-31  Jim Meyering  <jim@meyering.net>
+
+       Symlinks were always reported as using 0 blocks.
+       * src/system.h (ST_NBLOCKS): Don't depend on file type.
+       This reverts the change of 2000-01-30.
+       Based on a report and patch from Neil Brown via Michael Stone.
+       This fixes Debian Bug#156358.
+
+       * Most files: Change `exit (0)' to `exit (EXIT_SUCCESS)',
+       `exit (1)' to `exit (EXIT_FAILURE)', and
+       `usage (1)' to `usage (EXIT_FAILURE)'.
+
+       * chgrp.c, chmod.c, chown.c, chroot.c, cp.c, date.c, dd.c, du.c,
+       * hostname.c, id.c, install.c, ln.c, mkdir.c, mkfifo.c, mknod.c,
+       * nice.c, pinky.c, printf.c, pwd.c, shred.c, sleep.c, stty.c,
+       * su.c, tac-pipe.c, tail.c, tee.c, touch.c, uname.c, uptime.c,
+       * users.c, who.c: Change `error (1, ...' to `error (EXIT_FAILURE, ...'.
+       But don't change `error (0, ...' to `error (EXIT_SUCCESS, ...', since
+       error never exits successfully.
+
+2002-08-29  Jim Meyering  <jim@meyering.net>
+
+       * src/remove.c (remove_cwd_entries): Use closedir (not CLOSEDIR)
+       when ignoring any return value.
+
+       * src/remove.c (remove_cwd_entries): Detect and diagnose readdir
+       failures.  On some systems (at least EMC Celerra and Solaris5.8),
+       this appears to be necessary.
+       (is_empty_dir): Likewise.  Also, always close directory handle.
+       * src/ls.c (print_dir): Likewise.
+       (print_dir): Rename local variable: reading -> dirp.
+       Reported by Mike Coleman.
+
+2002-08-28  Jim Meyering  <jim@meyering.net>
+
+       * src/remove.c (remove_cwd_entries): Use CLOSEDIR, not closedir.
+       Give a diagnostic and fail if closedir fails.
+
+2002-08-26  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.am (THANKS-to-translators): New rule.
+       (EXTRA_DIST): Add both THANKS-to-translators and THANKStt.in.
+       * THANKStt.in: New file.
+
+       * src/cat.c (close_stdout_wrapper): New, kludgey, function and
+       file-scoped global.
+       (main): Register it with atexit.
+       Close STDOUT_FILENO, to avoid a problem when writing to
+       /dev/audio on at least Solaris 5.7 and 5.8 systems.
+       Reported by Shing-Shong Shei.
+
+2002-08-25  Jim Meyering  <jim@meyering.net>
+
+       * src/cat.c (main): Close STDIN_FILENO rather than a literal `0'.
+       * src/tac.c (main): Likewise.
+       * src/tail.c (main): Likewise.
+       * src/tee.c (main): Likewise.
+       * src/tr.c (main): Likewise.
+       * src/wc.c (main): Likewise.
+
+2002-08-20  Jim Meyering  <jim@meyering.net>
+
+       * tests/mv/setup: Rewrite not to use `: ${VAR=not_set}' paradigm.
+
+2002-08-10  Paul Eggert  <eggert@twinsun.com>
+
+       * src/nohup.sh: Don't use "exec --"; it's not portable and
+       shouldn't be needed.
+
+2002-08-09  Jim Meyering  <jim@meyering.net>
+
+       * src/pr.c (main): Don't ignore -COLUMN if it's the last option.
+       (usage): Clarify help text for the -COLUMN option.
+       Patch by Padraig Brady.
+       * tests/pr/Test.pm [col-last]: New test for the above.
+
+       * configure.ac: Start with version 4.5.1, chosen so that it's larger
+       than the latest version numbers of the component packages.
+
+       * man/Makefile.am (check-x-vs-1): Set and export PATH so we use
+       programs in ../src.
+
+2002-08-08  Jim Meyering  <jim@meyering.net>
+
+       * src/date.c: Guard inclusion of <langinfo.h> with
+       `#if HAVE_LANGINFO_CODESET', not `#if HAVE_LANGINFO_H'.
+       * src/sort.c: Likewise.
+       Patch by GOTO Masanori.
+
+2002-08-05  Paul Eggert  <eggert@twinsun.com>
+
+       Fix some minor time-related bugs with POSIX time arguments.
+       Some valid time stamps were being rejected (notably -1, and
+       time stamps before 1900 on 64-bit hosts).  And some invalid
+       time stamps were being accepted, e.g. September 31.
+
+       * src/date.c (main): Adjust to posixtime signature change.
+       * src/touch.c (main): Likewise.  Remove unnecessary initialization.
+       Use localtime, not posixtm, to warn about obsolete "touch".
+
+2002-08-05  Jim Meyering  <jim@meyering.net>
+
+       * tests/misc/Makefile.am (TESTS): Add nice and pathchk1.
+
+2002-08-04  Jim Meyering  <jim@meyering.net>
+
+       * src/Makefile.am (check-README): New target/rule.
+       (check): Depend on it.
+
+       * configure.ac (AC_CONFIG_FILES): Add old/Makefile and old/*/Makefile.
+
+2002-08-03  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.am (SUBDIRS): Add old.
+       * old/: New directory, containing legacy ChangeLog* and NEWS files
+       from the fileutils, sh-utils, and textutils packages.
+
+       * src/Makefile.am (AM_INSTALLCHECK_STD_OPTIONS_EXEMPT): Set to false.
+
+2002-08-02  Paul Eggert  <eggert@twinsun.com>
+
+       * NEWS, doc/coreutils.texi: uniq now obeys LC_COLLATE.
+
+       * src/uniq.c: Include hard-locale.h, xmemcoll.h.
+       (hard_LC_COLLATE): New var.
+       (different): Args are now char *, not const char *.
+       Use xmemcoll instead of memcmp to compare lines, so that
+       LC_COLLATE has effect.  However, use memcmp if it is an
+       easy locale.
+       (check_file): Do not include newline in comparison, so that
+       xmemcoll has a byte to stomp on temporarily.
+       (main): Set hard_LC_COLLATE.
+
+2002-07-29  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.am (SUBDIRS): Remove djgpp, for now.
+
+2002-07-20  Jim Meyering  <jim@meyering.net>
+
+       * Makefile.am (false.c): Convert only the final EXIT_SUCCESS
+       into EXIT_FAILURE.  Otherwise, false --help and false --version
+       would fail.
+
+2002-07-08  Jim Meyering  <jim@meyering.net>
+
+       * src/Makefile.am (uninstall-local): Search for @GNU_PACKAGE@,
+       rather than the hard-coded `sh-utils'.
+
+2002-07-01  Jim Meyering  <jim@meyering.net>
+
+       * configure.ac: Merge the three files from fileutils,
+       textutils, and sh-utils.
+       * Makefile.am: Likewise.
+       * src/Makefile.am: Likewise.