summaryrefslogtreecommitdiffstats
path: root/ChangeLog
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 16:11:47 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 16:11:47 +0000
commit758f820bcc0f68aeebac1717e537ca13a320b909 (patch)
tree48111ece75cf4f98316848b37a7e26356e00669e /ChangeLog
parentInitial commit. (diff)
downloadcoreutils-758f820bcc0f68aeebac1717e537ca13a320b909.tar.xz
coreutils-758f820bcc0f68aeebac1717e537ca13a320b909.zip
Adding upstream version 9.1.upstream/9.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog8058
1 files changed, 8058 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..20767ae
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,8058 @@
+2022-04-15 Pádraig Brady <P@draigBrady.com>
+
+ version 9.1
+ * NEWS: Record release date.
+
+2022-04-15 Pádraig Brady <P@draigBrady.com>
+
+ doc: avoid unicode errors in texi conversion
+ Avoid "Unicode character U+#1 not supported, sorry" error
+ when converting from texi to dvi or pdf.
+
+ * doc/coreutils.texi (tr invocation): Avoid the @U{XXXX}
+ texi representation, as even though info and html can represent
+ these characters directly, there are conversion errors
+ for pdf and dvi. Instead use the more abstract shell
+ $'\uXXXX' representation.
+
+2022-04-14 Pádraig Brady <P@draigBrady.com>
+
+ build: copy: fix build on macos 10.12
+ * src/copy.c (copy_reg): Handle the case where CLONE_NOOWNERCOPY
+ is not defined.
+ Reported by Jeffrey Walton
+
+2022-04-13 Pádraig Brady <P@draigBrady.com>
+
+ tail: detect closed stdout on Solaris
+ * src/tail.c (check_output_alive): Use poll() on Solaris.
+ Also handle POLLHUP, which Solaris returns in this case.
+ * tests/tail-2/pipe-f.sh: Use `head -n2` rather than `sed 2q`
+ as Solaris sed does not exit in this case.
+ * NEWS: Mention the improvement.
+ Reported by Bruno Haible.
+
+ maint: syntax-check: fix preprocessor indentation
+ * gl/lib/targetdir.h: Keep '#' at start of line.
+
+2022-04-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ cp,mv,install: omit an ‘inline’
+ * gl/lib/targetdir.c (target_directory_operand):
+ Omit unnecessary ‘inline’.
+
+ cp,mv,install: improve EACCES targetdir messages
+ This improves on the fix for --target-directory diagnostics bugs on
+ Solaris 11. Problem reported by Bruno Haible and Pádraig Brady; see:
+ https://lists.gnu.org/r/coreutils/2022-04/msg00044.html
+ Also, omit some unnecessary stat calls.
+ * gl/lib/targetdir.c (target_directory_operand): If !O_DIRECTORY,
+ do not bother calling open if stat failed with errno != EOVERFLOW.
+ Rename is_a_dir to try_to_open since that’s closer to what it means.
+ If the open failed with EACCES and we used O_SEARCH, look at stat
+ results to see whether errno should be ENOTDIR for better diagnostics.
+ Treat EOVERFLOW as an “I don’t know whether it’s a directory and
+ there’s no easy way to find out” rather than as an error.
+
+ cp,mv,install: avoid excess stat calls on non-GNU
+ * gl/lib/targetdir.c (target_directory_operand): New arg ST.
+ All callers changed.
+ * src/cp.c (do_copy):
+ * src/mv.c (main):
+ Avoid unnecessary stat call if target_directory_operand already
+ got the status.
+
+ cp,mv,install: modularize targetdir
+ Move target directory code out of system.h to a new targetdir module.
+ This doesn’t change functionality.
+ * bootstrap.conf (gnulib_modules): Add targetdir.
+ * src/cp.c, src/install.c, src/mv.c: Include targetdir.h.
+ * src/system.h (must_be_working_directory, target_directory_operand)
+ (targetdir_dirfd_valid): Move from here ...
+ * gl/lib/targetdir.c, gl/lib/targetdir.h, gl/modules/targetdir:
+ ... to these new files.
+
+2022-04-13 Pádraig Brady <P@draigBrady.com>
+
+ cp,mv,install: avoid EACCES with non directory destination
+ * src/system.h (target_directory_operand): Also check with stat()
+ on systems with O_SEARCH, to avoid open("file", O_SEARCH|O_DIRECTORY)
+ returning EACCES rather than ENOTDIR, which was seen on Solaris 11.4
+ when operating on non dirs without execute bit set.
+ * NEWS: Remove related bug entry, as that issue was only introduced
+ after coreutils v9.0 was released.
+ Reported by Bruno Haible.
+
+ sync: support syncing files on cygwin
+ * src/sync.c (sync_arg): Similarly to AIX, Cygwin 2.9.0
+ was seen to need write access to have permission to sync a file.
+
+ tests: cygwin: handle ENOENT from execvp(".")
+ * tests/misc/env.sh: Verify with another command that
+ execvp() doesn not return ENOENT, before testing the
+ exit code from the command in question.
+ * tests/misc/nice-fail.sh: Likewise.
+ * tests/misc/stdbuf.sh: Likewise.
+ * tests/misc/timeout-parameters.sh: Likewise.
+
+ tests: env-S.pl: unset cygwin hardwired env vars
+ * tests/misc/env-S.pl: Unset SYSTEMROOT and WINDIR.
+
+2022-04-12 Pádraig Brady <P@draigBrady.com>
+
+ tests: md5sum: fix false failures on cygwin
+ * tests/misc/md5sum-newline.pl: Avoid binary '*' tags when
+ comparing checksums.
+ * tests/misc/md5sum-bsd.sh: Avoid binary '*' tags so that we correctly
+ trigger the ambiguity test.
+ Reported by Bruno Haible
+
+2022-04-11 Pádraig Brady <P@draigBrady.com>
+
+ tests: b2sum.sh: fix false failure on cygwin
+ * tests/misc/b2sum.sh: Avoid binary '*' tags when comparing checksums.
+ Reported by Bruno Haible
+
+ tests: dircolors.pl: avoid false failure with TERM=dumb
+ * tests/Coreutils.pm: Ensure an unset $TERM env var,
+ which is required on perl 5.22.2 on Solaris 11 OpenIndiana at least,
+ where TERM was being reset to 'dumb'.
+ Reported By Bruno Haible.
+
+ tests: printf-mb.sh: fix false failure with french translations
+ * tests/misc/printf-mb.sh: As per commit 04148c99c,
+ adjust non C warnings before comparison, to those of LC_MESSAGES=C.
+ Reported by Adam Sampson
+
+2022-04-10 Pádraig Brady <P@draigBrady.com>
+
+ tests: stty.sh: skip on systems without perl
+ * init.cfg (stty_reversible_init_): Add require_perl_
+ to ensure we skip rather than error, without perl.
+
+2022-04-09 Pádraig Brady <P@draigBrady.com>
+
+ cp,mv,install: avoid opening non directory destination
+ commit v9.0-66-ge2daa8f79 introduced an issue, for example
+ where cp could hang when overwriting a destination fifo,
+ when it would try to open() the fifo on systems
+ like Solaris 10 that didn't support the O_DIRECTORY flag.
+
+ This is still racy on such systems, but only in the
+ case where a directory is replaced by a fifo in
+ the small window between stat() and open().
+
+ * src/system.h (target_directory_operand): On systems without
+ O_DIRECTORY, ensure the file is a directory before attempting to open().
+ * tests/cp/special-f.sh: Protect cp with timeout(1),
+ as cp was seen to hang when trying to overwrite an existing fifo.
+ * NEWS: Mention the bug fix.
+
+2022-04-09 Pádraig Brady <P@draigBrady.com>
+
+ doc: install --compare: clarify mode of operation
+ * doc/coreutils.texi (install invocation): For the --compare option,
+ clarify that the ownership or permissions of the source files don't
+ matter. Also don't imply --owner or --group need to be specified
+ for --compare to be effective.
+ * src/install.c (usage): Add more detail on what's being compared.
+ Fixes https://bugs.gnu.org/50889
+
+2022-04-08 Pádraig Brady <P@draigBrady.com>
+
+ doc: remove older ChangeLog items
+ * Makefile.am: Update the oldest documented version
+ to 8.27 which is now about 5 years old.
+
+2022-04-08 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: remove obsolete statat gnulib module
+ * bootstrap.conf (gnulib_modules): Remove statat.
+
+2022-04-07 Pádraig Brady <P@draigBrady.com>
+
+ build: update gnulib submodule to latest
+ * gnulib: Update to latest
+ * src/copy.c: Replace deprecated {l,}statat(), with fstatat().
+ * src/cp.c: Likewise.
+ * src/install.c: Likewise.
+ * src/remove.c: Likewise.
+
+2022-04-04 Pádraig Brady <P@draigBrady.com>
+
+ factor: improve support on RISCV and loongson
+ * src/longlong.h: Pull in RISCV fix and loongarch64 support from
+ https://gmplib.org/repo/gmp/log/tip/longlong.h
+
+2022-04-03 Pádraig Brady <P@draigBrady.com>
+
+ doc: describe `dd iseek` as a feature not a change
+ * NEWS: Move description from "Changes in behavior"
+ to "New features".
+
+2022-04-03 Pádraig Brady <P@draigBrady.com>
+
+ ls: avoid expensive capability lookup by default
+ Lookup of file-based capabilities adds 30% overhead to the common
+ case of ls --color usage. Since the use of file capabilities is
+ very rare, it doesn't make sense to pay this cost in the common
+ case. It's better to use getcap to inspect capabilities, and the
+ following run shows only 8 files using capabilities on my fedora
+ 35 distro (14 years after the feature was introduced to the linux
+ kernel).
+
+ $ getcap -r /
+ /usr/bin/arping = cap_net_raw+p
+ /usr/bin/clockdiff = cap_net_raw+p
+ /usr/bin/gnome-keyring-daemon = cap_ipc_lock+ep
+ /usr/bin/gnome-shell = cap_sys_nice+ep
+ /usr/bin/newgidmap = cap_setgid+ep
+ /usr/bin/newuidmap = cap_setuid+ep
+ /usr/sbin/mtr-packet = cap_net_raw+ep
+ /usr/sbin/suexec = cap_setgid,cap_setuid+ep
+
+ * src/dircolors.hin: Set "CAPABILITY" to "00", to indicate unused.
+ * src/ls.c: Set the default C_CAP color to not colored.
+ * NEWS: Mention the change in behavior.
+
+2022-04-03 Ville Skyttä <ville.skytta@iki.fi>
+
+ dircolors: colorize backup files with bright black
+ * src/dircolors.hin: Add patterns for suffixes for "backup files".
+ The color used is so they stand out less than non-backup files,
+ and bright black works well on both light and dark backgrounds.
+ * THANKS.in: Remove duplicate.
+ Fixes https://bugs.gnu.org/54521
+
+2022-03-29 Pádraig Brady <P@draigBrady.com>
+
+ doc: join: clarify that -e only effective for -12jo fields
+ * src/join.c (usage): Clarify that -e is not sufficient
+ to enable output of missing fields from one of the inputs.
+ Rather the -12jo options are required to explicitly
+ enable output of those fields.
+ Fixes https://bugs.gnu.org/54625
+
+2022-03-25 Pádraig Brady <P@draigBrady.com>
+
+ maint: sync latest bootstrap from gnulib
+ * bootstrap: Should have updated this with the last gnulib update.
+
+2022-03-20 Pádraig Brady <P@draigBrady.com>
+
+ tests: improve recent printf test
+ * tests/misc/printf-mb.sh: Given we shortcut the single char
+ (invalid multi-byte) case, add a case to ensure we're correctly
+ checking the return from mbrtowc().
+
+2022-03-19 Pádraig Brady <P@draigBrady.com>
+
+ printf: support printing the numeric value of multi-byte chars
+ * src/printf.c (STRTOX): Update to support multi-byte chars.
+ * tests/misc/printf-mb.sh: Add a new test.
+ * tests/local.mk: Reference the new test.
+ * NEWS: Mention the improvement.
+ Fixes https://bugs.gnu.org/54388
+
+2022-03-18 Pádraig Brady <P@draigBrady.com>
+
+ maint: move build-related NEWS item to its own section
+ * NEWS: Follow other Build-related patterns in NEWS.
+
+2022-03-12 Pádraig Brady <P@draigBrady.com>
+
+ doc: test: clarify that -rwx don't just check perm bits
+ * src/test.c (usage): State that -rwx is determined by
+ user access, rather than permission bits.
+ * doc/coreutils.texi (Access permission tests): Likewise.
+ * man/test.x [SEE ALSO]: access(2).
+ Fixes https://bugs.gnu.org/54338
+
+2022-03-07 Pádraig Brady <P@draigBrady.com>
+
+ maint: address syntax-check issues in recent commit
+ * cfg.mk (sc_die_EXIT_FAILURE): Generalize to match any EXIT_ define,
+ and also relax to ignore error() usage with ternary operator.
+ * src/chroot.c (main): Use () to avoid the sc_error_quotes check.
+
+2022-03-07 Pádraig Brady <P@draigBrady.com>
+
+ stat: only automount with --cached=never
+ Revert to the default behavior before the introduction of statx().
+
+ * src/stat.c (do_stat): Set AT_NO_AUTOMOUNT without --cached=never.
+ * doc/coreutils.texi (stat invocation): Mention the automount
+ behavior with --cached=never.
+ * NEWS: Mention the change in behavior.
+
+ Fixes https://bugs.gnu.org/54287
+
+2022-03-07 Rohan Sable <rsable@redhat.com>
+
+ ls: avoid triggering automounts
+ statx() has different defaults wrt automounting
+ compared to stat() or lstat(), so explicitly
+ set the AT_NO_AUTOMOUNT flag to suppress that behavior,
+ and avoid unintended operations or potential errors.
+
+ * src/ls.c (do_statx): Pass AT_NO_AUTOMOUNT to avoid this behavior.
+ * NEWS: Mention the change in behavior.
+ Fixes https://bugs.gnu.org/54286
+
+2022-03-07 Pádraig Brady <P@draigBrady.com>
+
+ build: ensure AT_NO_AUTOMOUNT is defined
+ update gnulib submodule to latest,
+ where this is the only change
+
+2022-03-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ date: fix newly-introduced %%-N bug
+ * src/date.c (adjust_resolution): Don’t mishandle %%-N.
+ * tests/misc/date.pl (pct-pct): New test.
+
+2022-02-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ chown: warn about USER.GROUP
+ Suggested by Dan Jacobson (Bug#44770).
+ * src/chown.c, src/chroot.c (main):
+ Issue warnings if obsolete USER.GROUP notation is present.
+
+ build: update gnulib submodule to latest
+
+2022-02-24 Pádraig Brady <P@draigBrady.com>
+
+ fmt: fix invalid multi-byte splitting on macOS
+ On macOS, isspace(0x85) returns true,
+ which results in splitting within multi-byte characters.
+
+ * src/fmt.c (get_line): s/isspace/c_isspace/.
+ * tests/fmt/non-space.sh: Add a new test.
+ * tests/local.mk: Reference new test.
+ * NEWS: Mention the fix.
+ Addresses https://bugs.gnu.org/54124
+
+2022-02-24 Pádraig Brady <P@draigBrady.com>
+
+ tests: improve compat with macOS
+ * tests/misc/wc-nbsp.sh: Only the en_US.iso8859-1 form
+ is accepted on macOS 10.15.7 at least. GNU/Linux also
+ accepts ISO-8859-1 (and canonicalizes the charmap to this).
+
+2022-02-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ dd: counts ending in "B" now count bytes
+ This implements my suggestion in Bug#54112.
+ * src/dd.c (usage): Document the change.
+ (parse_integer, scanargs): Implement the change.
+ Omit some now-obsolete checks for invalid flags.
+ * tests/dd/bytes.sh: Test the new behavior, while retaining
+ checks for the now-obsolete usage.
+ * tests/dd/nocache_eof.sh: Avoid now-obsolete usage.
+
+2022-02-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ dd: improve doc relative to POSIX
+ * doc/coreutils.texi (dd invocation): Improve documentation,
+ clarifying whether features are extensions to POSIX.
+
+ dd: support iseek= and oseek=
+ Alias iseek=N to skip=N, oseek=N to seek=N (Bug#45648).
+ * src/dd.c (scanargs): Parse iseek= and oseek=.
+ * tests/dd/skip-seek.pl (sk-seek5): New test case.
+
+2022-02-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ cp: avoid unnecessary buffer allocation
+ Do not allocate I/O buffer if copy_file_range suffices.
+ * src/copy.c (sparse_copy, lseek_copy): Buffer arg is now char **
+ instead of char *, and buffer is now allocated only if needed.
+ All uses changed.
+
+2022-02-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+
+2022-02-15 Pádraig Brady <P@draigBrady.com>
+
+ doc: env: fix man page reference of exec(2) to exec(3p)
+ * man/env.x: Change exec() reference from section 2 to 3p.
+
+2022-02-15 Pádraig Brady <P@draigBrady.com>
+
+ doc: use bold style for man page references
+ It's more common to use bold style than not,
+ for references to other man pages.
+ Ideally each man page renderer would highlight references,
+ but currently some rely on styles in the page itself.
+
+ * man/help2man: Implement a --bold-refs option that
+ will mark up references like "name(1)" with bold
+ style around the "name" component.
+ * man/local.mk: Pass --bold-refs to our help2man unless disabled.
+ * configure.ac: Add a --disable-bold-man-page-references option.
+ Addresses https://bugs.gnu.org/53977
+
+2022-02-15 Pádraig Brady <P@draigBrady.com>
+
+ dircolors: speed up processing of TERM entries
+ * src/dircolors.c (main): Avoid glob matching
+ when we've already matched in a group of {COLOR,}TERM entries.
+
+2022-02-15 Pádraig Brady <P@draigBrady.com>
+
+ dircolors: consider COLORTERM as well as TERM env vars
+ COLORTERM is an environment used usually to expose truecolor support in
+ terminal emulators. Therefore support matches on that in addition
+ to TERM. Also set the default COLORTERM match pattern so that
+ we apply colors if COLORTERM is any value.
+
+ This implicitly supports a terminal like "foot"
+ without a need for an explicit TERM entry.
+
+ * NEWS: Mention the new feature.
+ * src/dircolors.c (main): Match COLORTERM like we do for TERM.
+ * src/dircolors.hin: Add default config to match any COLORTERM.
+ * tests/misc/dircolors.pl: Add test cases.
+
+2022-02-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ tr: mention multibyte problem in man page
+ * man/tr.x: Document tr problem.
+
+ tr: improve multibyte etc. doc
+ Problem reported by Dan Jacobson (Bug#48248).
+ * doc/coreutils.texi (tr invocation): Improve documentation for
+ tr's failure to support multibyte characters POSIX-style.
+ * doc/coreutils.texi (tr invocation), src/tr.c (usage):
+ Use terminology closer to POSIX's.
+
+2022-02-13 Pádraig Brady <P@draigBrady.com>
+
+ dircolors: add --print-ls-colors to display colored entries
+ * NEWS: Mention the new feature.
+ * doc/coreutils.texi (dircolors invocation): Describe the new
+ --print-ls-colors option.
+ * src/dircolors.c (print_ls_colors): A new global to select
+ between shell or terminal output.
+ (append_entry): A new function refactored from dc_parse_stream()
+ to append the entry in the appropriate format.
+ (dc_parse_stream): Adjust to call append_entry().
+ * tests/misc/dircolors.pl: Add test cases.
+
+2022-02-13 Pádraig Brady <P@draigBrady.com>
+
+ chown,chgrp: reinstate numeric id output in -v messages
+ since gnulib commit ff208d546a,
+ related to coreutils commit v9.0-143-gabde15969
+ we no longer maintain numeric IDs through chopt->{user,group}_name.
+ Therefore we need to adjust to ensure tests/chown/basic.sh passes.
+
+ * src/chown-core.c (uid_to_str, gid_to_str): New helper functions
+ to convert numeric id to string.
+ (change_file_owner): Use the above new functions to pass
+ numeric ids to describe_change().
+
+2022-02-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ sort: fix several version-sort problems
+ This also affects ls -v in some corner cases.
+ Problems reported by Michael Debertol <https://bugs.gnu.org/49239>.
+ While looking into this, I spotted some more areas where the
+ code and documentation did not agree, or where the documentation
+ was unclear. In some cases I changed the code; in others
+ the documentation. I hope things are nailed down better now.
+ * doc/sort-version.texi: Distinguish more carefully between
+ characters and bytes. Say that non-identical strings can
+ compare equal, since they now can. Improve readability in
+ various ways. Make it clearer that a suffix can be the
+ entire string.
+ * src/ls.c (cmp_version): Fall back on strcmp if filevercmp
+ reports equality, since filevercmp is no longer a total order.
+ * src/sort.c (keycompare): Use filenvercmp, to treat NULs correctly.
+ * tests/misc/ls-misc.pl (v_files):
+ Adjust test to match new behavior.
+ * tests/misc/sort-version.sh: Add tests for stability,
+ and for sorting with NUL bytes.
+
+ build: update gnulib submodule to latest
+
+2022-02-12 Pádraig Brady <P@draigBrady.com>
+
+ doc: avoid using "[" is URLS in --help output
+ * src/system.h (emit_ancillary_info): While supported if entered
+ manually, the "[" character is not highlighted as part of a
+ URL by default in terminals, so avoid using it.
+ Addresses https://bugs.gnu.org/53946
+
+ doc: adust --help, --version alignment
+ * src/system.h: Adjust the alignment of the --help
+ and --version option descriptions, to start at column 21.
+ This better aligns with the descriptions of most commands,
+ and also aligns with the minimum column a description must
+ start at to ensure a blank line is not output when a description
+ follows an option on a line by itself.
+
+ doc: rmdir: improve --help formatting
+ * src/rmdir.c (usage): Move description to column 21,
+ so that a --long-option on its own line without a
+ trailing description, doesn't have an erroneous blank
+ line inserted between the option and description.
+ Also group descriptions with blank lines rather than indents,
+ so that man pages don't have erroneous blank lines
+ added within the description.
+ Addresses https://bugs.gnu.org/53946
+
+ doc: ls: reference dircolors(1) from --help
+ * src/ls.c (usage): s/dircolors/dircolors(1)/.
+ * man/ls.x [SEE ALSO]: Reference dircolors(1).
+ Addresses https://bugs.gnu.org/53946
+
+ doc: ls: improve --help formatting
+ * src/ls.c (usage): Use blank lines to group multi-line
+ option descriptions, rather than indenting.
+ This results in more consistent alignment of descriptions,
+ and also avoids erroneous new lines in generated in man pages.
+ Addresses https://bugs.gnu.org/53946
+
+2022-02-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: improve version-sort doc
+ * doc/coreutils.texi, doc/sort-version.texi:
+ Capitalize “Coreutils”.
+ * doc/sort-version.texi: Don’t emphasize natural sort so much,
+ since Coreutils has just version sort.
+ Use the term “lexicographic” instead of “alphabetic” or “standard”.
+ Suggest combining ‘V’ with ‘b’, and show why ‘b’ is needed.
+ Use shorter titles for sections, as GNU Emacs displays info poorly
+ when titles are too long to fit in a line.
+ Use @samp instead of @code for samples of data.
+ Do not use @samp{@code{...}}; @samp{...} should suffice and
+ double-nesting looks bad with Emacs.
+ Omit blank lines in examples that would not be present
+ in actual shell sessions.
+ Quote with `` and '', not with " or with '.
+ Mention dpkg --compare-versions more prominently.
+ Don’t rely on "\n" being equivalent to "\\n" in shell args.
+ Prefer Unicode name for hyphen-minus.
+
+2022-02-07 Christian Hesse <mail@eworm.de>
+
+ dircolors: highlight .avif as image
+ This add highlighting for AV1 Image File Format (AVIF):
+ https://aomediacodec.github.io/av1-avif/
+
+ * src/dircolors.hin: Highlight .avif as image.
+
+2022-02-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ date: test against bug#50115
+ * tests/misc/date.pl: Add test.
+
+ build: update gnulib submodule to latest
+
+2022-02-05 Pádraig Brady <P@draigBrady.com>
+
+ doc: fix somewhat ambiguous date format representation
+ * doc/coreutils.texi (date invocation): Remove @var{...} usage,
+ as that capitalizes in the representation and thus somewhat
+ ambiguates the format wrt Month and Minute. This also avoids
+ a syntax check failure about redundant capitalization in @var{}.
+
+2022-02-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ date: improve doc
+ Problem reported by Dan Jacobson (Bug#51288).
+ * doc/coreutils.texi (date invocation, Setting the time)
+ (Options for date):
+ * src/date.c (usage): Improve doc.
+
+ build: update gnulib submodule to latest
+
+2022-02-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ id: print groups of listed name
+ Problem reported by Vladimir D. Seleznev (Bug#53631).
+ * src/id.c (main): Do not canonicalize user name before
+ deciding what groups the user belongs to.
+
+2022-02-01 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ doc: add NEWS entry for recent cksum change
+ * NEWS (Changes in behavior): Add entry for commit v9.0-92-ga42a03913.
+
+2022-02-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: suppress bogus noreturn warnings
+ * configure.ac: Move the single-binary code before the
+ gcc-warnings code, so that the latter can depend on the former.
+ Suppress -Wsuggest-attribute=noreturn with single binaries,
+ to avoid diagnostics like the following:
+ src/expr.c: In function 'single_binary_main_expr':
+ error: function might be candidate for attribute 'noreturn'
+ Problem reported by Pádraig Brady in:
+ https://lists.gnu.org/r/coreutils/2022-01/msg00061.html
+
+ tr: pacify -fsanitizer=leak
+ * src/tr.c (main): Use main_exit, not return, in a couple of
+ places missed last time.
+
+ chgrp: fix typo in previous change
+ * src/chgrp.c (main): Use main_exit, not exit.
+
+ maint: mark some _Noreturn functions
+ * src/basenc.c (finish_and_exit, do_encode, do_decode):
+ * src/comm.c (compare_files):
+ * src/tsort.c (tsort):
+ * src/uptime.c (uptime):
+ Mark with _Noreturn. Otherwise, unoptimized compilations may warn
+ that the calling renamed-main function doesn't return a value,
+ when !lint and when single-binary.
+
+ df: fix memory leak
+ * src/df.c (devlist_free): Remove.
+ (filter_mount_list): Free all of devlist, instead of merely
+ the entries in devlist_table.
+
+2022-01-31 Pádraig Brady <P@draigBrady.com>
+
+ maint: cut: avoid exporting recently added variable
+ * src/cut.c: Make output_delimiter_default static,
+ as identified by `make syntax-check`.
+
+2022-01-31 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: pacify gcc -flto -Wmaybe-uninitialized
+ * gl/lib/xdectoint.c (__xnumtoint): Tell gcc that ‘error’
+ does not return here.
+ * gl/modules/xdectoint (Depends-on): Add stdbool, verify.
+
+ dd: do not access uninitialized
+ * src/dd.c (parse_integer): Avoid undefined behavior
+ that accesses an uninitialized ‘n’ when e == LONGINT_INVALID.
+ Return more-accurate error code when INTMAX_MAX < n.
+
+ uptime: simplify -fsanitize=leak pacification
+ * src/uptime.c (uptime): Exit here ...
+ (main): ... instead of here.
+
+ uniq: remove IF_LINT
+ * src/uniq.c (check_file): Remove a no-longer-needed IF_LINT.
+
+ unexpand: remove IF_LINT
+ * src/unexpand.c (unexpand): Remove a no-longer-needed IF_LINT.
+
+ pr: remove IF_LINT
+ * src/pr.c (read_line): Remove a no-longer-needed IF_LINT.
+
+ truncate: simplify
+ * src/truncate.c (do_ftruncate): Check != 0 instead of == -1.
+ Avoid a cast.
+ (main): Use C99 style decls after statements.
+ Simplify ‘open’ logic.
+
+2022-01-31 Paul Eggert <eggert@cs.ucla.edu>
+
+ shred: remove IF_LINT
+ * src/shred.c (dopass): Remove a no-longer-needed IF_LINT.
+
+ (read_line): Remove an IF_LINT; no longer needed with
+ today’s GCC.
+
+2022-01-31 Paul Eggert <eggert@cs.ucla.edu>
+
+ pr: simplify -fsanitize=leak pacification
+ * src/pr.c (main): Remove an IF_LINT.
+ Use main_exit rather than return.
+
+ pinky: simplify -fsanitize=leak pacification
+ * src/pinky.c (short_pinky): exit instead of freeing.
+
+ paste: remove IF_LINT
+ * src/paste.c (paste_parallel): Remove no-longer-needed IF_LINT.
+
+ hostname: simplify
+ * src/hostname.c (sethostname): Provide a substitute on all
+ platforms, to simplify the mainline code.
+ (main): Simplify. Remove an IF_LINT.
+ Use main_exit rather than return.
+
+ factor: remove IF_LINT
+ * src/factor.c (factor_using_squfof) [USE_SQUFOF]:
+ Use plain assert (...), not IF_LINT (assert (...)).
+ This code is currently never compiled or executed,
+ so this is merely a symbolic cleanup.
+
+ expand: remove IF_LINT
+ * src/expand.c (expand): Remove no-longer-needed IF_LINT.
+
+ env: simplify -fsanitize=leak pacification
+ * src/env.c (unset_envvars): Remove IF_LINT code.
+ (main): Use main_exit, not return.
+
+ md5sum: remove IF_LINTs
+ * src/digest.c (digest_check): Remove IF_LINTs that are no longer
+ needed, as GCC has gotten smarter since 2008.
+
+ df: simplify -fsanitize=leak pacification
+ * src/df.c (print_table, main) [lint]: Omit unnecessary cleanup.
+ (main): Use main_exit, not return.
+
+ date: simplify -fsanitize=leak pacification
+ * src/date.c (main) [lint]: Omit unnecessary cleanup.
+ Use main_exit, not return.
+
+ cut: simplify and remove an IF_LINT
+ * src/cut.c (enum operating_mode, operating_mode)
+ (output_delimiter_specified, cut_stream):
+ Remove; no longer needed.
+ (output_delimiter_default): New static var. Code can now
+ use ‘output_delimiter_string != output_delimiter_default’
+ instead of ‘output_delimiter_specified’.
+ (cut_file): New arg CUT_STREAM. Caller changed.
+ (main): Simplify. Coalesce duplicate code. Redo to avoid need
+ for IF_LINT, or for the static var. No need to xstrdup optarg.
+
+ cut: simplify -fsanitize=leak pacification
+ * src/set-fields.c (reset_fields): Remove, as it’s not needed for
+ -fsanitize=leak even when ‘lint’ is defined. All uses removed.
+
+ cp: simplify GCC pacification
+ * src/cp.c (make_dir_parents_private): Remove IF_LINT code that is
+ no longer needed, as GCC has apparently gotten smarter since 2008.
+
+ chown: simplify -fsanitize=leak pacification
+ * src/chgrp.c, src/chown.c (main) [lint]: Omit unnecessary cleanup.
+ Use main_exit, not return.
+
+ basenc: simplify -fsanitize=leak pacification
+ * src/basenc.c (finish_and_exit): New function.
+ (do_encode, do_decode): Use it. Accept new INFILE arg. Remove
+ no-longer-needed IF_LINT code. Exit when done. Caller changed.
+
+ test: simplify gcc pacification
+ * src/test.c (get_mtime) [lint]: Omit ifdef lint code that is no
+ longer needed, as GCC has gotten smarter since 2005.
+
+ tail: simplify -fsanitize=leak pacification
+ Also, close a no-longer-needed file descriptor when falling
+ back from inotify.
+ * src/tail.c (tail_forever_inotify): Return void, not bool. Exit
+ on fatal error, or on successful completion. Accept an extra
+ argument pointing to a hash table that the caller should free on
+ non-fatal error; this simplifies cleanup. Don’t bother setting
+ errno when returning. Caller changed.
+ (main): Omit no-longer-needed IF_LINT code. Close inotify
+ descriptor if inotify fails; this fixes a file descriptor leak and
+ means we needn’t call inotify_rm_watch. Use main_exit, not return.
+
+ tac: simplify -fsanitize=leak pacification
+ * src/tac.c (main) [lint]: Omit unnecessary cleanup.
+ Use main_exit, not return.
+
+ shuf: simplify -fsanitize=leak pacification
+ * src/shuf.c (main) [lint]: Omit unnecessary cleanup.
+ Use main_exit, not return.
+
+ numfmt: simplify -fsanitize=leak pacification
+ * src/numfmt.c (main) [lint]: Omit unnecessary cleanup.
+ Use main_exit, not return.
+
+ mktemp: simplify -fsanitize=leak pacification
+ * src/mktemp.c (main) [lint]: Omit unnecessary cleanup.
+ Use main_exit, not return.
+
+ dd: simplify -fsanitize=leak pacification
+ * src/dd.c (cleanup) [lint]: Omit unnecessary cleanup.
+ (main): Use main_exit, not return.
+
+ cp: simplify cp/install/ln/mv pacification
+ * src/copy.c (dest_info_free, src_info_free) [lint]:
+ Remove. All uses removed.
+ (copy_internal): Pacify only Clang and Coverity; GCC doesn’t need it.
+ * src/cp-hash.c (forget_all) [lint]: Remove. All uses removed.
+ * src/cp.c, src/install.c, src/ln.c, src/mv.c (main):
+ Use main_exit, not return.
+
+ chmod: pacify -fsanitizer=leak
+ * src/chmod.c (main): Use main_exit, not return.
+
+ yes: pacify -fsanitizer=leak
+ * src/yes.c (main): Use main_exit, not return.
+
+ tsort: pacify -fsanitizer=leak
+ * src/tsort.c (detect_loop): Free removed successor.
+
+ sort: pacify -fsanitizer=leak
+ * src/sort.c (pipe_fork, keycompare, sort, main):
+ Remove lint code that no longer seems to be needed.
+ (sort): Unconditionally compile ifdef lint code that is needed
+ to free storage even when not linting.
+ (main): Use main_exit, not return.
+
+ split: pacify -fsanitizer=leak
+ * src/split.c (lines_rr): New arg FILESP. All uses changed.
+ (main): Use main_exit, not return. Omit unnecessary alignfree.
+
+ ptx: pacify -fsanitizer=leak
+ * src/ptx.c (unescape_string): Rename from copy_unescaped_string,
+ and unescape the string in place. Callers changed. This way,
+ we needn’t allocate storage and thus needn’t worry about
+ -fsanitizer=leak.
+
+ seq: pacify -fsanitizer=leak
+ * src/seq.c (seq_fast): If successful, exit rather than returning true.
+ Callers changed.
+ (main): Use main_exit, not return.
+
+ tsort: pacify -fsanitizer=leak
+ * src/tsort.c (struct item.balance): Now signed char to save space.
+ (struct item.printed): New member.
+ (new_item): Initialize k->printed to false. Simplify via xzalloc.
+ (scan_zeros): Use k->printed rather than nulling out string.
+ (tsort): Move exiting code here ...
+ (main): ... from here.
+ (tsort) [lint]: Omit no-longer-needed code. Instead, set head->printed.
+
+ tr: pacify -fsanitizer=leak
+ * src/tr.c (main): Use main_exit, not return.
+
+ stat: pacify -fsanitizer=leak
+ * src/stat.c (main): Use main_exit, not return.
+
+ comm: pacify -fsanitizer=leak
+ * src/comm.c (compare_files): Move exiting code here ...
+ (main): ... from here, to pacify gcc -fsanitize=leak.
+
+ expr: lint cleanup, and introducing main_exit
+ This introduces a new macro main_exit, which is useful
+ for pacifying gcc -fsanitizer=lint and in some cases
+ means we can remove some ‘IF_LINT’ and ‘ifdef lint’ code.
+ * src/expr.c (main): Use main_exit, not return.
+ (docolon): Omit an IF_LINT that GCC no longer needs.
+ * src/system.h (main_exit): New macro.
+
+2022-01-30 Pádraig Brady <P@draigBrady.com>
+
+ cksum: use more exact selection of digest algorithms
+ Use more constrained argument matching
+ to improve forward compatibility and robustness.
+
+ For example it's better that `cksum -a sha3` is _not_
+ equivalent to `cksum -a sha386`, so that a user
+ specifying `-a sha3` on an older cksum would not be surprised.
+
+ Also argmatch() is used when parsing tags from lines like:
+ SHA3 (filename) = abcedf....
+ so it's more robust that older cksum instances to fail
+ earlier in the parsing process, when parsing output from
+ possible future cksum implementations that might support SHA3.
+
+ * src/digest.c (algorithm_from_tag): Use argmatch_exact()
+ to ensure we don't match abbreviated algorithms.
+ (main): Likewise.
+ * tests/misc/cksum-a.sh: Add a test case.
+
+2022-01-30 Pádraig Brady <P@draigBrady.com>
+
+ build: update gnulib submodule to latest
+ To provide argmatch_exact() that does not
+ use abbreviated matching, to be used by cksum.
+
+2022-01-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ mv: when installing to dir use dir-relative names
+ When the destination for mv is a directory, use functions like openat
+ to access the destination files, when such functions are available.
+ This should be more efficient and should avoid some race conditions.
+ Likewise for 'install'.
+ * src/cp.c (must_be_working_directory, target_directory_operand)
+ (target_dirfd_valid): Move from here ...
+ * src/system.h: ... to here, so that install and mv can use them.
+ Make them inline so GCC doesn’t complain.
+ * src/install.c (lchown) [HAVE_LCHOWN]: Remove; no longer needed.
+ (need_copy, copy_file, change_attributes, change_timestamps)
+ (install_file_in_file, install_file_in_dir):
+ New args for directory-relative names. All uses changed.
+ Continue to pass full names as needed, for diagnostics and for
+ lower-level functions that do not support directory-relative names.
+ (install_file_in_dir): Update *TARGET_DIRFD as needed.
+ (main): Handle target-directory in the new, cp-like way.
+ * src/mv.c (remove_trailing_slashes): Remove static var; now local.
+ (do_move): New args for directory-relative names. All uses changed.
+ Continue to pass full names as needed, for diagnostics and for
+ lower-level functions that do not support directory-relative names.
+ (movefile): Remove; no longer needed.
+ (main): Handle target-directory in the new, cp-like way.
+ * tests/install/basic-1.sh:
+ * tests/mv/diag.sh: Adjust to match new diagnostic wording.
+
+ cp: fix comment typo
+
+2022-01-28 Pádraig Brady <P@draigBrady.com>
+
+ doc: NEWS: explain _why_ copy_file_range() is used
+ * NEWS: Mention why we're making the change in behavior in cat(1).
+
+ build: update gnulib submodule to latest
+ To fix a syntax-check false failure
+
+2022-01-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ dd: synchronize output after write errors
+ Problem reported by Sworddragon (Bug#51345).
+ * src/dd.c (cleanup): Synchronize output unless dd has been interrupted.
+ (synchronize_output): New function, split out from dd_copy.
+ Update conversions_mask so synchronization is done at most once.
+ (main): Do not die with the output file open, since we want to be
+ able to synchronize it before exiting. Synchronize output before
+ exiting.
+
+ dd: output final progress before syncing
+ Problem reported by Sworddragon (Bug#51482).
+ * src/dd.c (reported_w_bytes): New var.
+ (print_xfer_stats): Set it.
+ (dd_copy): Print a final progress report if useful before
+ synchronizing output data.
+
+2022-01-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ cat: prefer copy_file_range to read+write
+ * src/cat.c (copy_cat): New function.
+ (main): Use it.
+
+ csplit: improve integer overflow checking
+ * src/csplit.c: Prefer signed integers to unsigned for sizes
+ when either will do. Check for some unlikely overflows.
+ (INCR_SIZE): Remove; no longer used.
+ (free_buffer): Also free the arg, simplifying callers.
+ (get_new_buffer): Use xpalloc instead of computing new
+ size by hand. Add ATTRIBUTE_DEALLOC.
+ (delete_all_files, close_output_file):
+ If unlink fails with ENOENT, treat it as success.
+ (close_output_file): If unlink fails, decrement count anyway.
+ (parse_repeat_count, parse_patterns): Check for int overflow.
+ (check_format_conv_type): Use signed format.
+
+ maint: simplify memory alignment
+ Use the new Gnulib modules alignalloc and xalignalloc
+ to simplify some memory allocation.
+ Also, fix some unlikely integer overflow problems.
+ * bootstrap.conf (gnulib_modules): Add alignalloc, xalignalloc.
+ * src/cat.c, src/copy.c, src/dd.c, src/shred.c, src/split.c:
+ Include alignalloc.h.
+ * src/cat.c (main):
+ * src/copy.c (copy_reg):
+ * src/dd.c (alloc_ibuf, alloc_obuf):
+ * src/shred.c (dopass):
+ * src/split.c (main):
+ Use alignalloc/xalignalloc/alignfree instead of doing page
+ alignment by hand.
+ * src/cat.c (main):
+ Check for integer overflow in page size calculations.
+ * src/dd.c (INPUT_BLOCK_SLOP, OUTPUT_BLOCK_SLOP, MAX_BLOCKSIZE):
+ (real_ibuf, real_obuf) [lint]:
+ Remove; no longer needed.
+ (cleanup) [lint]:
+ (scanargs): Simplify.
+ * src/ioblksize.h (io_blksize): Do not allow blocksizes largest
+ than the largest power of two that fits in idx_t and size_t.
+ * src/shred.c (PAGE_ALIGN_SLOP, PATTERNBUF_SIZE): Remove.
+
+ build: update gnulib submodule to latest
+
+ copy: remove unnecessary ‘free’
+ * src/copy.c (copy_reg): Remove a ‘free’ call that does nothing
+ because its argument is always a null pointer, starting with
+ 2007-11-1608:31:15Z!jim@meyering.net.
+
+ dd: simplify conv=swab code
+ Simplify byte-swapping, so that the code no longer needs to
+ allocate a page before the input buffer.
+ * src/dd.c (SWAB_ALIGN_OFFSET, char_is_saved, saved_char): Remove.
+ All uses removed.
+ (INPUT_BLOCK_SLOP): Simplify to just page_size.
+ (alloc_ibuf, dd_copy): Adjust to new swab_buffer API.
+ (swab_buffer): New arg SAVED_BYTE, taking the place of the old
+ global variables. Do not access BUF[-1].
+
+ dd: improve integer overflow checking
+ * src/dd.c: Prefer signed to unsigned types where either will do,
+ as this helps improve checking with gcc -fsanitize=undefined.
+ Limit the signed types to their intended ranges.
+ (MAX_BLOCKSIZE): Don’t exceed IDX_MAX - slop either.
+ (input_offset_overflow): Remove; overflow now denoted by negative.
+ (parse_integer): Return INTMAX_MAX on overflow, instead of unspecified.
+ Do not falsely report overflow for ‘00x99999999999999999999999999999’.
+ * tests/dd/misc.sh: New test for 00xBIG.
+ * tests/dd/skip-seek-past-file.sh: Adjust to new diagnostic wording.
+ New test for BIGxBIG.
+
+ shred: fix declaration typo
+ * gl/lib/randint.h (randint_all_new):
+ Do not declare with _GL_ATTRIBUTE_NONNULL (), as
+ the arg can be a null pointer. This fixes a typo added in
+ 2021-11-01T05:30:28Z!eggert@cs.ucla.edu.
+
+ cat: prefer signed to unsigned
+ * src/cat.c: Prefer signed to unsigned types
+ where either will do, as they allow for better
+ overflow checking at runtime.
+
+ cat: improve style
+ * cat.c: Improve style a bit, mostly by assuming C99-style
+ declarations after statements
+
+2022-01-27 Pádraig Brady <P@draigBrady.com>
+
+ doc: csplit: clarify [OFFSET] syntax
+ * src/csplit.c (usage): Clarify that '+' prefix is optional on OFFSET.
+ * doc/coreutils.texi (csplit invocation): Likewise.
+ Fixes https://bugs.gnu.org/53574
+
+2022-01-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: allow readlinkat calls
+ Problem reported by Bernhard Voelker in:
+ https://lists.gnu.org/r/coreutils/2022-01/msg00026.html
+ * cfg.mk (sc_prohibit_readlink): Remove. It’s OK to call
+ readlinkat to determine whether a file is a symbolic link.
+
+ cp: rely on Gnulib for copy_file_range workaround
+ Gnulib now replaces copy_file_range on buggy hosts
+ so there is no need for Coreutils to worry about the bug.
+ * src/copy.c: Do not include sys/utsname.h, xstrtol.h.
+ (functional_copy_file_range): Remove. All uses now
+ simply call copy_file_range.
+
+ build: update gnulib submodule to latest
+
+2022-01-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: fix pluralization typo
+
+ cp: fix two typos in previous change
+ Somehow ‘make check’ didn’t catch these the first few times.
+ * src/copy.c (copy_dir): Don’t pass null pointer to
+ copy_internal where it now expects non-null if move mode.
+ * src/cp.c (make_dir_parents_private): Initialize *attr_list
+ before recentely-added quick return.
+
+ cp: omit unnecessary stat of destination
+ 'cp A B' attempts to open B as a directory, to see whether to
+ write to B/A instead of to B. In the common case where the
+ open fails with ENOENT, do not bother to stat B afterwards
+ since the stat should also fail with ENOENT.
+ * src/copy.c (copy_internal, copy): Change bool arg about
+ nonexistent destination to a 3-way int argument. All callers changed.
+ (copy_internal): Do not bother to stat a destination already known
+ to not exist when following symlinks.
+
+2022-01-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+
+ cp: when copying to dir use dir-relative names
+ When copying to a directory, use functions like openat to access
+ the destination files, when such functions are available. This
+ should be more efficient and should avoid some race conditions.
+ * bootstrap.conf (gnulib_modules): Add areadlinkat-with-size,
+ fchmodat, fchownat, mkdirat, mkfifoat, utimensat.
+ * src/copy.c (lchown) [!HAVE_LCHOWN]:
+ * src/copy.c, src/system.h (rpl_mkfifo, mkfifo) [!HAVE_MKFIFO]:
+ Remove. All uses removed.
+ (utimens_symlink): Remove; we shouldn’t have to worry about
+ those obsolete systems any more. All uses replaced by utimensat.
+ * src/copy.c (copy_dir, set_owner, fchmod_or_lchmod, copy_reg)
+ (same_file_ok, writable_destination, overwrite_ok, abandon_move)
+ (create_hard_link, src_is_dst_backup, copy_internal, copy):
+ * src/cp.c (make_dir_parents_private, re_protect):
+ New args for directory-relative names. All uses changed.
+ Continue to pass full names as needed, for diagnostics and for
+ lower-level functions like qset_acl that do not support
+ directory-relative names.
+ * src/copy.c (copy_reg): Prefer readlinkat to lstatat for merely
+ checking whether a file is a symlink, to avoid EOVERFLOW issues.
+ (subst_suffix): New function.
+ (create_hard_link): Accept a null SRC_NAME as meaning that if it
+ is needed it needs to be constructed from SRC_RELNAME, DST_NAME,
+ and DST_RELNAME.
+ (source_is_dst_backup): Use subst_suffix instead of doing it by hand.
+ (copy_internal): Remember and use directory-relative names instead
+ of full names.
+ * src/cp.c (lchown) [!HAVE_LCHOWN]: Remove. All uses removed.
+ (must_be_working_directory): New function.
+ (target_directory_operand): Simply take file name as arg,
+ and return a file descriptor or negative number on failure;
+ open with O_DIRECTORY to obtain any file descriptor.
+ All uses changed.
+ (target_dirfd_valid): New function.
+ (do_copy): Use these new functions to obtain a file descriptor
+ for any target directory, and use directory-relative names
+ for that directory.
+ (main): Omit no-longer-needed stat when --target-directory,
+ as do_copy now does this.
+ * src/ln.c (O_PATHSEARCH): Move from here ...
+ * src/system.h: ... to here.
+ * tests/cp/fail-perm.sh: Adjust to change in diagnostic wording,
+ and add a test for --no-target-directory.
+
+ cp: tweak internal name
+ * src/cp.c (do_copy): Omit confusingly-named local new_dest, since
+ there’s another var new_dst that means something quite different.
+
+2022-01-12 Daniel Knittl-Frank <knittl89@googlemail.com>
+
+ scripts: fix typo in commit-msg git-hook script
+ Commit 2f438fa9f53250fb3c8b39a95eedd627b5569ca4 (basenc: A new program
+ complementary to base64/base32) introduced a typo in the list of allowed
+ commit message prefixes, accidentally changing "basename" to
+ "nbasename". Revert it back to the correct "basename".
+
+2022-01-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ df: tiny simplification
+ * src/df.c (LOG_EQ): Remove. All callers replaced by ==.
+
+2022-01-02 Pádraig Brady <P@draigBrady.com>
+
+ maint: update all copyright year number ranges
+ Run "make update-copyright" and then...
+
+ * gnulib: Update to latest with copyright year adjusted.
+ * tests/init.sh: Sync with gnulib to pick up copyright year.
+ * bootstrap: Likewise.
+ * tests/sample-test: Adjust to use the single most recent year.
+
+2022-01-02 Pádraig Brady <P@draigBrady.com>
+
+ build: update gnulib submodule to latest
+ mainly to get updated copyright year
+
+ * doc/fdl.texi: Sync from gnulib.
+ * .gitignore: Add lib/unictype, as bitmap.h therein is depended on
+ since gnulib commit f698ea71
+
+2021-12-31 Paul Eggert <eggert@cs.ucla.edu>
+
+ date: new option --resolution
+ * NEWS, doc/coreutils.texi (Options for date): Mention this.
+ * src/date.c (RESOLUTION_OPTION): New constant.
+ (DEBUG_DATE_PARSING_OPTION): Rename from DEBUG_DATE_PARSING.
+ All uses changed.
+ (long_options, usage, main): Support --resolution.
+
+ date: %-N now means suppress extra digits
+ * NEWS, doc/coreutils.texi: Mention this.
+ * bootstrap.conf (gnulib_modules): Add gettime-res.
+ * src/date.c (res_width, adjust_resolution): New functions.
+ (main): Adjust %-N to be %9N, or whatever, before using it.
+
+ build: update gnulib submodule to latest
+
+ doc: Document , vs . in date --rfc-3339=ns
+
+ build: port to AIX 7.1
+ This fixes a porting bug introduced in
+ 2019-08-12T03:29:00Z!bruno@clisp.org.
+ Problem discovered on AIX 7.1.
+ * src/local.mk (LDADD): Add $(LIB_MBRTOWC), since pretty much
+ every command uses quotearg or mbrtowc or whatever.
+ (src_sort_LDADD): Add $(LIBPMULTITHREAD) and
+ $(LIB_PTHREAD_SIGMASK) instead of $(LIBTHREAD).
+
+2021-12-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: be more careful about Perl
+ Problem reported by Serge Belyshev (Bug#52844).
+ * configure.ac (HAVE_PERL): Rely on latest Gnulib gl_PERL, which
+ sets gl_cv_prog_perl.
+
+ build: update gnulib submodule to latest
+
+2021-12-27 Max Filippov <jcmvbkbc@gmail.com>
+
+ all: fix adjustment of /proc/$pid/cmdline by single binary
+ When configured with --enable-single-binary tools issue incorrect prctl:
+
+ prctl(PR_SET_KEEPCAPS, ...) = -1 EINVAL (Invalid argument)
+
+ PR_SET_MM_ARG_START is not a prctl 'option' parameter, it's 'arg2'
+ parameter for the option PR_SET_MM. It also has to have 'arg4' and
+ 'arg5' set to 0 explicitly, otherwise the kernel also returns -EINVAL.
+
+ * src/coreutils.c (launch_program): Fix prctl arguments.
+ * NEWS: Mention the improvement.
+ Fixes https://bugs.gnu.org/52800
+
+2021-12-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ ls: improve doc for =WHEN
+ * src/ls.c (usage): Improve clarity of =WHEN args (Bug#52782).
+
+ doc: colorize -> color
+ Living so close to Hollywood I know that "colorize"
+ means adding color to something that was already monochrome,
+ whereas "color" means to give color to something.
+ Coreutils apps color text instead of colorizing it.
+
+2021-12-20 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: update tests/init.sh from gnulib
+ * tests/init.sh: Sync from gnulib/tests/init.sh.
+ A recent gnulib update (4f497bf3c) missed this.
+
+2021-12-20 Jim Meyering <meyering@fb.com>
+
+ maint: syntax-check requires "char const *", not "const char *"
+ * gl/lib/mbsalign.c (mbs_align_pad): Adjust.
+ * src/chroot.c (is_root): Adjust.
+ * src/digest.c (main): Adjust.
+ * src/relpath.c (buffer_or_output) Adjust.
+ * src/ls.c (print_name_with_quoting, get_color_indicator): Adjust.
+
+ maint: split a long line
+ * src/test.c (three_arguments): Split long line.
+
+ maint: commit-msg: compute UTF-8-aware line-length
+ * scripts/git-hooks/commit-msg: Count UTF-8 characters rather
+ than bytes to avoid erroneously rejecting as "longer than 72" a
+ log message line like the UTF-8 one for id.c just prior. It has
+ 77 bytes but only 67 characters.
+ (check_msg): Read in "utf8" mode. Also include actual length
+ in the diagnostic.
+ (main): Don't loop when stdout is redirected, as it is when
+ invoked via vc-dwim.
+ Paul Eggert reported privately both the error of counting bytes
+ rather than chars and the re_edit loop when failing via vc-dwim.
+
+2021-12-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ id: improve doc for when USER is omitted
+ * src/id.c (usage): “current user” → “current process” (Bug#52656).
+
+2021-12-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: use GNU style for spacing
+
+2021-12-16 Bruno Haible <bruno@clisp.org>
+
+ build: non-recursive Automake in a less hacky way
+ * bootstrap.conf (gnulib_modules): Remove
+ non-recursive-gnulib-prefix-hack.
+ (gnulib_tool_option_extras): Add --automake-subdir.
+ (bootstrap_post_import_hook): No need to massage lib/gnulib.mk.
+
+2021-12-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update bootstrap to latest
+
+ build: update gnulib submodule to latest
+
+2021-12-15 Jim Meyering <meyering@fb.com>
+
+ maint: factor.c: avoid new GCC 12 warning
+ * src/factor.c (millerrabin2): Mark as ATTRIBUTE_PURE,
+ per advice from GCC 12.
+
+2021-12-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+ * NEWS: Mention the bugfix.
+
+2021-12-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ mv: Bug#52410 fix
+ The recent Gnulib update fixed this bug reported by Vincent Vermilya.
+ * tests/mv/backup-dir.sh: Test for Bug#52410.
+
+ build: update gnulib submodule to latest
+
+2021-12-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ uname: port to recent macOS
+ Problem reported by Jakub Sokołowski (bug #52330).
+ * src/uname.c [__APPLE__]: Don’t include sys/syctl.h,
+ mach/machine.h, mach-o/arch.h.
+ (print_element_env): New function. With __APPLE__, it defers to the
+ env var UNAME_MACHINE (if given) for uname -m, and similarly for -nrsv.
+ (main): Use it. For -p with __APPLE__, rely on predefined macros
+ and omit any 64-bit indication, for compatibility with macOS uname.
+
+2021-11-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ cp: clone on macOS
+ * configure.ac: Check for fclonefileat.
+ * src/copy.c [HAVE_FCLONEFILEAT && !USE_XATTR]:
+ Include <sys/clonefile.h>.
+ (copy_reg): If possible, use fclonefileat to clone.
+
+2021-11-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ cp: streamline cloning by skipping fstat
+ * src/copy.c (copy_reg): Attempt clone_file before fstat of dest,
+ so that if clone_file succeeds we can skip the fstat.
+
+2021-11-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ cp: fix --preserve=ownership permissions bug
+ This fixes a bug that I introduced in
+ 2006-12-06T19:44:08Z!eggert@cs.ucla.edu.
+ * src/copy.c (USE_XATTR): New macro.
+ (copy_reg): Use it to help the compiler. Prefer open u+w to a
+ later chmod u=rw; u+r isn’t needed for xattr. For the later u-r,
+ do only one (or zero) chmod calls instead of two (or one).
+ In the last chmod, respect the umask instead of ignoring it.
+ * tests/cp/preserve-mode.sh: Test for the bug.
+
+2021-11-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: prefer MAYBE_UNUSED
+ Prefer MAYBE_UNUSED to _GL_UNUSED, since the C2x syntax
+ will be [[maybe_unused]] at the start of the declaration,
+ and we want to look forward to that. All uses of _GL_UNUSED
+ either changed to MAYBE_UNUSED, or (when not needed) removed.
+
+2021-11-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ cp: fix security context race
+ This fixes an issue introduced in the fix for Bug#11100.
+ * NEWS: Mention this.
+ * src/copy.c (copy_reg): Fix obscure bug where open-without-CREAT
+ failed with ENOENT and we forget to call set_process_security_ctx
+ before calling open-with-CREAT. Also, don’t bother to unlink
+ DST_NAME if open failed with ENOENT; and if unlink fails with
+ ENOENT, don’t consider that to be an error (someone else could
+ have removed the file for us, and that’s OK). Also, don’t worry
+ about move mode, since we use O_EXCL|O_CREAT and so won’t open
+ an existing file.
+
+2021-11-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: update NEWS for macOS fix
+
+ cp: minor clarity tweak
+ * src/copy.c (copy_reg): Use cached data_copy_required.
+
+ cp: fix ptrdiff_t/ssize_t theoretical glitches
+ * src/copy.c (sparse_copy): Use system.h’s SSIZE_MAX.
+ Don’t assume SSIZE_MAX <= PTRDIFF_MAX.
+
+2021-11-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+
+ maint: fix nonnull decl
+ * gl/lib/randread.h (randread_new): Do not mark with
+ _GL_ATTRIBUTE_RETURNS_NONNULL, since it can return NULL.
+
+2021-11-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+
+2021-11-13 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid false failure in env-signal-handler.sh
+ * tests/misc/env-signal-handler.sh: Use retry_delay_ to
+ avoid a false failure under load, where env hasn't setup
+ the SIGINT handling before timeout(1) sends the SIGINT.
+ Fixes https://bugs.gnu.org/51793
+
+2021-11-01 Pádraig Brady <P@draigBrady.com>
+
+ maint: fix recent syntax-check failures
+ * cfg.mk (exclude_file_name_regexp--sc_system_h_headers):
+ Add chown-core.h to the regexp, to better decouple from system.h.
+ * src/env.c: Remove minmax.h include already included in system.h.
+ * src/libstdbuf.c: Likewise.
+ * src/prog-fprintf.h: Remove doubled semicolon.
+
+2021-11-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: use minmax.h instead of rolling our own
+ * gl/lib/mbsalign.c, gl/lib/randread.c, src/system.h (MAX, MIN):
+ Remove; include minmax.h instead.
+ * gl/modules/mbsalign, gl/modules/randread (Depends-on): Add minmax.
+ * src/factor.c (MIN): Remove.
+
+ maint: add function attributes to .h files
+ Add _GL_ATTRIBUTE_NONNULL, _GL_ATTRIBUTE_MALLOC,
+ _GL_ATTRIBUTE_DEALLOC, _GL_ATTRIBUTE_DALLOC_FREE,
+ _GL_ATTRIBUTE_RETURNS_NONNULL to .h files when appropriate.
+ * gl/lib/mbsalign.h, gl/lib/randperm.h, src/chown-core.h:
+ Include stdlib.h, for the benefit of _GL_ATTRIBUTE_DALLOC_FREE.
+ * gl/lib/randread.c (randread_free_body): New static function.
+ (randread_new, randread_free): Use it.
+ * src/copy.c (valid_options): Remove assert that is no longer
+ needed because it is now checked statically.
+
+ maint: enable -Wsuggest-attribute=format
+ * configure.ac (WERROR_CFLAGS): Enable -Wsuggest-attribute=format
+ for lib/ and src/.
+ * src/copy.c (copy_attr_error, copy_attr_allerror):
+ Add ATTRIBUTE_FORMAT.
+ (copy_attr): Ignore -Wsuggest-attribute=format in the
+ small section of code that needs it ignored.
+ * src/test.c (test_syntax_error): Mark with ATTRIBUTE_FORMAT.
+ (binary_operator): Omit unnecessary NULL args, pacifying
+ -Wsuggest-attribute=format.
+
+ maint: modernize attribute usage
+ * src/system.h (__attribute__): Remove. Replace all uses that
+ rely on this by _GL_ATTRIBUTE_xxx or ATTRIBUTE_xxx.
+ (ATTRIBUTE_WARN_UNUSED_RESULT): Remove. Replace all uses by
+ NODISCARD.
+
+ maint: remove unused __attribute__ defn
+ * gl/lib/randread.c (__attribute__): Remove; no longer
+ used after the recent _Noreturn change.
+
+ b2sum: simplify attribute usage
+ * src/blake2/blake2.h (BLAKE2_PACKED): Simplify, and port better
+ to older GCC, by using _GL_ATTRIBUTE_PACKED.
+
+ maint: prefer attribute.h in .c files
+ This will help us make the transition to C2x, where some
+ attributes must come at the start of function decls.
+ Leave the attributes alone in .h files for now,
+ as the Gnulib tradition is to not expose attribute.h to users.
+ * bootstrap.conf (gnulib_modules): Add ‘attribute’.
+ * gl/lib/randperm.c, src/make-prime-list.c, src/system.h:
+ Include attribute.h.
+ * gl/lib/strnumcmp.c (strnumcmp): Remove _GL_ATTRIBUTE_PURE here,
+ as this belongs in the .h file.
+ * gl/lib/strnumcmp.h (strnumcmp): Add _GL_ATTRIBUTE_PURE here.
+ * src/sort.c (human_numcompare, numcompare): Now ATTRIBUTE_PURE;
+ discovered due to strnumcmp.h change.
+ * gl/lib/randperm.c, src/copy.c, src/dd.c, src/df.c, src/digest.c:
+ * src/env.c, src/expr.c, src/factor.c, src/ls.c:
+ * src/make-prime-list.c, src/numfmt.c, src/od.c, src/pathchk.c:
+ * src/pinky.c, src/pr.c, src/ptx.c, src/realpath.c, src/relpath.c:
+ * src/seq.c, src/sort.c, src/stat.c, src/stty.c, src/system.h:
+ * src/tr.c, src/uniq.c, src/wc.c:
+ In .c files, crefer ATTRIBUTE_CONST to _GL_ATTRIBUTE_CONST, and
+ similarly for ATTRIBUTE_FORMAT and ATTRIBUTE_PURE.
+ * src/system.h (FALLTHROUGH): Remove; attribute.h defines it.
+
+2021-10-31 Pádraig Brady <P@draigBrady.com>
+
+ sort: --debug: add warnings about sign, radix, and grouping chars
+ New warnings are added related to the handling
+ of thousands grouping characters, decimal points, and sign characters.
+ Examples now diagnosed are:
+
+ $ printf '0,9\n1,a\n' | sort -nk1 --debug -t, -s
+ sort: key 1 is numeric and spans multiple fields
+ sort: field separator ‘,’ is treated as a group separator in numbers
+ 1,a
+ _
+ 0,9
+ ___
+
+ $ printf '1,a\n0,9\n' | LC_ALL=fr_FR.utf8 sort -gk1 --debug -t, -s
+ sort: key 1 is numeric and spans multiple fields
+ sort: field separator ‘,’ is treated as a decimal point in numbers
+ 0,9
+ ___
+ 1,a
+ __
+
+ $ printf '1.0\n0.9\n' | LC_ALL=fr_FR.utf8 sort -s -k1,1g --debug
+ sort: note numbers use ‘,’ as a decimal point in this locale
+ 0.9
+ _
+ 1.0
+ _
+
+ $ LC_ALL=fr_FR.utf8 sort -n --debug /dev/null
+ sort: text ordering performed using ‘fr_FR.utf8’ sorting rules
+ sort: note numbers use ‘,’ as a decimal point in this locale
+ sort: the multi-byte number group separator in this locale \
+ is not supported
+
+ $ sort --debug -t- -k1n /dev/null
+ sort: key 1 is numeric and spans multiple fields
+ sort: field separator ‘-’ is treated as a minus sign in numbers
+ sort: note numbers use ‘.’ as a decimal point in this locale
+
+ $ sort --debug -t+ -k1g /dev/null
+ sort: key 1 is numeric and spans multiple fields
+ sort: field separator ‘+’ is treated as a plus sign in numbers
+ sort: note numbers use ‘.’ as a decimal point in this locale
+
+ * src/sort.c (key_warnings): Add the warnings above.
+ * tests/misc/sort-debug-warn.sh: Add test cases.
+ Also check that all sort invocations succeed.
+ * NEWS: Mention the improvement.
+ Addresses https://bugs.gnu.org/51011
+
+2021-10-31 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: modernize README-{hacking,prereq}
+
+2021-10-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ cp: revert unnecessary FreeBSD workaround
+ That was a false alarm due to a bug in FreeBSD 9.1 truss;
+ see Pádraig Brady’s report (Bug#51433#29).
+ * src/copy.c (lseek_copy, infer_scantype): Don’t bother checking
+ whether lseek returned -1. This doesn’t entirely revert the
+ previous change, as it keeps the code simplification of the
+ previous change while reverting the check for -1.
+
+ cp: defend better against FreeBSD 9.1 zfs bug
+ Problem reported by Pádraig Brady (Bug#51433#14).
+ * src/copy.c (lseek_copy, infer_scantype): Report an error if
+ lseek with SEEK_DATA or SEEK_HOLE returns less than -1,
+ as this is an lseek bug.
+
+2021-10-22 Pádraig Brady <P@draigBrady.com>
+
+ doc: say that printf(1) is preferred over echo(1)
+ * src/echo.c (usage): Say printf(1) is preferred
+ due to being more standard and robust.
+ * man/echo.x [SEE ALSO]: Reference printf(1).
+ * doc/coreutils.texi (echo invocation): Mention in the
+ summary that echo is not robust when outputting
+ any string, and that printf is preferred.
+ Also expand on the examples showing how to
+ output a single '-n' string.
+ Addresses https://bugs.gnu.org/51311
+
+2021-10-12 Pádraig Brady <P@draigBrady.com>
+
+ doc: timeout --kill-after: clarify disabled timeouts
+ * doc/coreutils.texi (timeout invocation): Clarify
+ that -k is ignored if either its duration or the
+ main timeout duration is 0.
+ Addresses https://bugs.gnu.org/51128
+
+ timeout: ensure --foreground -k exits with status 137
+ * src/timeout.c (main): Propagate the killed status from the child.
+ * doc/coreutils.texi (timeout invocation): Remove the
+ description of the --foreground specific handling of SIGKILL,
+ now that it's consistent with the default mode of operation.
+ * tests/misc/timeout.sh: Add a test case.
+ * NEWS: Mention the change in behavior.
+ Fixes https://bugs.gnu.org/51135
+
+2021-10-11 Pádraig Brady <P@draigBrady.com>
+
+ doc: timeout --foreground: add clarification on exit status
+ * doc/coreutils.texi (timeout invocation): Add detail on
+ how --foreground allows timeout(1) to use more standard
+ exit status as the uncatchable SIGKILL is not sent to itself.
+ Fixes https://bugs.gnu.org/51135
+
+2021-10-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ sort: fix unlikely bug when '\377' < 0
+ * gl/lib/strintcmp.c (strintcmp): Don’t assume that the input
+ cannot contain ((char) -1), as this equals '\377' when char is
+ signed (assuming 8-bit char).
+ * src/sort.c (decimal_point): Now char, to make it clear
+ that it’s always in char range now.
+ (NON_CHAR): New constant.
+ (traverse_raw_number): Return char not unsigned char;
+ this is simpler and could be faster. All callers changed.
+ (main): Do not convert decimal_point and thousands_sep to
+ unsigned char, as this can mishandle comparisons on
+ machines where char is signed and the input data contains
+ ((char) -1). Use NON_CHAR, not -1, as an out-of-range value for
+ thousands_sep.
+
+2021-10-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+
+ maint: switch to C11-style _Noreturn
+ Use C11-style _Noreturn instead of the old ATTRIBUTE_NORETURN
+ macro. This pacifies clang on OpenBSD 6.9, which otherwise
+ complains "'noreturn' function does return" in some places.
+ * gl/lib/randread.c, src/system.h (ATTRIBUTE_NORETURN):
+ Remove. All uses either removed as GCC no longer needs them, or
+ changed to C11-style _Noreturn since Gnulib arranges for _Noreturn
+ globally nowadays.
+
+ ls: port to OpenBSD
+ Problem reported by Brian Callahan (Bug#50972).
+ * src/ls.c (decode_switches): Don’t assume __GNUC_PREREQ.
+
+2021-09-26 Pádraig Brady <P@draigBrady.com>
+
+ doc: adjust ls --zero option order in texinfo
+ * doc/coreutils.texi (ls invocation - general output formatting):
+ The option ordering was not changed when the option was renamed
+ from --null to --zero.
+
+2021-09-25 Pádraig Brady <P@draigBrady.com>
+
+ tests: cp/sparse-perf: make more robust and add zfs comments
+ * init.cfg (seek_data_capable_): Add a timeout to ensure failure for
+ slow lseek(...SEEK_DATA) calls (even if that syscall isn't interrupted).
+ * tests/cp/sparse-perf.sh: Run the SEEK_DATA check on the
+ 1TiB empty file to exclude both FreeBSD 9.1 which takes 35s,
+ and ZFS which requires a delay of about 5s between file creation
+ and use of SEEK_DATA to correctly determine it's empty (return ENXIO).
+ Also remove the stat size checks as they invalidate the test
+ due to cp never writing data due to it being always zeros,
+ and thus converted to holes in the output.
+
+2021-09-24 Pádraig Brady <P@draigBrady.com>
+
+ chmod: fix exit status when ignoring symlinks
+ * src/chmod.c: Reorder enum so CH_NOT_APPLIED
+ can be treated as a non error.
+ * tests/chmod/ignore-symlink.sh: A new test.
+ * tests/local.mk: Reference the new test.
+ * NEWS: Mention the bug fix.
+ Fixes https://bugs.gnu.org/50784
+
+ maint: post-release administrivia
+ * NEWS: Add header line for next release.
+ * .prev-version: Record previous version.
+ * cfg.mk (old_NEWS_hash): Auto-update.
+
+ version 9.0
+ * NEWS: Record release date.
+
+ tests: sparse-perf: avoid false failure
+ * tests/cp/sparse-perf.sh: Avoid the case where
+ we saw SEEK_DATA take 35s to return a result
+ against a 1TB sparse file. This happened on
+ a FreeBSD 9.1 VM at least.
+ Reported by Nelson H. F. Beebe.
+
+ cksum: fix -a crc on 64 bit big endian systems
+ * src/cksum.c (crc_sum_stream): On sparc64 for example,
+ a crc of 0 was printed due to mismatch in size of
+ variable copied between generator and output functions.
+ uint_fast32_t is generally 64 bits on 64 bit systems,
+ so we copy through an int to ensure we don't use the wrong
+ end of a 64 bit variable.
+ Reported by Nelson H. F. Beebe
+
+2021-09-21 Pádraig Brady <P@draigBrady.com>
+
+ tail: fix detection of closed stdout on macOS
+ * bootstrap.conf: We only need poll on Linux and AIX
+ where poll is not replaced. Also resinstate dependence
+ on select so we can use it unconditionally.
+ * src/tail.c (check_output_alive): Reinstate use of select()
+ by default as poll was seen to be ineffective for this
+ application on macOS.
+ Fixes https://bugs.gnu.org/50714
+
+ maint: clean up c++ style comments
+ * src/expand-common.h: Remove commented variables.
+ * src/remove.h: Change to C style comment.
+ * src/tail.c: Likewise.
+
+2021-09-20 Pádraig Brady <P@draigBrady.com>
+
+ tests: date-debug: avoid a false failure on solaris
+ * tests/misc/date-debug.sh: Use a dynamic time format,
+ as the C locale on solaris uses %T rather than %H:%M:%S
+ for the time component.
+
+2021-09-20 Jim Meyering <meyering@fb.com>
+
+ doc: drop extraneous single quotes in help
+ * src/digest.c (usage) [cksum --help]: Drop single quotes
+ around each checksum name.
+ * src/tee.c (usage) [tee --help]: Likewise.
+
+ cksum: list Pádraig as coauthor
+ * src/digest.c (AUTHORS) [HASH_ALGO_CKSUM]: Add Pádraig as
+ cksum coauthor.
+ * AUTHORS: Likewise.
+
+ tests: env-s.pl: avoid spurious failure on OS X
+ * tests/misc/env-S.pl: The __CF_USER_TEXT_ENCODING envvar
+ would cause many of these sub-tests to fail. Ignore it.
+
+2021-09-20 Pádraig Brady <P@draigBrady.com>
+
+ build: update gnulib submodule to latest
+ * gnulib: Update to latest.
+ Fixes "extern inline" and "rpl_free" issues.
+
+ doc: fix --help formatting for checksum utils
+ * src/digest.c (usage): Indicate that --length and --algorithm
+ require arguments. Emit corresponding emit_mandatory_arg_note().
+ Use consistent alignment.
+
+ cksum: support more transparent emulation of older utils
+ * src/digest.c: Allow using the --untagged option with --check,
+ so that `cksum -a md5 --untagged` used to emulate md5sum for example,
+ may be augmented with the --check option. Also support the --tag
+ option with cksum, to allow overriding a previous --untagged setting.
+ * doc/coreutils.texi: Adjust accordingly.
+ * tests/misc/cksum-a.sh: Likewise.
+
+ tests: avoid rare race in tail-2/F-vs-rename.sh
+ * tests/tail-2/F-vs-rename.sh: Keep stdout and stderr separate,
+ so that interspersion doesn't impact regex checks. Also wait
+ for each file's data to be printed to avoid multiple writes
+ to a file to be printed in a single iteration, which would
+ impact the regex checks. Also we refactor the check function,
+ rather than repeatedly redefining variations.
+
+2021-09-17 Pádraig Brady <P@draigBrady.com>
+
+ maint: remove duplicate from THANKS.in
+ * THANKS.in: Now that Tianjia Zhang has a commit in the repo.
+
+2021-09-17 Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
+
+ tests: fix typo in cksum-a.sh
+ * tests/misc/cksum-a.sh: fix typo md5um to md5sum.
+
+2021-09-17 Pádraig Brady <P@draigBrady.com>
+
+ tests: fix rare false failure in tail-2/F-vs-rename
+ This is wrong fix really, as only introducing delay I think.
+
+ * tests/tail-2/F-vs-rename.sh: Avoid a rare false failure
+ due to a race in the test. Now wait until tail has noticed
+ that b is replaced before writing to a, so that the subsequent
+ write of "y" to b will be displayed independently from
+ current contents of b ("x").
+
+2021-09-17 Pádraig Brady <P@draigBrady.com>
+
+ tests: port removed-directory test to FreeBSD
+ * tests/ls/removed-directory.sh: On FreeBSD 9.1 at least,
+ one gets ENOENT when trying to traverse the current removed dir
+ with ../, so instead reference the parent dir directly.
+
+2021-09-16 Pádraig Brady <P@draigBrady.com>
+
+ rmdir: fix uninitialized memory causing incorrect error
+ * src/rmdir.c (main): Only inspect the returned stat structure,
+ when stat(2) returns success.
+
+2021-09-16 Jim Meyering <meyering@fb.com>
+
+ build: avoid new chmod.c warnings from upcoming GCC12
+ Here are the warnings:
+ src/chmod.c:175:3: error: 'ch.new_mode' may be used uninitialized in\
+ this function [-Werror=maybe-uninitialized]
+ 175 | strmode (ch->new_mode, perms);
+ src/chmod.c:178:3: error: 'ch.old_mode' may be used uninitialized in\
+ this function [-Werror=maybe-uninitialized]
+ 178 | strmode (ch->old_mode, old_perms);
+
+ * src/chmod.c (process_file): Initialize ch. Its new_mode and
+ old_mode fields could indeed be used uninitialized to form mode
+ strings, but those are used only when built from initialized members.
+
+2021-09-16 Pádraig Brady <P@draigBrady.com>
+
+ digest: ignore empty lines when checking
+ * src/digest.c (digest_check): Treat empty lines like comments,
+ as commented checksum files very often have empty lines.
+ * tests/misc/md5sum.pl: Adjust accordingly.
+
+ factor: sync longlong.h adjustments from upstream
+ * src/longlong.h: Sync changes from:
+ https://gmplib.org/repo/gmp/log/tip/longlong.h
+
+ stat,tail: add support for the secretmem file system
+ * src/stat.c (human_fstype): Add case for the 'secretmem'
+ file system type.
+ * NEWS: Mention the Improvement.
+
+ maint: sync help2man to latest version
+ * man/help2man: sync to changes from version 1.48.5.
+ Note this doesn't materially change the generated man pages.
+
+ doc: remove older ChangeLog items
+ * Makefile.am: Update the oldest documented version
+ to 8.25 which is now about 5 years old.
+
+ tests: ensure returns_ check failures are propagated
+ * tests/misc/cksum-a.sh: Set fail=1 if returns_ check fails.
+ * tests/misc/sync.sh: Likewise.
+ * tests/misc/yes.sh: Likewise.
+
+ cksum: fix --check with non tagged format checksums
+ * src/digest.c: Always set the digest_length, so that
+ we check the correct number of hex digits when parsing
+ non tagged format checksums.
+ * tests/misc/cksum-a.sh: Add a test case. Also fix
+ up this test which was ineffective due to fail=1
+ being set in a subshell and ignored.
+
+2021-09-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ cksum: fix off-by-1 bug with \r stripping
+ Problem reported by Jim Meyering (Bug#50611).
+ * src/digest.c (digest_check): When stripping trailing \r,
+ avoid subscript error before start of line.
+
+2021-09-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: prefer rawmemchr to memchr when easy
+ * bootstrap.conf (gnulib_modules): Add rawmemchr.
+ * src/csplit.c: Include idx.h.
+ * src/csplit.c (record_line_starts):
+ * src/head.c (elide_tail_lines_pipe):
+ * src/shuf.c (next_line):
+ * src/split.c (lines_split):
+ * src/tail.c (pipe_lines):
+ * src/wc.c (wc_lines):
+ Prefer rawmemchr to memchr when rawmemchr is easy.
+ * src/csplit.c (load_buffer):
+ * src/head.c (struct linebuffer):
+ Make room for a 1-byte sentinel.
+
+ split: avoid NULL + 1
+ * src/split.c (lines_chunk_split): Don’t add to a null pointer.
+ It’s undefined behavior, and it’s unnecessarily confusing
+ regardless.
+
+2021-09-15 Pádraig Brady <P@draigBrady.com>
+
+ digest: support windows format checksum files
+ Support checksum files with CRLF line endings,
+ which is a common gotcha for using --check on windows,
+ or with checksum files generated on windows.
+ Note we escape \r here to support the original coreutils format
+ (with file name at EOL), and file names with literal
+ \r characters as the last character of their name.
+
+ * src/digest.c (filename_unescape): Convert \\r -> \r.
+ (print_filename): Escape \r -> \\r.
+ (output_file): Detect \r chars in file names.
+ (digest_check): Ignore literal \r char at EOL.
+ * tests/misc/md5sum.pl: Add a test case.
+ * tests/misc/sha1sum.pl: Likewise.
+ * NEWS: Mention the improvement.
+
+2021-09-15 Pádraig Brady <P@draigBrady.com>
+
+ doc: improve --help indenting in checksum utils
+ * src/digest.c (usage): Indent multi-line descriptions for clarity.
+
+2021-09-15 Pádraig Brady <P@draigBrady.com>
+
+ cksum: operate in binary mode only
+ This only practically matters on windows.
+ But given there are separate text handling options in cygwin,
+ keep the interface simple, and avoid exposing the
+ confusing binary/text difference here.
+
+ * doc/coreutils.texi (md5sum invocation): Mention that
+ --binary and --text are not supported by the cksum command.
+ * src/digest.c: Set flag to use binary mode by default.
+ (output_file): Don't distinguish text and binary modes with
+ ' ' and '*', and just use ' ' always.
+
+2021-09-15 Pádraig Brady <P@draigBrady.com>
+
+ cksum: use --tag format by default
+ This format is a better default, since it results in simpler usage,
+ as you don't need to specify --tag on generation or -a on
+ checking invocations. Also it's a more general format supporting
+ mixed and length adjusted digests.
+
+ * doc/coreutils.texi (cksum invocation): Document a new --untagged
+ option, to use the older coreutils format.
+ (md5sum invocation): Mention that cksum doesn't support --tag.
+ * src/digest.c: Adjust cksum(1) to default to --tag,
+ and accept the new --untagged option.
+ * tests/misc/b2sum.sh: Adjust accordingly.
+ * tests/misc/cksum-a.sh: Likewise.
+ * tests/misc/cksum-c.sh: Likewise.
+
+2021-09-15 Pádraig Brady <P@draigBrady.com>
+
+ cksum: support --zero in default mode
+ * src/cksum.h: Thread DELIM through the output functions.
+ * src/digest.c: Likewise.
+ * src/sum.c: Likewise.
+ * src/sum.h: Likewise.
+ * src/cksum.c: Likewise. Also adjust check to allow -z
+ with traditional output modes. Also ajust the global variable
+ name to avoid shadowing warnings.
+ * tests/misc/cksum-a.sh: Adjust accordingly.
+
+2021-09-15 Pádraig Brady <P@draigBrady.com>
+
+ digest: support -length specifiers on all digest tags
+ This will be generally useful going forward, for sha3-256 etc.
+
+ * src/digest.c: Rename b2_length to digest_length, and
+ adjust/simplify the code to operate on this for both
+ b2sum and cksum -a blake2b.
+
+2021-09-15 Pádraig Brady <P@draigBrady.com>
+
+ cksum: support digest detection for tagged format
+ Support `cksum --check FILE` without having to specify a digest
+ algorithm, allowing for more generic file check instructions.
+ This also supports mixed digest checksum files, supporting
+ more robust multi digest checks.
+
+ * src/digest.c (algorithm_from_tag): A new function to
+ identify the digest algorithm from a tagged format line.
+ (split3): Set the algorithm depending on tag, and update
+ the expected digest length accordingly.
+ * tests/misc/cksum-c.sh: Add a new test.
+ * tests/local.mk: Reference the new test.
+ * tests/misc/md5sum.pl: Adjust to more generic error.
+ * tests/misc/sha1sum.pl: Likewise.
+ * doc/coreutils.texi (md5sum invocation): Mention the new -c feature.
+ * NEWS: Mention the new feature.
+
+2021-09-15 Pádraig Brady <P@draigBrady.com>
+
+ maint: simplify b2sum to only handle BLAKE2b
+ Any further variants will use the cksum -a table driven mechanism.
+
+ * src/digest.c: Remove BLAKE2 specific table driven code.
+
+2021-09-15 Pádraig Brady <P@draigBrady.com>
+
+ digest: add support for sm3
+ Add message digest sm3, which uses the OSCCA SM3 secure
+ hash (OSCCA GM/T 0004-2012 SM3) generic hash transformation.
+
+ * bootstrap.conf: Add the sm3 module.
+ * doc/coreutils.texi: Mention the cksum -a option.
+ * src/digest.c: Provide support for --algorithm='sm3'.
+ * tests/misc/sm3sum.pl: Add a new test (from Tianjia Zhang)
+ * tests/local.mk: Reference the new test.
+ * NEWS: Mention the new feature.
+
+ Tested-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
+
+2021-09-15 Pádraig Brady <P@draigBrady.com>
+
+ cksum: add --algorithm option to select digest mode
+ * src/digest.c: Organize HASH_ALGO_CKSUM to be table driven,
+ and amalgamate all digest algorithms.
+ (main): Parse all options if HASH_ALGO_CKSUM, and disallow
+ --tag, --zero, and --check with the traditional bsd, sysv, and crc
+ checksums for now.
+ * src/local.mk: Reorganize to include all digest modules in cksum.
+ * tests/misc/cksum-a.sh: Add a new test.
+ * tests/misc/b2sum.sh: Update to default to checking with cksum,
+ as b2sum's implementation diverges a bit from the others.
+ * tests/local.mk: Reference the new test.
+ * doc/coreutils.texi (cksum invocation): Adjust the summary to
+ identify the new mode, and document the new --algorithm option.
+ * man/cksum.x: Adjust description to be more general.
+ * man/*sum.x: Add [See Also] section referencing cksum(1).
+ * NEWS: Mention the new feature.
+
+ digest: refactor cksum(1) into digest.c
+ * cfg.mk: Adjust cksum.c to not require config.h
+ and support a main (for crctab) without calling bindtextdomain().
+ * po/POTFILES.in: Remove cksum_pclmul.c since it no longer
+ concerns itself with diagnostics.
+ * src/cksum.c: Refactor to just providing stream digest,
+ and digest printing functionality.
+ * src/cksum.h: Adjust to the new interface.
+ * src/cksum_pclmul.c: Remove diagnostics, and determine errors
+ internally.
+ * src/crctab.c: Separate from cksum.h since that's now included
+ multiple times.
+ * src/digest.c: Provide cksum(1) functionality if -DHASH_ALGO_CKSUM
+ * src/local.mk: Adjust to new crctab.c and HASH_ALGO_CKSUM define.
+
+2021-09-15 Pádraig Brady <P@draigBrady.com>
+
+ cksum: document the --debug option
+ This should have been part of commit v8.32-113-gb73b9fcb1
+
+ * doc/coreutils.texi (cksum invocation): Add the --debug description.
+ * src/cksum.c (usage): Likewise.
+ (main): Also give explicit indication when using generic hardware.
+
+2021-09-15 Pádraig Brady <P@draigBrady.com>
+
+ sum: handle EOVERFLOW for too large inputs
+ * src/sum.c (bsd_sum_stream): Detect overflow when updating length.
+ (sysv_sum_stream): Likewise.
+
+2021-09-15 Pádraig Brady <P@draigBrady.com>
+
+ digest: refactor sum(1) into digest.c
+ Since digest will be providing all digest functionality,
+ refactor sum.c into it.
+
+ * po/POTFILES.in: sum.c no longer has translatable strings so remove.
+ * src/digest.c: Call out to new stream interfaces in sum.c
+ * src/local.mk: Adjust sources for the sum binary.
+ * src/sum.c: Provide a stream interface for BSD and SYSV digests.
+ * src/sum.h: A new file to declare the exported functions in sum.c
+
+2021-09-15 Pádraig Brady <P@draigBrady.com>
+
+ digest: add LENGTH parameter to digest to support cksum
+ * src/digest.c (digest_file): Add a LENGTH param,
+ to support cksum(1), and sum(1) which output the
+ length as part of their output.
+
+2021-09-15 Pádraig Brady <P@draigBrady.com>
+
+ maint: rename md5sum.c to more general digest.c
+ md5sum.c will be the base for all digest functions,
+ so rename accordingly.
+
+ * src/md5sum.c: Rename to ...
+ * src/digest.c: ... renamed from md5sum.c
+ * scripts/git-hooks/commit-msg: Allow digest: commit prefix.
+ * po.POTFILES.in: Adjust to new name.
+ * src/local.mk: Likewise.
+
+2021-09-15 Pádraig Brady <P@draigBrady.com>
+
+ doc: fix ambiguities in logname(1) and whoami(1)
+ * doc/coreutils.texi (whoami invocation): Clarify it prints names,
+ not numeric IDs.
+ * man/whoami.x: Likewise.
+ * man/logname.x: Reference getlogin(3).
+ * src/logname.c: Clarify that it prints the login name,
+ rather than the name of the effective user ID.
+
+ Fixes https://bugs.gnu.org/48894
+
+2021-09-15 nl6720 <nl6720@gmail.com>
+
+ dircolors: add *direct* to TERM matching
+ Search for "direct color" at:
+ https://invisible-island.net/xterm/terminfo.html
+
+ * src/dircolors.hin: Add *direct* to match terminals that
+ support direct colors (24-bit color / TrueColor).
+ The trailing * will match entries like xterm-direct2.
+
+ Addresses https://bugs.gnu.org/39827
+
+2021-09-12 Pádraig Brady <P@draigBrady.com>
+
+ tests: stat-vs-dirent.sh: avoid a false failure
+ * tests/ls/stat-vs-dirent.sh: Skip the test if we can't stat(1),
+ as the file may have been removed, or have a malformed name
+ due to '\n' etc. in the file name.
+
+2021-09-09 Pádraig Brady <P@draigBrady.com>
+
+ tests: add new stdin reading programs to tty-eof test
+ * tests/misc/tty-eof.pl: Add b2sum and basenc.
+
+ build: update gnulib submodule to latest
+ * gnulib: Update to latest. This fixes a gnulib test failure in base64,
+ among other fixes.
+ * cfg.mk: Disable sc_indent as auto indent is too invasive for now.
+
+2021-09-09 Pádraig Brady <P@draigBrady.com>
+
+ doc: fix repeated word
+ A proposed change to gnulib's sc_prohibit_doubled_word
+ was made to detect this in future.
+
+ * README: s/can can/can/.
+ Fixes https://bugs.gnu.org/50484
+
+2021-09-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: can “can can”
+ Problem reported by Akbarkhon Variskhanov (Bug#50484).
+
+2021-09-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: add missing "as" (thanks to Nelson H.F. Beebe)
+
+2021-09-05 Justin Tracey <j2tracey@gmail.com>
+
+ tests: narrow scope of faulty join args
+ * tests/misc/join.pl: Only test invalid-j with an invalid -j field,
+ not with missing operands as well.
+
+2021-08-31 Pádraig Brady <P@draigBrady.com>
+
+ doc: indicate the default algorithm in the sum(1) man page
+ * src/sum.c (usage): Indicate that -r (BSD algorithm) is the default.
+
+2021-08-31 Pádraig Brady <P@draigBrady.com>
+
+ sum: always output a file name if one passed
+ Adjust to output the file name if any name parameter is passed.
+ This is consistent with sum -s, cksum, and sum implementations
+ on other platforms. This should not cause significant compat
+ issues, as multiple fields are already output, and so already
+ need to be parsed.
+
+ * src/sum.c (bsd_sum_file): Output the file name
+ if any name parameter is passed.
+ * tests/misc/sum.pl: Adjust accordingly.
+ * doc/coreutils.texi (sum invocation): Likewise.
+ * NEWS: Mention the change in behavior.
+
+2021-08-31 Paul Eggert <eggert@cs.ucla.edu>
+
+ tests: port better to NetBSD
+ * tests/misc/help-version.sh: Test that /dev/full causes
+ shell printf to fail. This ports better to NetBSD 9.88.46,
+ where it doesn’t. Problem reported by Nelson H. F. Beebe.
+
+ tests: merge help-version changes back from gzip
+ * tests/misc/help-version.sh: Merge gzip-related changes
+ back from gzip/tests/help-version. This fixes problems
+ when TERM is not 'dumb', and should simplify maintenance.
+
+2021-08-30 Assaf Gordon <assafgordon@gmail.com>
+
+ basenc: fix bug49741: using wrong decoding buffer length
+ Emil Lundberg <lundberg.emil@gmail.com> reports in
+ https://bugs.gnu.org/49741 about a 'basenc --base64 -d' decoding bug.
+ The input buffer length was not divisible by 3, resulting in
+ decoding errors.
+
+ * NEWS: Mention fix.
+ * src/basenc.c (DEC_BLOCKSIZE): Change from 1024*5 to 4200 (35*3*5*8)
+ which is divisible by 3,4,5,8 - satisfying both base32 and base64;
+ Use compile-time verify() macro to enforce the above.
+ * tests/misc/basenc.pl: Add test.
+
+2021-08-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ basenc: prefer signed to unsigned integers
+ This patch modifies basenc to prefer signed integers to
+ unsigned, as signed are less error-prone.
+ This patch also updates Gnulib to to latest, which updates Gnulib’s
+ base32 and base64 modules to prefer signed to unsigned integers.
+ * src/basenc.c: Include idx.h.
+ (struct base2_decode_context): Use unsigned char, not unsigned
+ for an octet that must fit in an unsigned char.
+ (base_encode, struct base_decode_context)
+ (base64_decode_ctx_wrapper, prepare_inbuf, base64url_encode)
+ (base64url_decode_ctx_wrapper, base32_decode_ctx_wrapper)
+ (base32hex_encode, base32hex_decode_ctx_wrapper, base16_encode)
+ (base16_decode_ctx, z85_encode, Z85_HI_CTX_TO_32BIT_VAL)
+ (z85_decoding, z85_decode_ctx, base2msbf_encode)
+ (base2lsbf_encode, base2lsbf_decode_ctx, base2msbf_decode_ctx)
+ (wrap_write, do_encode, do_decode, main):
+ Prefer signed integers to unsigned.
+ (main): Treat extremely large wrap columns as if they were
+ infinite; that’s good enough. Since we’re now using xstrtoimax,
+ this allows ‘-w -0’ (same as ‘-w 0’).
+ * tests/misc/base64.pl (gen_tests): -w-0 is no longer an error.
+
+2021-08-25 Jim Meyering <meyering@fb.com>
+
+ maint: avoid new syntax-check failure
+ find-mount-point.h rightly includes <stdlib.h> for its use
+ of _GL_ATTRIBUTE_DEALLOC_FREE, which uses free, yet that new
+ inclusion provoked a syntax-check failure. Exempt this header
+ file as we've done for others.
+ * cfg.mk (exclude_file_name_regexp--sc_system_h_headers):
+ Add find-mount-point.h to the regexp.
+ (sc_system_h_headers): Use grep -E, for a more readable regexp.
+
+2021-08-25 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid reflinks when testing SEEK_DATA logic
+ This better tests the SEEK_HOLE logic which
+ replaced the original fiemap hole identification logic.
+ Also it avoids a false failure in sparse-2.sh
+ on reflink supporting file systems, where we
+ try to correlate the file sizes produced by cp and dd.
+
+ * tests/cp/sparse-2.sh: s/cp/cp --reflink=never/
+ * tests/cp/sparse-extents-2.sh: Likewise.
+ * tests/cp/sparse-extents.sh: Likewise.
+ * tests/cp/sparse-perf.sh: Likewise.
+ * tests/cp/sparse.sh: Likewise.
+
+ Fixes https://github.com/coreutils/coreutils/issues/54
+
+2021-08-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ df: pacify -Wsuggest-attribute=malloc
+ Problem found with latest Gnulib and GCC 11.2.1.
+ * src/find-mount-point.h (find_mount_point):
+ Add _GL_ATTRIBUTE_MALLOC and _GL_ATTRIBUTE_DEALLOC_FREE.
+
+ build: update gnulib submodule to latest
+
+ maint: use clearerr on stdin when appropriate
+ This is so that commands like ‘fmt - -’ read from stdin
+ both times, even when it is a tty. Fix some other minor
+ issues that are related.
+ * src/blake2/b2sum.c (main):
+ * src/cksum.c (cksum):
+ * src/cut.c (cut_file):
+ * src/expand-common.c (next_file):
+ * src/fmt.c (fmt):
+ * src/fold.c (fold_file):
+ * src/md5sum.c (digest_file, digest_check):
+ * src/nl.c (nl_file):
+ * src/od.c (check_and_close):
+ * src/paste.c (paste_parallel, paste_serial):
+ * src/pr.c (close_file):
+ * src/sum.c (bsd_sum_file):
+ Use clearerr on stdin so that stdin can be read multiple times
+ even if it is a tty. Do not assume that ferror preserves errno as
+ POSIX does not guarantee this. Coalesce duplicate diagnostic
+ calls.
+ * src/blake2/b2sum.c (main):
+ * src/fmt.c (main, fmt):
+ Report read error, even if it's merely fclose failure.
+ * src/fmt.c: Include die.h.
+ (fmt): New arg FILE. Close input (reporting error) if not stdin.
+ All callers changed.
+ * src/ptx.c (swallow_file_in_memory): Clear stdin's EOF flag.
+ * src/sort.c (xfclose): Remove unnecessary feof call.
+
+ doc: spell out stdin, stdout, stderr
+ * doc/coreutils.texi: Spell out words like “stdin” in
+ English prose.
+
+2021-08-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ chmod: fix use of uninitialized var if -v
+ Problem reported by Michael Debertol (Bug#50070).
+ * NEWS: Mention the fix.
+ * src/chmod.c (struct change_status): New struct, replacing the
+ old enum Change_status. All uses changed.
+ (describe_change): Distinguish between cases depending on
+ whether 'stat' or its equivalent succeeded. Report a line
+ of output even if 'stat' failed, as that matches the documentation.
+ Rework to avoid casts.
+ (process_file): Do not output nonsense modes computed from
+ uninitialized storage, removing a couple of IF_LINTs. Simplify by
+ defaulting to CH_NO_STAT.
+
+2021-08-14 Pádraig Brady <P@draigBrady.com>
+
+ maint: update .gitignore
+ * .gitignore: ignore new lib/malloc gnulib directory.
+
+ maint: allow hook script accept "Signed-off-by:"
+ * scripts/git-hooks/commit-msg: Relax this constraint.
+
+2021-08-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ df: fix bug with automounted
+ If the command-line argument is automounted, df would use
+ stat info that became wrong after the following open.
+ * NEWS: Mention the fix (bug#50012).
+ * src/df.c (automount_stat_err): New function.
+ This fixes the hang on fifos in a better way, by using O_NONBLOCK.
+ (main): Use it.
+
+2021-08-08 Pádraig Brady <P@draigBrady.com>
+
+ cat: with -E fix handling of \r\n spanning buffers
+ We must delay handling when \r is the last character
+ of the buffer being processed, as the next character
+ may or may not be \n.
+
+ * src/cat.c (pending_cr): A new global to record whether
+ the last character processed (in -E mode) is '\r'.
+ (cat): Honor pending_cr when processing the start of the buffer.
+ (main): Honor pending_cr if no more files to process.
+ * tests/misc/cat-E.sh: Add test cases.
+ Fixes https://bugs.gnu.org/49925
+
+2021-07-31 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: update .gitignore
+
+ build: update gnulib submodule to latest
+
+ uniq: pacify GCC -fanalyzer
+ Pacify GCC 11.1 -fanalyzer.
+ * src/uniq.c (check_file): Use simpler test to check whether this
+ is the first time through the loop. Although the old test was
+ correct, the new one is easier to understand and perhaps a tiny
+ bit more efficient.
+
+ numfmt: omit unnecessary pointer test
+ Caught by GCC 11.1 -fanalyzer.
+ * src/numfmt.c (simple_strtod_int): Remove unnecessary test of
+ *endptr vs NULL. Presumably this was a typo and **endptr was
+ intended instead of *endptr, but an **endptr test is also
+ unnecessary since c_isdigit (0) returns false.
+
+2021-07-29 Pádraig Brady <P@draigBrady.com>
+
+ doc: add options summary list to tr texinfo
+ * doc/coreutils.texi (tr invocation): Provide a summary
+ list of the available options, which is useful to
+ provide a quick reminder for those already familiar
+ with the functionality of tr.
+ Fixes https://bugs.gnu.org/49764
+
+2021-07-28 Pádraig Brady <P@draigBrady.com>
+
+ tests: augment new ls --zero test cases
+ * tests/ls/zero-option.sh: Check for the disabled, disallowed,
+ and allowed option combinations.
+
+ maint: avoid syntax-check failures in recent ls changes
+ * src/ls.c: Fix ifdef indenting and long line.
+
+2021-07-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: modernize usage of “disk” and “core”
+ In documentation and comments, don’t assume that secondary storage
+ devices are disk devices. Similarly, don’t assume that main memory
+ uses magnetic cores, which became obsolete in the 1970s.
+ * src/du.c (usage):
+ * src/ls.c (usage):
+ * src/shred.c (usage): Reword to avoid “disk” in usage messages.
+
+ doc: improve ls documentation
+ * doc/coreutils.texi (ls invocation): Document implementation more
+ closely. Be more consistent about style. Omit some needless words.
+ * src/ls.c (usage): Don’t overdocument -f, as the details were wrong.
+ Omit -1 advice as it’s a bit obsolete now that we have --zero and
+ is a bit much for --usage output anyway.
+
+ ls: rename --null to --zero (Bug#49716)
+ * NEWS, doc/coreutils.texi (General output formatting):
+ * src/ls.c (usage):
+ Document this.
+ * src/ls.c (ZERO_OPTION): Rename from NULL_OPTION.
+ All uses changed.
+ (long_options): Rename --null to --zero.
+ (dired_dump_obstack, main, print_dir): Use '\n' instead of
+ eolbyte where eolbyte must equal '\n'.
+ (decode_switches): Decode --zero instead of --null.
+ --zero also implies -1, -N, --color=none, --show-control-chars.
+ Use easier-to-decipher code to set ‘format’ and ‘dired’.
+ Reject attempts to combine --dired and --zero.
+ * tests/local.mk: Adjust to test script renaming.
+ * tests/ls/zero-option.sh: Rename from tests/ls/null-option.sh,
+ and test --zero instead of --null.
+
+ ls: compute defaults more lazily
+ * src/ls.c (enum time_type, enum sort_type, enum indicator_style)
+ (enum Dereference_symlink, ignore_mode):
+ Put ‘= 0’ after default values, since the code relies
+ on static storage defaulting to zero.
+ (enum sort_type): Reorder so that -1 can be used to represent unset.
+ (main): Test print_with_color after parse_ls_color may have reset it.
+ (decode_line_length): Return the line length instead of setting
+ static storage. All uses changed. Treat line lengths exceeding
+ PTRDIFF_MAX as infinite, to avoid pointer-subtraction glitches.
+ (stdout_isatty): New function, to avoid calling isatty twice.
+ (decode_switches): Calculate defaults more lazily, to avoid using
+ syscalls or getenv during startup unless the results are more
+ likely to be needed. Use -1 to indicate options that haven’t been
+ set on the command line yet. Move print_with_color test from
+ here to ‘main’. Suppress bogus GCC warning.
+ (getenv_quoting_style): Return the quoting style instead of
+ setting static storage.
+ (init_column_info): New arg MAX_COLS, to avoid recalculating it.
+ Caller changed.
+
+2021-07-26 Pádraig Brady <P@draigBrady.com>
+
+ maint: avoid recent syntax-check issues
+ * .gitignore: Cater for recently added poll module.
+ * src/stdbuf.c: Avoid false positive from sc_prohibit_readlink.
+
+2021-07-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ ls: add --null option (Bug#49716)
+ * NEWS, doc/coreutils.texi (General output formatting):
+ * src/ls.c (usage): Document this.
+ * src/ls.c (NULL_OPTION): New constant.
+ (long_options): Add --null.
+ (eolbyte): New static var.
+ (dired_dump_obstack, main, print_dir, print_current_files)
+ (print_many_per_line, print_horizontal, print_with_separator):
+ Output eolbyte instead of '\n'.
+ (decode_switches): Decode --null.
+ * tests/ls/null-option.sh: New file.
+ * tests/local.mk (all_tests): Add it.
+
+ ls: port to wider off_t, uid_t, gid_t
+ * src/ls.c (dired_pos): Now off_t, not size_t, since it counts
+ output file offsets.
+ (dired_dump_obstack): This obstack's file offsets are now
+ off_t, not size_t.
+ (format_user_or_group, format_user_or_group_width):
+ ID arg is now uintmax_t, not unsigned long, since uid_t and
+ gid_t values might exceed ULONG_MAX.
+ (format_user_or_group_width): Use snprintf with NULL instead of
+ sprintf with a discarded buffer. This avoids a stack buffer,
+ and so should be safer.
+
+ ls: demacroize
+ Prefer functions or constants to macros where either will do.
+ That’s cleaner, and nowadays there’s no performance reason to
+ prefer macros. All uses changed.
+ * src/ls.c (INITIAL_TABLE_SIZE, MIN_COLUMN_WIDTH):
+ Now constants instead of macros.
+ (file_or_link_mode): New function, replacing the old macro
+ FILE_OR_LINK_MODE.
+ (dired_outbyte): New function, replacing the old macro DIRED_PUTCHAR.
+ (dired_outbuf): New function, replacing the old macro DIRED_FPUTS.
+ (dired_outstring): New function, replacing the old macro
+ DIRED_FPUTS_LITERAL.
+ (dired_indent): New function, replacing the old macro DIRED_INDENT.
+ (push_current_dired_pos): New function, replacing the old macro
+ PUSH_CURRENT_DIRED_POS.
+ (assert_matching_dev_ino): New function, replacing the old macro
+ ASSERT_MATCHING_DEV_INO.
+ (do_stat, do_lstat, stat_for_mode, stat_for_ino, fstat_for_ino)
+ (signal_init, signal_restore, cmp_ctime, cmp_mtime, cmp_atime)
+ (cmp_btime, cmp_size, cmp_name, cmp_extension)
+ (fileinfo_name_width, cmp_width, cmp_version):
+ No longer inline; compilers can deduce this well enough nowadays.
+ (main): Protect unused assert with ‘if (false)’ rather than
+ commenting it out, so that the compiler checks the code.
+ (print_dir): Output the space and newline in the same buffer
+ as the human-readable number they surround.
+ (dirfirst_check): New function, replacing the old macro
+ DIRFIRST_CHECK. Simplify by using subtraction.
+ (off_cmp): New function, replacing the old macro longdiff.
+ (print_long_format): No need to null-terminate the string now.
+ (format_user_or_group): Let printf count the bytes.
+
+ ls: simplify sprintf usage
+ * src/ls.c (format_user_or_group_width, print_long_format):
+ Use return value from sprintf instead of calling strlen on
+ the resulting buffer, or inferring the length some other way.
+
+ build: update gnulib submodule to latest
+
+ maint: fix white space
+
+ env: fix usage typo
+ * src/env.c (usage): Fix pluralization typo.
+
+2021-07-02 Kamil Dudka <kdudka@redhat.com>
+
+ df: fix duplicated remote entries due to bind mounts
+ As originally reported in <https://bugzilla.redhat.com/1962515>,
+ df invoked without -a printed duplicated entries for NFS mounts
+ of bind mounts. This is a regression from commit v8.25-54-g1c17f61ef99,
+ which introduced the use of a hash table.
+
+ The proposed patch makes sure that the devlist entry seen the last time
+ is used for comparison when eliminating duplicated mount entries. This
+ way it worked before introducing the hash table.
+
+ Patch co-authored by Roberto Bergantinos.
+
+ * src/ls.c (struct devlist): Introduce the seen_last pointer.
+ (devlist_for_dev): Return the devlist entry seen the last time if found.
+ (filter_mount_list): Remember the devlist entry seen the last time for
+ each hashed item.
+ * NEWS: Mention the bug fix.
+ Fixes https://bugs.gnu.org/49298
+
+2021-06-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ tail: use poll, not select
+ This fixes an unlikely stack out-of-bounds write reported by
+ Stepan Broz via Kamil Dudka (Bug#49209).
+ * bootstrap.conf (gnulib_modules): Replace select with poll.
+ * src/tail.c: Do not include <sys/select.h>.
+ [!_AIX]: Include poll.h.
+ (check_output_alive) [!_AIX]: Use poll instead of select.
+ (tail_forever_inotify): Likewise. Simplify logic, as there is no
+ need for a ‘while (len <= evbuf_off)’ loop.
+
+ tail: fix abuse2 test race
+ * tests/tail-2/inotify-hash-abuse2.sh (fastpoll):
+ Fix race where tailed file ‘f’ temporarily did not exist.
+
+ maint: while (1) → while (true)
+
+2021-06-21 Nikolay Nechaev <Nikolay_Nechaev@mail.ru>
+
+ maint: remove redundant checks on buffer sizes in tail
+ * src/tail.c: remove redundant size checks before calls to
+ `xwrite_stdout`
+
+2021-06-21 Pádraig Brady <P@draigBrady.com>
+
+ stat: use decomposed decimal device numbers by default
+ * src/stat.c (default_format): Use decomposed decimal
+ representation (major,minor) in the default format.
+ This is least ambiguous for human interpretation,
+ and more consistent with ls for example.
+ Fixes https://bugs.gnu.org/48960
+
+2021-06-21 Pádraig Brady <P@draigBrady.com>
+
+ stat: support more device number representations
+ In preparation for changing the default device number
+ representation (to decomposed decimal), provide more
+ formatting options for device numbers.
+
+ These new (FreeBSD compat) formatting options are added:
+
+ %Hd major device number in decimal (st_dev)
+ %Ld minor device number in decimal (st_dev)
+ %Hr major device type in decimal (st_rdev)
+ %Lr minor device type in decimal (st_rdev)
+ %r (composed) device type in decimal (st_rdev)
+ %R (composed) device type in hex (st_rdev)
+
+ * doc/coreutils.texi (stat invocation): Document new formats.
+ * src/stat.c (print_it): Handle the new %H and %L modifiers.
+ (print_statfs): Adjust to passing the format as two chars
+ rather than an int. Using an int was introduced in commit db42ae78,
+ but using separate chars is cleaner and more extensible.
+ (print_stat): Likewise. Handle any modifiers and the new 'r' format.
+ (usage): Document the new formats.
+ * tests/misc/stat-fmt.sh: Add a test case for new modifiers.
+ Addresses https://bugs.gnu.org/48960
+
+2021-06-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+ Coreutils mistakenly did not list xstrndup as a module
+ that it depends on directly. When the latest Gnulib removed
+ the dirname module's dependency on xstrndup, this mistake
+ caused coreutils to not build. Since all of Coreutils's
+ uses of xstrndup know the string length, xmemdup0 is a better
+ match for what's needed. Since the size args are typically
+ signed or derived from subtracting pointers, the new Gnulib
+ ximemdup0 function is a better match yet.
+ So, use ximemdup0 instead of xstrndup.
+ * src/cut.c, src/dircolors.c, src/expand-common.c, src/expand.c:
+ * src/numfmt.c, src/set-fields.c, src/unexpand.c:
+ Do not include xstrndup.h; no longer needed.
+ * src/dircolors.c (parse_line):
+ * src/expand-common.c (parse_tab_stops):
+ * src/numfmt.c (parse_format_string):
+ * src/set-fields.c (set_fields):
+ Use ximemdup0 instead of xstrndup.
+
+2021-05-28 Jim Meyering <meyering@fb.com>
+
+ maint: bootstrap: remove reference to unused hash-pjw module
+ * bootstrap.conf (gnulib_modules): Remove hash-pjw. No longer used.
+
+2021-05-15 Pádraig Brady <P@draigBrady.com>
+
+ build: update gnulib submodule to latest
+ Fixes a false test failure with MALLOC_CHECK_ set.
+
+ * gnulib: Update to latest.
+
+2021-05-15 Pádraig Brady <P@draigBrady.com>
+
+ copy: remove fiemap logic
+ This is now only used on 10 year old linux kernels,
+ and performs a sync before each copy.
+
+ * src/copy.c (extent_copy): Remove function and all callers.
+ * src/extent-scan.c: Remove.
+ * src/extent-scan.h: Remove.
+ * src/fiemap.h: Remove.
+ * src/local.mk: Adjust for removed files.
+ * NEWS: Adjust to say fiemap is removed.
+
+2021-05-13 Pádraig Brady <P@draigBrady.com>
+
+ copy: disallow copy_file_range() on Linux kernels before 5.3
+ copy_file_range() before Linux kernel release 5.3 had many issues,
+ as described at https://lwn.net/Articles/789527/, which was
+ referenced from https://lwn.net/Articles/846403/; a more general
+ article discussing the generality of copy_file_range().
+ Linux kernel 5.3 was released in September 2019, which is new enough
+ that we need to actively avoid older kernels.
+
+ * src/copy.c (functional_copy_file_range): A new function
+ that returns false for Linux kernels before version 5.3.
+ (sparse_copy): Call this new function to gate use of
+ copy_file_range().
+
+2021-05-12 Pádraig Brady <P@draigBrady.com>
+
+ tests: fix tests/cp/sparse-2.sh false failure on some systems
+ * tests/cp/sparse-2.sh: Double check cp --sparse=always,
+ with dd conv=sparse, in the case where the former didn't
+ create a sparse file. Now that this test is being newly run
+ on macos, we're seeing a failure due to seek() not creating
+ holes on apfs unless the size is >= 16MiB.
+
+2021-05-12 Pádraig Brady <P@draigBrady.com>
+
+ tests: ensure we test SEEK_DATA where used
+ fiemap is no longer the default copy implementation,
+ so check for SEEK_DATA support instead as that's preferred.
+ This will ensure better test coverage on systems without fiemap.
+
+ * init.cfg: Replace fiemap_capable_ with seek_data_capable_.
+ This is best supported with python 3 so prefer that.
+ * tests/seek-data-capable: A new test script checking for
+ SEEK_DATA support on the passed file name,
+ called from seek_data_capable_.
+ * tests/fiemap-capable: Remove no longer used probing script.
+ * tests/cp/fiemap-perf.sh: Renamed to tests/cp/sparse-perf.sh
+ * tests/cp/fiemap-2.sh: Renamed to tests/cp/sparse-2.sh
+ * tests/cp/fiemap-extents.sh: Renamed to tests/cp/sparse-extents.sh
+ * tests/cp/sparse-fiemap.sh: Renamed to tests/cp/sparse-extents-2.sh
+ * tests/cp/fiemap-FMR.sh: Renamed to tests/cp/copy-FMR.sh
+ * tests/local.mk: Reference the renamed tests.
+
+2021-05-12 Pádraig Brady <P@draigBrady.com>
+
+ copy: handle system security config issues with copy_file_range()
+ * src/copy.c (sparse_copy): Upon EPERM from copy_file_range(),
+ fall back to a standard copy, which will give a more accurate
+ error as to whether the issue is with the source or destination.
+ Also this will avoid the issue where seccomp or apparmor are
+ not configured to handle copy_file_range(), in which case
+ the fall back standard copy would succeed without issue.
+ This specific issue with seccomp was noticed for example in:
+ https://github.com/golang/go/issues/40900
+
+ copy: handle EOPNOTSUPP from SEEK_DATA
+ * src/copy.c (infer_scantype): Ensure we don't error out
+ if SEEK_DATA returns EOPNOTSUPP, on systems where this value
+ is distinct from ENOTSUP. Generally both of these should be checked.
+
+ copy: handle ENOTSUP from copy_file_range()
+ * src/copy.c (sparse_copy): Ensure we fall back to
+ a standard copy if copy_file_range() returns ENOTSUP.
+ This generally is best checked when checking ENOSYS,
+ but it also seems to be a practical concern on Centos 7,
+ as a quick search gave https://bugzilla.redhat.com/1840284
+
+2021-05-10 Pádraig Brady <P@draigBrady.com>
+
+ build: update gnulib submodule to latest
+ Fixes a bits/long-double.h include build issue on some systems.
+
+ * bootstrap: Sync new --version option from gnulib.
+ * gnulib: Update to lastest.
+ Reported by Carl Edquist
+
+2021-05-10 Carl Edquist <edquist@cs.wisc.edu>
+
+ build: fix __get_cpuid_count check to catch link failure
+ The test program will compile successfully even if __get_cpuid_count
+ is not declared. The error for the missing symbol will only show up
+ at link time. Thus, use AC_LINK_IFELSE instead of AC_COMPILE_IFELSE.
+
+ * configure.ac (__get_cpuid_count check): Use C_LINK_IFELSE instead
+ of AC_COMPILE_IFELSE.
+ (__get_cpuid check): Likewise.
+
+2021-05-08 Pádraig Brady <P@draigBrady.com>
+
+ maint: consistently free hash structures in dev mode
+ Ensure we call hash_free() to avoid valgrind and leak_sanitizer
+ "definitely lost" warnings. These were not real leaks as
+ we terminate immediately after, but we should avoid these
+ "definitely lost" warnings where possible.
+
+ * src/copy.c: Add dest_info_free() and src_info_free().
+ * src/copy.h: Declare the above.
+ * src/cp-hash.c: Don't define unless "lint" is defined.
+ * src/install.c: Call dest_info_free() in dev mode.
+ * src/mv.c: Likewise.
+ * src/cp.c: Likewise. Also call src_info_free().
+ * src/ln.c: Call hash_free() in dev mode.
+ * src/tail.c: Call hash_free() even if about to exit, in dev mode.
+
+ Fixes https://bugs.gnu.org/48189
+
+2021-05-06 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: fix sc_space_before_open_paren failure
+ * src/copy.c (dest_info_init): Add space before parens.
+ (src_info_init): Likewise.
+ Syntax-check failure introduced in the previous commit.
+
+2021-05-03 Pádraig Brady <P@draigBrady.com>
+
+ copy: exit immediately upon failure to allocate hash memory
+ * src/copy.c (dest_info_init, src_info_init): Terminate immediately
+ upon memory exhaustion.
+
+2021-05-02 Pádraig Brady <P@draigBrady.com>
+
+ copy: ensure we enforce --reflink=never
+ * src/copy.c (sparse_copy): Don't use copy_file_range()
+ with --reflink=never as copy_file_range() may implicitly
+ use acceleration techniques like reflinking.
+ (extent_copy): Pass through whether we allow reflinking.
+ (lseek_copy): Likewise.
+ Fixes https://bugs.gnu.org/48164
+
+ wc: add --debug to diagnose which implementation used
+ * src/wc.c: (main): Handle the new --debug option.
+ Only call avx2_supported if needed.
+ (avx2_supported): Diagnose various failures and attempts.
+ * NEWS: Mention the new wc improvement and --debug option.
+
+2021-05-02 Kristoffer Brånemyr <ztion1@yahoo.se>
+
+ wc: use avx2 optimization when counting only lines
+ Use cpuid to detect CPU support for avx2 instructions.
+ Performance was seen to improve by 5x for a file with only newlines,
+ while the performance for a file with no such characters is unchanged.
+
+ * configure.ac [USE_AVX2_WC_LINECOUNT]: A new conditional,
+ set when __get_cpuid_count() and avx2 compiler intrinsics are supported.
+ * src/wc.c (avx2_supported): A new function using __get_cpuid_count()
+ to determine if avx2 instructions are supported.
+ (wc_lines): A new function refactored from wc(),
+ which implements the standard line counting logic,
+ and provides the fallback implementation for when avx2 is not supported.
+ * src/wc_avx2.c: A new module to implement using avx2 intrinsics.
+ * src/local.mk: Reference the new module. Note we build as a separate
+ lib so that it can be portably built with separate -mavx2 etc. flags.
+
+2021-05-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ touch: fix wrong diagnostic (Bug#48106)
+ Problem reported by Roland (Bug#48106).
+ * src/touch.c (touch): Take more care when deciding whether
+ to use open_errno or utime_errno in the diagnostic.
+ Stop worrying about SunOS 4 (which as part of the problem),
+ as it’s long obsolete. For Solaris 10, verify that EINVAL
+ really means the file was a directory.
+
+2021-04-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: port to Autoconf 2.71
+ * configure.ac: Use AC_PROG_CC, not AC_PROG_CC_STDC.
+ * gl/modules/smack (configure.ac):
+ * m4/jm-macros.m4 (coreutils_MACROS):
+ * m4/xattr.m4 (gl_FUNC_XATTR):
+ Use AS_HELP_STRING, not AC_HELP_STRING.
+ * m4/check-decl.m4 (gl_CHECK_DECLS):
+ Do not require AC_HEADER_TIME; we no longer care about it directly.
+ * m4/jm-macros.m4 (coreutils_MACROS):
+ Do not require AC_ISC_POSIX, which became obsolete in 2006.
+ Use AC_LINK_IFELSE instead of AC_TRY_LINK.
+
+ csplit: size_t overflow check
+ * src/csplit.c (get_new_buffer): Fix unlikely size_t overflow.
+
+ build: update gnulib submodule to latest
+ * src/csplit.c (load_buffer):
+ * src/pinky.c (create_fullname):
+ Use intprops-based checks rather than xalloc_oversized,
+ since Gnulib xalloc.h no longer includes xalloc-oversized.h.
+
+2021-04-27 Zorro Lang <zlang@redhat.com>
+
+ copy: do not refuse to copy a swap file
+ * src/copy.c (sparse_copy): Fallback to read() if copy_file_range()
+ fails with ETXTBSY. Otherwise it would be impossible to copy files
+ that are being used as swap. This used to work before introducing
+ the support for copy_file_range() in coreutils. (Bug#48036)
+
+2021-04-22 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ tests: fix FP in ls/stat-free-color.sh
+ On newer systems like Fedora 34 and openSUSE Tumbleweed, ls(1) calls
+ newfstatat(STDOUT_FILENO, ...), but only when there is something to
+ output.
+
+ * tests/ls/stat-free-color.sh: Add -a option to the reference invocation
+ of ls, thus enforcing something gets output.
+
+2021-04-11 Pádraig Brady <P@draigBrady.com>
+
+ doc: clarify that ln --relative requires --symbolic to be specified
+ * doc/coreutils.texi (ln invocation): State --symbolic is required.
+ * src/ln.c (usage): Explicitly state -s is not implied.
+ Fixes https://bugs.gnu.org/47703
+
+ doc: clarify what's counted by wc
+ * src/wc.c (usage): State that only printable characters are considered
+ when counting words. This also disambiguates wether we're talking
+ about bytes or characters in this context.
+ * doc/coreutils.texi (wc invocation): Likewise. Also clarify
+ that --characters counts valid locale aware characters,
+ and that --lines does not count a trailing "line" unless
+ it ends with a newline character.
+ Fixes https://bugs.gnu.org/47702
+
+ maint: use "char const *" rather than "const char *"
+ * cfg.mk (sc_prohibit-const-char): Add a new syntax-check to
+ enforce this style.
+ * *.[ch]: sed -i 's/const char \*/char const */g'
+
+2021-04-11 Pádraig Brady <P@draigBrady.com>
+
+ ls: cache name width determination
+ This is especially important now for --sort=width,
+ as that can greatly increase how often this
+ expensive quote_name_width() function is called per file.
+
+ This also helps the default invocation of ls,
+ or specifically the --format={across,vertical} cases
+ (when --width is not set to 0),
+ to avoid two calls to this function per file.
+
+ Note the only case where we later compute the width,
+ is for --format=commas. That's only done once though,
+ so we leave the computation close to use to
+ maximize hardware caching.
+
+ * src/ls.c (struct fileinfo): Add a WIDTH member to cache
+ the screen width of the file name.
+ (update_current_files_info): Set the WIDTH members for cases
+ they're needed multiple times. Note we do this explicitly here,
+ rather than caching at use, so that the fileinfo
+ structures can remain const in the sorting and presentation functions.
+ (sort_files): Call the new update_current_files_info() in this
+ initialization function.
+ (fileinfo_name_width): Renamed from fileinfo_width,
+ and adjusted to return the cached value if available.
+
+2021-04-11 Carl Edquist <edquist@cs.wisc.edu>
+
+ ls: add --sort=width option to sort by file name width
+ This helps identify the outliers for long filenames, and also produces
+ a more compact display of columns when listing a directory with many
+ entries of various widths.
+
+ * src/ls.c (sort_type, sort_types, sort_width): New sort_width sort
+ type.
+ (sort_args): Add "width" sort arg.
+ (cmp_width, fileinfo_width): New sort function and helper for file name
+ width.
+ (quote_name_width): Add function prototype declaration.
+ (usage): Document --sort=width option.
+ * doc/coreutils.texi: Document --sort=width option.
+ * tests/ls/sort-width-option.sh: New test for --sort=width option.
+ * tests/local.mk: Reference new test.
+ * NEWS: Mention the new feature.
+
+2021-03-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ env: simplify --split-string memory management
+ * bootstrap.conf (gnulib_modules): Add idx.
+ * src/env.c: Include idx.h, minmax.h.
+ Prefer idx_t to ptrdiff_t when values are nonnegative.
+ (valid_escape_sequence, escape_char, validate_split_str)
+ (CHECK_START_NEW_ARG):
+ Remove; no longer needed now that we validate as we go.
+ (struct splitbuf): New type.
+ (splitbuf_grow, splitbuf_append_byte, check_start_new_arg)
+ (splitbuf_finishup): New functions.
+ (build_argv): New arg ARGC. Validate and process in one go, using
+ the new functions; this is simpler and more reliable than the old
+ approach (as witness the recent bug). Avoid integer overflow in
+ the unlikely case where the string contains more than INT_MAX
+ arguments.
+ (parse_split_string): Simplify by exploiting the new build_argv.
+
+ build: update gnulib submodule to latest
+
+2021-03-29 Pádraig Brady <P@draigBrady.com>
+
+ tests: add a test case for recent env fix
+ * tests/misc/env-S.pl: Add a test case for recent commit ec6904f0.
+
+ maint: ignore all .a files in .gitignore
+ * .gitignore: Rather than add the new src/libcksum_pclmul.a,
+ just ignore any such libs.
+ * src/.gitignore: Likewise.
+ Reported by Kristoffer Brånemyr.
+
+2021-03-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ env: prefer ptrdiff_t
+ * src/env.c (usvars_used, vnlen, unset_envvars, expansion)
+ (build_argv): Prefer ptrdiff_t to size_t when either will do.
+
+ env: improve whitespace warning
+ * src/env.c (main): Issue -S warning for any whitespace,
+ not just space.
+
+ env: use GNU coding style
+ * src/env.c: Use GNU coding style for recentish changes.
+
+ env: remove asserts
+ The assertions didn’t help catch the most recent bug which
+ was in their area, and kind of get in the way.
+ * src/env.c: Do not include <assert.h>, and remove all assertions.
+ These seem to have been put in to pacify gcov, but surely there’s
+ a better way.
+ (escape_char): Pacify GCC with 'assume' instead.
+
+ doc: document env fix
+ * NEWS, doc/coreutils.texi (env invocation): Document recent change.
+
+ env: fix address violation with '\v' in -S
+ Problem reported by Frank Busse (Bug#47412).
+ * src/env.c (C_ISSPACE_CHARS): New macro.
+ (shortopts, build_argv, main): Treate all C-locale space
+ characters like space and tab, for compatibility with FreeBSD.
+ (validate_split_str, build_argv, parse_split_string):
+ Use the C locale, not the current locale, to determine whether a
+ byte is a space character.
+
+2021-03-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ hostname: pacify valgrind
+ * src/hostname.c (main) [IF_LINT]: Free hostname (Bug#47384).
+
+ hostname: use puts
+ * src/hostname.c (main): Prefer puts to printf "%s\n".
+
+ maint: indenting
+ * src/ln.c: Fix indenting.
+
+2021-03-25 Kamil Dudka <kdudka@redhat.com>
+
+ ln: fix memory leaks in do_link
+ * src/ln.c (do_link): Free memory allocated by convert_abs_rel
+ on all code paths (Bug#47373).
+
+2021-03-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ stdbuf: port lib to macOS
+ * src/libstdbuf.c (fprintf, free, strtoumax): Undef these too,
+ since Gnulib might replace them.
+
+2021-03-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ cksum: port recent changes to macOS
+ * src/cksum.c (cksum_slice8): Fix bug on little-endian
+ platforms lacking __bswap_32: the SWAP macro evaluates
+ its argument multiple times, but the macro has a side effect.
+
+2021-03-22 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: update bootstrap from gnulib
+ * bootstrap: Sync from gnulib/build-aux/bootstrap; the previous gnulib
+ update (commit 1a3eb6c30) missed to update that file.
+
+2021-03-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ ptx: remove use of diacrit module
+ The diacrit module is obsolete, and ptx’s use of it is obsolete
+ too; it assumes an 8-bit locale (not that common these days) and
+ that TeX cannot process the 8-bit characters (nowadays, it can).
+ * NEWS, doc/coreutils.texi (Charset selection in ptx): Document this.
+ * bootstrap.conf (gnulib_modules): Remove diacrit.
+ * src/ptx.c: Do not include diacrit.h.
+ (print_field, fix_output_parameters): Remove obsolete support
+ for 8-bit diacritics.
+
+ build: update gnulib submodule to latest
+
+2021-03-15 Pádraig Brady <P@draigBrady.com>
+
+ cksum: don't exit immediately if a single file overflows
+ This behavior was introduced in commit FILEUTILS-4_0_44-4-g519b707b4.
+
+ * src/cksum.c (cksum_slice8): Only report the overflow, and continue.
+ * src/cksum_pclmul.c (cksum_pclmul): Likewise.
+
+2021-03-15 Pádraig Brady <P@draigBrady.com>
+
+ cksum: add --debug to diagnose which implementation used
+ * src/cksum.c: (main): Use getopt_long to parse options,
+ and handle the new --debug option.
+ (pclmul_supported): Diagnose various failures and attempts.
+ * NEWS: Mention the new option.
+
+2021-03-15 Kristoffer Brånemyr <ztion1@yahoo.se>
+
+ cksum: use pclmul hardware instruction for CRC32 calculation
+ Use cpuid to detect CPU support for hardware instruction.
+ Fall back to slice by 8 algorithm if not supported.
+ A 500MiB file improves from 1.40s to 0.67s on an i3-2310M
+
+ * configure.ac [USE_PCLMUL_CRC32]: A new conditional,
+ set when __get_cpuid() and clmul compiler intrinsics are supported.
+ * src/cksum.c (pclmul_supported): A new function using __get_cpuid()
+ to determine if pclmul instructions are supported.
+ (cksum): A new function refactored from cksum_slice8(),
+ which calls pclmul_supported() and then cksum_slice8()
+ or cksum_pclmul() as appropriate.
+ * src/cksum.h: Export the crctab array for use in the new module.
+ * src/cksum_pclmul.c: A new module to implement using pclmul intrinsics.
+ * po/POTFILES.in: Reference the new cksum_pclmul module.
+ * src/local.mk: Likewise. Note we build it as a separate library
+ so that it can be portably built with separate -mavx etc. flags.
+ * tests/misc/cksum.sh: Add new test modes for pertinent buffer sizes.
+
+2021-03-14 Pádraig Brady <P@draigBrady.com>
+
+ maint: propagate DEPENDENCIES to libs in single binary mode
+ build-aux/gen-single-binary.sh (override_single): A new function
+ to refactor the existing mappings for dir, vdir, and arch.
+ This function now also sets the DEPENDENCIES variable so that these
+ dependencies can be maintained later in the script, where
+ we now propagate the automake generated $(src_$cmd_DEPENDENCIES)
+ to our equivalent src_libsinglebin_$cmd_a_DEPENDENCIES.
+ This will ensure that any required libs are built,
+ which we require in a following change to cksum that
+ builds part of it as a separate library.
+
+2021-02-19 Pádraig Brady <P@draigBrady.com>
+
+ rmdir: diagnose non following of symlinks with trailing slash
+ GNU/Linux is unusual here in that rmdir("symlink/") returns ENOTDIR,
+ whereas Solaris and FreeBSD at least, will follow the symlink
+ and remove the target directory. We don't make the behavior
+ on Linux kernels consistent, but at least clarify
+ the confusing error message.
+
+ * src/rmdir (main): Output a specific error message for the above case.
+ (remove_parents): In the error message, don't assume intermediate paths
+ are directories, as they could be symlinks.
+ * tests/rmdir/symlink-errors.sh: Add a new test.
+ * tests/local.mk: Reference the new test.
+ * NEWS: Mention the improvement.
+
+2021-02-18 Kamil Dudka <kdudka@redhat.com>
+
+ stat,tail: add support for the exfat file system
+ Bug: https://bugzilla.redhat.com/1921427
+
+ * src/stat.c (human_fstype): Add case for the 'exfat' file system type.
+ * NEWS: Mention the Improvement.
+ Fixes https://bugs.gnu.org/46613
+
+2021-02-15 Erik Auerswald <auerswal@unix-ag.uni-kl.de>
+
+ pr: fix alignment of input tabs to multiple columns
+ This regression was introduced in commit COREUTILS-6_8-58-g553d347d3
+
+ * src/pr.c (init_parameters): Process tabs for multiple columns.
+ * tests/pr/pr-tests.pl: Add test cases.
+ * NEWS: Mention the bug fix.
+ Fixes https://bugs.gnu.org/46422
+
+2021-02-10 Pádraig Brady <P@draigBrady.com>
+
+ cat: extend --show-ends to show \r\n as ^M$
+ - \r\n is common a line end combination
+ - catting such a file without options causes it to display normally
+ - overwriting the first char with $, loses info
+
+ * src/cat.c (cat): Convert \r preceeding a \n to ^M.
+ * tests/misc/cat-E.sh: New test.
+ * tests/local.mk: Reference new test.
+ * tests/misc/cat-proc.sh: Fix typo.
+ * doc/coreutils.texi (cat invocation): Mention the new behavior.
+ * NEWS: Mention the improvement.
+
+2021-01-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ expr: fix bug with unmatched \(...\)
+ Problem reported by Qiuhao Li.
+ * NEWS: Mention this.
+ * doc/coreutils.texi (String expressions):
+ Document the correct behavior, which POSIX requires.
+ * src/expr.c (docolon): Treat unmatched \(...\) as empty.
+ * tests/misc/expr.pl: New test.
+
+2021-01-25 Pádraig Brady <P@draigBrady.com>
+
+ split: fix --number=K/N to output correct part of file
+ This functionality regressed with the adjustments
+ in commit v8.25-4-g62e7af032
+
+ * src/split.c (bytes_chunk_extract): Account for already read data
+ when seeking into the file.
+ * tests/split/b-chunk.sh: Use the hidden ---io-blksize option,
+ to test this functionality.
+ * NEWS: Mention the bug fix.
+ Fixes https://bugs.gnu.org/46048
+
+2021-01-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: rmdir --recursive substitutes
+ * doc/coreutils.texi (rmdir invocation): Add note on how to remove
+ empty subdirectories recursively.
+
+2021-01-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ mkdir: fix bug when -m's more generous than umask
+ Problem reported by David McCall (Bug#45886).
+ I introduced this problem when fixing Bug#14371.
+ * NEWS: Mention the fix.
+ * src/mkdir.c (struct mkdir_options): New members umask_ancestor,
+ umask_self, replacing umask_value.
+ (make_ancestor): Use them when temporarily adjusting umask.
+ (main): Set them, and set the umask to umask_self instead
+ of leaving it alone.
+ * tests/mkdir/perm.sh (tests): Add test case for bug.
+
+2021-01-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: modernize and fix regexp xref
+ * doc/coreutils.texi: Fix regexp cross-reference that had become
+ out-of-date (Bug#45749). Also, fix some obsolete references to
+ SunOS and to /usr/dict/words, and change “Linux” to “GNU/Linux”
+ where appropriate. Unfortunately the pipeline example gets more
+ complicated since /usr/share/dict/words is not sorted the way that
+ ‘comm’ wants.
+
+2021-01-03 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ doc: make formatting of SEE ALSO in cat.1 and tac.1 consistent
+ None of the coreutils man pages - but the two above - are using bold
+ setting for the references to other man pages in the SEE ALSO section.
+
+ * man/cat.x (SEE ALSO): Remove '\fB...\fP' setting.
+ * man/tac.x: Likewise, and add a reference to cat(1).
+
+2021-01-02 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: exempt 'doc/fdl.texi' from 'make update-copyright'
+ This file is a copy from gnulib and therefore should not get changed
+ by the yearly update.
+
+ * .x-update-copyright: Add pattern for the above file.
+ * doc/fdl.texi: Revert the previous change.
+
+2021-01-01 Pádraig Brady <P@draigBrady.com>
+
+ maint: update all copyright year number ranges
+ Run "make update-copyright" and then...
+
+ * gnulib: Update to latest with copyright year adjusted.
+ * tests/init.sh: Sync with gnulib to pick up copyright year.
+ * bootstrap: Likewise.
+ * tests/sample-test: Adjust to use the single most recent year.
+
+2020-12-28 Pádraig Brady <P@draigBrady.com>
+
+ tests: add a test for cksum
+ * tests/misc/cksum.sh: Test basic operation.
+ * tests/local.mk: Reference the new test.
+
+2020-12-28 Kristoffer Brånemyr <ztion1@yahoo.se>
+
+ cksum: use more efficient slice by 8 algorithm
+ A 100MB file improves from 2.50s to 1.80s on a Sparc T5220
+ A 100MB file improves from 0.54s to 0.13s on an i3-2310M
+
+ * bootstrap.conf: Explicitly depend on byteswap,
+ since now used directly by coreutils.
+ * src/cksum.c (cksum): Process in multiples of 8 bytes.
+ (main): Adjust for generation of expanded crctab.
+ * src/cksum.h: Split now larger crctab to separate header.
+ * src/local.mk: Reference the new header.
+ * NEWS: Mention the improvement.
+
+2020-12-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+ * src/make-prime-list.c (free): Undef, since Gnulib's free-posix
+ module now defines this to rpl_free on some platforms.
+
+2020-12-18 Pádraig Brady <P@draigBrady.com>
+
+ doc: remove extraneous ./src/ prefix from examples
+ * doc/coreutils.texi (numfmt invocation): s|./src/numfmt|numfmt|
+
+ doc: add `seq inf` and `sleep inf` examples to texinfo
+ * doc/coreutils.texi (seq invocation): Mention "inf" is supported,
+ and describe that it's handled specially to generate infinite
+ whole integer sequences. Also mention that such infinite generation
+ is supported for integer steps up to 200.
+ (sleep invocation): Give `sleep inf` as an example to sleep forever.
+ * src/seq.c: Add a comment on SEQ_FAST_STEP_LIMIT, to say it's
+ reflected in the texinfo description.
+
+2020-12-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: document mkdir -m -p better
+ Chris Colohan wrote that the man page did not do enough to dispel
+ a common misunderstanding that “contributed to one of the scariest
+ outages Google has ever seen” (Bug#45258).
+ * doc/coreutils.texi (mkdir invocation):
+ * src/mkdir.c (usage): Document -m vs -p better.
+
+2020-12-15 KOBAYASHI Takashi <a1415tk@aiit.ac.jp>
+
+ nl: fix --section-delimiter handling of single characters
+ * src/nl.c (main): Enforce the POSIX specified
+ behavior of assuming ':' is specified after a single
+ character argument to -d.
+ * tests/misc/nl.sh: Add a test case.
+ * NEWS: Mention the bug fix.
+
+2020-12-15 Pádraig Brady <P@draigBrady.com>
+
+ doc: mention the GNU extensions to nl --section-delimiter
+ * doc/coreutils.texi (nl invocation): Mention the GNU extensions
+ of allowing arbitrary length and empty delimiter strings.
+ * src/nl.c (usage): Likewise.
+ * tests/misc/nl.sh: Add test cases for the GNU extensions.
+
+ maint: refactor nl section delimiter handling
+ * src/nl.c (main): Update the default delimiter characters
+ when passed two characters with --section-delimiter.
+ Avoid redundant copies for the body and footer delimiter strings,
+ and instead, just offset into the header string.
+ (check_section): Avoid redundant comparing of 2 bytes of memory
+ for an empty delimiter.
+
+2020-12-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+
+2020-12-08 Arman Absalan <armanaxh@gmail.com>
+
+ chroot,comm,join: fix usage options style
+ * src/chroot.c (usage): Fix indentation of options.
+ * src/comm.c: Likewise.
+ * src/join.c: Likewise.
+
+2020-12-01 Pádraig Brady <P@draigBrady.com>
+
+ date: with --debug, show the output format
+ The format can be determined from --options or the locale,
+ so it's useful to output the format string being used.
+
+ * src/date.c (show_date): Show the output format
+ along with the date being shown.
+ * tests/misc/date-debug.sh: Adjust accordingly.
+ Addresses https://bugs.gnu.org/44960
+
+2020-11-27 Tim Gates <tim.gates@iress.com>
+
+ maint: fix typo, characteres -> characters
+ * src/expr.c: Fix typo in comment.
+
+2020-11-26 Nishant Nayan <nishant.nayan@oracle.com>
+
+ rm: do not skip files upon failure to remove an empty dir
+ When removing a directory fails for some reason, and that directory
+ is empty, the rm_fts code gets the return value of the excise call
+ confused with the return value of its earlier call to prompt,
+ causing fts_skip_tree to be called again and the next file
+ that rm would otherwise have deleted to survive.
+
+ * src/remove.c (rm_fts): Ensure we only skip a single fts entry,
+ when processing empty dirs. I.e. only skip the entry
+ having successfully removed it.
+ * tests/rm/empty-immutable-skip.sh: New root-only test.
+ * tests/local.mk: Add it.
+ * NEWS: Mention the bug fix.
+ Fixes https://bugs.gnu.org/44883
+
+2020-11-26 Pádraig Brady <P@draigBrady.com>
+
+ maint: mention in NEWS about new df remote fs types
+ * NEWS: Mention new remote file system types
+ recognized since gnulib commit dd1fc46b.
+
+2020-11-23 Pádraig Brady <P@draigBrady.com>
+
+ maint: remove no longer needed se_const helper
+ This was needed before libselinux-2.3 (May 2014),
+ but modern releases have the correct const declarations.
+
+ * src/chcon.c: Remove se_const() wrapper.
+ * src/cp.c: Likewise.
+ * src/install.c: Likewise.
+ * src/mkdir.c: Likewise.
+ * src/mkfifo.c: Likewise.
+ * src/mknod.c: Likewise.
+ * src/system.h: Likewise.
+ * gnulib: update to pick up const correctness fixes in selinux stubs.
+
+2020-11-23 Pádraig Brady <P@draigBrady.com>
+
+ maint: fix syntax-check failure
+ * po/POTFILES.in (src/selinux.c): Remove entry as this source doesn't
+ contain any translatable strings anymore; avoids a sc_po_check failure.
+
+2020-11-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ install: suppress "Operation not supported" false alarms
+ At least, I *think* they are false alarms. An SELinux expert eye
+ would be welcome.
+ * src/install.c (setdefaultfilecon): If selabel_lookup fails
+ due to either ENOTSUP or ENODATA, don’t diagnose the issue.
+ Problem reported by Kamil Dudka in:
+ https://lists.gnu.org/r/coreutils/2020-11/msg00050.html
+
+ maint: propagate errno better in selinux.c
+ * src/selinux.c: Don’t include die.h; no longer needed.
+ (computecon, defaultcon, restorecon): Propagate errno.
+ (defaultcon, restorecon): Don’t diagnose errors or exit, as that’s
+ the caller’s responsibility.
+
+2020-11-23 Pádraig Brady <P@draigBrady.com>
+
+ maint: use absolute paths with selabel_lookup
+ * src/selinux.c: selabel_lookup requires absolute paths
+ (while only older matchpathcon before libselinux < 2.1.5 2011-0826 did).
+ * po/POTFILES.in: Readd src/selinux.c since we now have
+ a translatable error message.
+
+2020-11-22 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: minor cleanup
+ The previous commit introduced a couple of syntax-check failures.
+
+ * .gitignore (/lib/se-label.h): Add entry to silence the
+ sc_gitignore_missing check. Sort entries in C locale.
+ * po/POTFILES.in (src/selinux.c): Remove entry as this source doesn't
+ contain any translatable strings anymore; avoids a sc_po_check failure.
+ * src/mv.c: Replace tabs by spaces to avoid complaints by
+ sc_prohibit_tab_based_indentation.
+
+2020-11-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+
+ maint: port from matchpathcon to selabel_lookup
+ Ubuntu 20.10 is using a newer version of libselinux that
+ complains that matchpathcon is obsolete. Rewrite the code
+ that it uses the recommended selabel_lookup instead.
+ * m4/jm-macros.m4 (coreutils_MACROS): Do not check for
+ matchpathcon_init_prefix, as it is no longer used.
+ * src/copy.c (set_file_security_ctx): Omit process_local arg,
+ as it is equivalent to !x->set_security_context. All callers changed.
+ * src/copy.h (struct cp_options): set_security_context is now of
+ type struct selabel_handle *, not bool. All uses changed.
+ * src/cp.c, src/install.c, src/mkdir.c, src/mkfifo.c, src/mknod.c:
+ * src/mv.c: Include selinux/label.h.
+ (main): Use selabel_open for set_security context.
+ * src/install.c (matchpathcon_init_prefix): Remove; now unused.
+ (get_labeling_handle): New static function.
+ (setdefaultfilecon, main): Use it.
+ (setdefaultfilecon): Do something regardless of
+ ENABLE_MATCHPATHCON, which seems to be a revenant macro.
+ (setdefaultfilecon): Use selabel_lookup instead of the obsolescent
+ matchpathcon. Report an error unless it fails due to ENOENT.
+ * src/local.mk (src_ginstall_CPPFLAGS): Remove.
+ * src/selinux.c: Include selinux/label.h
+ Do not include die.h, error.h, canonicalize.h.
+ (defaultcon, restorecon_private, restorecon):
+ New arg HANDLE. All callers changed.
+ Use selabel_lookup rather than matchpathcon.
+ (restorecon_private, restorecon): Don’t lose track of errno.
+ * src/selinux.c, src/selinux.h:
+ (restorecon): Don’t call ‘error’; that’s the caller’s job.
+ Use HAVE_SELINUX_LABEL_H, not HAVE_SELINUX_SELINUX_H,
+ in case there is some weird system with the former but not the latter.
+ * src/selinux.h (struct selinux_handle): Add forward decl.
+
+ build: port to Solaris 10
+ * src/local.mk (src_ln_LDADD, src_mktemp_LDADD, src_tac_LDADD):
+ Add $(LIB_CLOCK_GETTIME), since these use tempname which uses
+ clock_gettime if getrandom fails. On platforms like Solaris 10,
+ clock_gettime is not in the standard C library.
+
+ build: update gnulib submodule to latest
+
+2020-11-18 Pádraig Brady <P@draigBrady.com>
+
+ doc: mention that sort -g supports hex numbers
+ * doc/coreutils.texi (sort invocation): Mention explicitly
+ that --general-numeric-sort supports arbitrary format hex numbers,
+ but also mention that consistent case/width hex numbers can
+ be sorted faster with a standard sort.
+
+2020-11-14 Pádraig Brady <P@draigBrady.com>
+
+ tr: fix crash validating -c with some case char classes
+ This crash was identified by Cyber Independent Testing Lab:
+ https://cyber-itl.org/2020/10/28/citl-7000-defects.html
+ and was introduced with commit v8.5-163-g3f48829c2
+
+ * src/tr.c (validate_case_classes): Don't apply these
+ extra case alignment checks in the --complement case,
+ which is even more restrictive as to the contents of SET2.
+ * tests/misc/tr-case-class.sh: Add a test case,
+ for a large SET1, which caused the length adjustment
+ in validate_case_classes to underflow and trigger the assert.
+ * NEWS: Mention the bug fix.
+
+2020-11-12 Ben Pfaff <blp@cs.stanford.edu>
+
+ doc: clarify in texinfo that `test == ...` is non portable
+ * doc/coreutils.texi (test invocation): Mention non portability
+ of the double equals form.
+
+2020-11-11 Pádraig Brady <P@draigBrady.com>
+
+ ls: fix crash printing SELinux context for unstatable files
+ This crash was identified by Cyber Independent Testing Lab:
+ https://cyber-itl.org/2020/10/28/citl-7000-defects.html
+ and was introduced with commit v6.9.90-11-g4245876e2
+
+ * src/ls.c (gobble_file): Ensure scontext is initialized
+ in the case where files are not statable.
+ * tests/ls/selinux-segfault.sh: Renamed from proc-selinux-segfault.sh,
+ and added test case for broken symlinks.
+ * tests/local.mk: Adjust for the renamed test.
+ * NEWS: Mention the bug fix.
+
+2020-11-07 Pádraig Brady <P@draigBrady.com>
+
+ timeout: support sub-second timeouts on macOS
+ * m4/jm-macros.m4: Check for setitimer.
+ * src/timeout.c: Use setitimer if timer_settime is not available.
+ * NEWS: Mention the improvement.
+
+2020-11-07 Pádraig Brady <P@draigBrady.com>
+
+ maint: avoid strncat warning on GCC
+ GCC 10.1.1 without optimization gives:
+
+ error: ‘strncat’ argument 2 declared attribute ‘nonstring’
+ [-Werror=stringop-overflow=]
+ strncat (comment, UT_ID (utmp_ent), utmpsize);
+
+ Note the strncat man page says that:
+ "src does not need to be null-terminated
+ if it contains n or more bytes."
+ And the POSIX spec says that the second (source) parameter
+ is an array not a string.
+ So I think it's incorrect for strncat to require src be a string type.
+ This constraint seems to be being added to the gcc builtin strncat,
+ as specifiying -fno-builtin also avoids the warning.
+ Note specifying any optimization level also avoids the warning.
+
+ * src/who.c (make_id_equals_comment): Avoid the issue by using
+ stpcpy + stzncpy, instead of strcpy + strncat.
+ This pattern is used elsewhere in who.c
+
+2020-10-28 Pádraig Brady <P@draigBrady.com>
+
+ stat,tail: sync file system constants from the linux kernel
+ * src/stat.c: Add magic constants for "devmem", and
+ "zonefs" file systems.
+ * NEWS: Mention the improvement.
+
+ maint: cleanup operation of fs-magic-compare
+ * src/local.mk: Ensure we map 2 hex digits to 4,
+ so that we don't output already handled Z3FOLD file system (0x33).
+ Also hide the generation command for src/fs.h.
+
+2020-10-27 Pádraig Brady <P@draigBrady.com>
+
+ doc: make blank lines before --help consistent
+ * src/basenc.c (usage): Remove extraneous blank line,
+ to be consistent with other utilities that have options.
+ * src/realpath.c: Likewise.
+ * src/runcon.c: Likewise.
+ Addresses https://bugs.gnu.org/44248
+
+2020-10-26 Jim Meyering <meyering@fb.com>
+
+ maint: avoid new sort.c warning from upcoming GCC11
+ gcc version 11.0.0 20201025 (experimental) warns that
+ src/sort.c:1655:1: warning: function might be candidate for attribute \
+ 'pure' if it is known to return normally [-Wsuggest-attribute=pure]
+ * src/sort.c (limfield): Mark as pure.
+
+2020-10-26 Kamil Dudka <kdudka@redhat.com>
+
+ dd: drop old workaround for lseek() bug in Linux kernel
+ The workaround triggers warnings from newer kernel versions in case
+ a user does not have sufficient privileges for the MTIOCGET ioctl.
+
+ * src/dd.c (skip_via_lseek): Drop wrapper function no longer needed.
+ (skip): Use lseek() directly.
+ (advance_input_after_read_error): Likewise.
+
+ Reported-by: Nir Soffer at https://bugzilla.redhat.com/1876840
+ Fixes https://bugs.gnu.org/44235
+
+2020-10-26 KOBAYASHI Takashi <a1415tk@aiit.ac.jp>
+
+ nl: support a negative --line-increment
+ * src/nl.c (main): Allow -i to accept down to INTMAX_MIN.
+ * tests/misc/nl.sh: Add test cases.
+ * NEWS: Mention the new feature.
+
+2020-10-25 Pádraig Brady <P@draigBrady.com>
+
+ nl: only fail if need to output overflowed numbers
+ Previously we would have failed immediately upon internal overflow,
+ which didn't output the full line being processed, and assumed
+ there would be another numbered line.
+
+ * src/nl.c (line_no_overflow): A new global to track overflow.
+ (print_lineno): Only fail if about to output an overflowed number.
+ (reset_lineno): A new function to refactor resetting of the number,
+ and which also clears line_no_overflow.
+ * tests/misc/nl.sh: Add a test case.
+
+2020-10-25 Pádraig Brady <P@draigBrady.com>
+
+ maint: add lib/parse-datetime-gen.h to .gitignore
+ * .gitignore: update to ignore new file
+ generated by the latest gnulib update.
+
+ maint: sync help2man to latest version
+ * man/help2man: sync to changes from version 1.47.16.
+ Note this doesn't materially change the generated man pages.
+ Addresses https://bugs.gnu.org/44105
+
+2020-10-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+ * gl/lib/randperm.c, src/cp-hash.c, src/ls.c, src/sort.c, src/tail.c:
+ Change all instaces of hash_delete to hash_remove to accommodate
+ change to Gnulib API.
+
+2020-10-17 Grigorii Sokolik <g.sokol99@g-sokol.info>
+
+ maint: remove already handled FIXME in tail.c
+ * src/tail.c: Remove FIXME to follow a file name in a recreated
+ directory. The comment was added in commit v8.5-191-g61b77891c
+ while the fix (albeit not using inotify) was added in
+ commit v8.27-21-gba5fe2d4b
+
+ maint: update docs for build prerequisites
+ * README-prereq: Explicitly pull tags,
+ and update the xz git repo url.
+
+2020-09-29 Benno Schulenberg <bensberg@telfort.nl>
+
+ doc: fix punctuation in stat --help
+ * src/stat.c (usage): Replace a mistaken semicolon with a colon,
+ and replace mistaken backticks with single quotes. Also reorder
+ some words, for clarity.
+ Fixes https://bugs.gnu.org/43707
+
+2020-08-12 Pádraig Brady <P@draigBrady.com>
+
+ doc: clarify timeout --foreground description
+ * doc/coreutils.texi (timeout invocation): Avoid any implication
+ that `timeout --foreground` could be used to retroactively
+ timeout commands not already invoked by timeout(1).
+ Fixes bug https://bugs.gnu.org/42831
+
+2020-08-08 Emanuele Giacomelli <vpooldyn-linux@yahoo.it>
+
+ csplit: fix regex suppression with specific match count
+ * src/csplit.c (process_regexp): Process the line suppression
+ in all invocations so that the last match is suppressed.
+ Previously with a non infinite match count,
+ the last regex pattern was not suppressed.
+ * NEWS: Mention the bug fix.
+ * tests/misc/csplit-suppress-matched.pl: Add a test case.
+ Fixes https://bugs.gnu.org/42764
+
+2020-07-31 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ tests: skip some parts of 'tests/rmdir/ignore.sh' if run as root
+ Parts of this test expect that the rmdir syscall returns with EPERM,
+ but the root user does not see that.
+
+ * tests/rmdir/ignore.sh: Add uid_is_privileged_ guards around parts
+ of the test which expect rmdir() to fail with EPERM.
+
+ Reported by Nick Alcock <nix@esperi.org.uk> in
+ https://bugs.gnu.org/42633
+
+2020-07-28 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ doc: show version in title of HTML manual
+ * doc/coreutils.texi (@include version.texi): Move before ...
+ (@settitle): ... this. Add the version after the package name.
+
+ Suggested by Jonny Grant <jg@jguk.org> in
+ https://lists.gnu.org/r/bug-coreutils/2020-07/msg00021.html
+
+2020-07-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+ * src/local.mk (src_expr_LDADD, src_factor_LDADD):
+ Adjust to Gnulib renaming of LIB_GMP to LIBGMP.
+
+2020-07-27 Pádraig Brady <P@draigBrady.com>
+
+ doc: fix typo in env --split-string documentation
+ * doc/coreutils.texi: Fix grammar.
+
+2020-07-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ date: clarify the Epoch
+ * src/date.c (usage): Mention the Epoch under %s for clarity,
+ and capitalize.
+
+ doc: modernize date examples
+ * doc/coreutils.texi: Use more-modern date examples.
+ Capitalize “Epoch” to be consistent with POSIX.
+
+ build: update gnulib submodule to latest
+ * bootstrap.conf (gnulib_modules): Add hash-triple.
+
+2020-07-20 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ doc: clarify 'timeout -k' behavior
+ * doc/coreutils.texi (timeout invocation): Document that the the
+ duration of --kill-after=DURATION begins when sending the initial
+ signal. Also mention that -k does not have any effect if timeout's
+ duration is 0.
+
+ Suggested by Jonny Grant <jg@jguk.org>.
+
+2020-07-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ factor: port to --without-libgmp
+ * src/factor.c (mp_factor_using_division): Use mpz_fdiv_q_2exp
+ instead of its no-longer-documented mpz_div_2exp alias.
+ (print_factors): Use mpz_out_str instead of gmp_printf.
+
+2020-07-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: be less aggressive about -fanalyzer
+ * configure.ac: Don’t enable -fanalyzer unless configured with the
+ new --enable-gcc-warnings=expensive option. See thread at:
+ https://lists.gnu.org/r/coreutils/2020-07/msg00011.html
+
+2020-07-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ factor: explain why non-GMP code (Bug#42269)
+ * doc/coreutils.texi (factor invocation):
+ * src/factor.c: Explain why the two-word algorithm is useful.
+
+2020-07-08 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: mention expr and factor bignums
+ * NEWS:
+ * doc/coreutils.texi (expr invocation, factor invocation):
+ Mention bignum support on all platforms. Modernize timings.
+
+ factor: treat ' +bignum' like non-bignum
+ * src/factor.c (strto2uintmax): Instead of here ...
+ (print_factors): ... skip spaces and '+' here, so that
+ bignums are treated like non-bignums.
+ * tests/misc/factor.pl (bug-gmp-plus_2_sup_128_plus_1): New test.
+
+ tests: simplify since expr now works on bignums
+ * cfg.mk (sc_prohibit_expr_unsigned): Remove.
+ * tests/dd/skip-seek-past-dev.sh (DEV_OFLOW):
+ * tests/id/setgid.sh (gp1):
+ * tests/misc/cut-huge-range.sh (CUT_MAX):
+ * tests/misc/expr.pl:
+ * tests/misc/sort-discrim.sh:
+ Assume expr works on bignums.
+ * tests/misc/cut-huge-range.sh (subtract_one):
+ Remove; no longer needed.
+
+ factor: simplify tests by assuming libgmp
+ * tests/misc/factor.pl: Test bignums even if !HAVE_GMP.
+
+2020-07-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: use Gnulib libgmp module
+ This lets use assume multiple-precision arithmetic on all
+ platforms, simplifying the code.
+ * bootstrap.conf (gnulib_modules): Add libgmp.
+ * configure.ac: Don’t call cu_GMP, as this is now done by Gnulib.
+ * m4/gmp.m4: Remove.
+ * src/expr.c, src/factor.c: Use gmp.h unconditionally.
+ * src/factor.c: Use the simpler ‘#ifndef mpz_inits’ to
+ determine whether there is an mpz_inits macro.
+
+ build: update gnulib submodule to latest
+
+2020-07-03 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ doc: add timeout examples
+ * doc/coreutils.texi (timeout invocation): Add examples.
+
+ Suggested by Jonny Grant <jg@jguk.org> in
+ https://lists.gnu.org/r/bug-coreutils/2020-06/msg00018.html
+
+2020-06-30 Andreas Schwab <schwab@linux-m68k.org>
+
+ tests: avoid spurious testsuite failure
+ * tests/dd/stats.sh: Increase timeout.
+ Fixes https://bugs.gnu.org/42135
+
+2020-06-26 Pádraig Brady <P@draigBrady.com>
+
+ tests: fix false failure with valgrind and reflink
+ * tests/cp/fiemap-FMR.sh: Avoid FICLONE ioctl,
+ which would avoid the point of the test (fiemap testing).
+ Also it avoids a valgrind bug with this ioctl:
+ https://bugs.kde.org/show_bug.cgi?id=397605
+
+2020-06-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ cp: use copy_file_range if available
+ * NEWS: Mention this.
+ * bootstrap.conf (gnulib_modules): Add copy-file-range.
+ * src/copy.c (sparse_copy): Try copy_file_range if not
+ looking for holes.
+
+ cp: use SEEK_DATA/SEEK_HOLE if available
+ If it works, prefer lseek with SEEK_DATA and SEEK_HOLE to FIEMAP,
+ as lseek is simpler and more portable (will be in next POSIX).
+ Problem reported in 2011 by Jeff Liu (Bug#8061).
+ * NEWS: Mention this.
+ * src/copy.c (lseek_copy) [SEEK_HOLE]: New function.
+ (enum scantype): New constants ERROR_SCANTYPE, LSEEK_SCANTYPE.
+ (union scan_inference): New type.
+ (infer_scantype): Last arg is now union scan_inference *,
+ not struct extent_scan *. All callers changed.
+ Prefer SEEK_HOLE to FIEMAP if both work, since
+ SEEK_HOLE is simpler and more portable.
+ (copy_reg): Do the fdadvise after initial scan, in case the scan
+ fails. Report an error if the initial scan fails.
+ (copy_reg) [SEEK_HOLE]: Use lseek_copy if scantype says so.
+
+ cp: avoid copy_reg goto
+ * src/copy.c (copy_reg): Redo to avoid label and goto.
+
+ cp: refactor extent_copy
+ * src/copy.c (extent_copy): New arg SCAN, replacing
+ REQUIRE_NORMAL_COPY. All callers changed.
+ (enum scantype): New type.
+ (infer_scantype): Rename from is_probably_sparse and return
+ the new type. Add args FD and SCAN. All callers changed.
+
+ maint: typo fix
+ * NEWS: Fix typo.
+
+2020-06-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ chmod: man page fixes
+ * man/chmod.x: Mention -6000 too. Use .BR to fix trailing period.
+
+2020-06-21 Pádraig Brady <P@draigBrady.com>
+
+ doc: fix punctuation in man pages
+ * man/chmod.x: Add missing punctuation.
+ * src/expand-common.c: Likewise.
+ * src/numfmt.c: Likewise.
+ * src/rm.c: Likewise.
+
+ Fixes https://bugs.gnu.org/41962
+
+2020-06-20 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ stat,tail: add support for the VBOXSF file system
+ * src/stat.c (human_fstype): Add case for the 'vboxsf' file system type
+ which is used for VirtualBox Shared Folders mounted in VirtualBox guest
+ VMs.
+ * NEWS: Mention the Improvement.
+ Fixes https://bugs.gnu.org/41935
+
+2020-06-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ cp: default to COW
+ Likewise for ‘install’. Proposed in Bug#24400, and long past due.
+ * NEWS:
+ * doc/coreutils.texi (cp invocation):
+ * src/copy.h (enum Reflink_type): Document this.
+ * src/cp.c (cp_option_init):
+ * src/install.c (cp_option_init): Implement this.
+
+2020-06-15 Tobias Stoeckmann <tobias@stoeckmann.org>
+
+ maint: avoid signed integer overflows
+ Since -LONG_MIN results in LONG_MIN again, the operation itself is
+ a signed integer overflow.
+
+ This can be observed with the following calls (best if compiled
+ with -ftrapv or -fsanitize=undefined):
+
+ $ numfmt --padding=-9223372036854775808
+ $ seq 1e-9223372036854775808
+
+ Technically, the change in seq "reduces" the precision, but a double
+ or long double that small would be represented as 0 anyway.
+
+ * src/numfmt.c: Explicitly disallow --padding=LONG_MIN.
+ * src/seq.c: Treat 1e$LONG_MIN as 1e-$LONG_MAX.
+ * tests/misc/numfmt.pl: Add a test case.
+ * tests/misc/seq-precision.sh: Likewise.
+
+ Fixes https://bugs.gnu.org/41850
+
+2020-06-07 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ doc: timeout: improve documentation of the exit status
+ * doc/coreutils.texi (timeout invocation): Document that the exit
+ status is 137 when the KILL signal is used, regardless of whether that
+ signal is sent to COMMAND or timeout.
+ * src/timeout.c (usage): Likewise. Also split out and expand
+ on the possible exit status values to a separate table.
+
+ Discussed at https://bugs.gnu.org/41634
+
+2020-06-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: use getrandom, not getentropy
+ This makes for one Gnulib module less, and at runtime there’s
+ typically just one getrandom syscall instead of several for large
+ nonces.
+ * gl/lib/randread.c: Include sys/random.h instead of sys/time.h
+ and unistd.h.
+ (get_nonce): Use getrandom, not getentropy.
+ * gl/modules/randread (Depends-on):
+ Depend on getrandom, not getentropy.
+ * src/shred.c (main):
+ * src/shuf.c (main):
+ * src/sort.c (random_md5_state_init):
+ Say "getrandom" rather than "getentropy" in (unlikely) diagnostic.
+
+ maint: use getentropy and new tempname modules
+ Update gnulib submodule to latest and use its new features.
+ Gnulib’s new getentropy module means coreutils can now assume
+ getentropy instead of approximating it, badly in some cases.
+ Gnulib’s improvements to the tempname module mean coreutils no
+ longer needs to maintain private patches.
+ * bootstrap.conf (gnulib_modules): Remove gettimeofday.
+ * gl/lib/randread.c (NAME_OF_NONCE_DEVICE): Remove.
+ (get_nonce): Return success indicator. Remove bytes_bound arg.
+ All callers changed. Rewrite by using getentropy instead of
+ reading the nonce device and falling back on gettimeofday.
+ Fail if getentropy fails.
+ (randread_new): Return NULL (setting errno) if get_nonce fails.
+ All callers changed.
+ * gl/lib/tempname.c.diff, gl/lib/tempname.h.diff:
+ * gl/modules/tempname.diff: Remove.
+ * gl/modules/randread (Depends-on):
+ Depend on getentropy, not gettimeofday.
+ * src/ptx.c (swallow_file_in_memory):
+ * src/shuf.c (read_input):
+ Adjust to read_file changes in Gnulib.
+ * src/shred.c (main):
+ * src/shuf.c (main):
+ * src/sort.c (random_md5_state_init):
+ Diagnose the new form of randread_new failures: randread_new can
+ fail now when !random_source, meaning getentropy failed.
+
+ echo: pacify Oracle Studio 12.6
+ * src/echo.c (main): Don’t assign pointer to bool.
+ This is well-defined in C99, but is arguably bad style
+ and Oracle Studio 12.6 complains.
+
+2020-05-25 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: copy FDL from gnulib instead of using it as module
+ Since the previous gnulib update, bootstrap outputs this warning:
+
+ Notice from module fdl:
+ Don't use this module! Instead, copy the referenced license file \
+ into your version control repository.
+
+ See gnulib commit:
+ https://git.sv.gnu.org/cgit/gnulib.git/commit/?id=88fc5afbccc9
+
+ * bootstrap.conf (gnulib_modules): Remove 'fdl'.
+ * doc/fdl.texi: Add file as a copy of 'gnulib/doc/fdl.texi'.
+ * doc/.gitignore (/fdl.texi): Remove entry.
+ * cfg.mk (FILTER_LONG_LINES): Add pattern for the 'fdl.texi' file.
+
+2020-05-23 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: fix syntax-check failure from recent adjustment
+ * cfg.mk (old_NEWS_hash): Regenerate after commit v8.32-15-g6d0107a37
+
+2020-05-23 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ tests: fix removed-directory test
+ The previous attempt to skip that test on NFS (commit 4181fc518362)
+ made the test fail; it introduced two problems:
+ a) In the good case, i.e., when the subshell returns with exit status 0,
+ the test ran into framework_failure_.
+ b) As the subshell also runs with 'set -x', the later comparison of
+ /dev/null with 'err' would fail.
+
+ * tests/ls/removed-directory.sh: Revert to the style without subshell,
+ and add 'test -d .' to verify that 'ls' can read the removed dir.
+
+2020-05-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ date: document +%-N change
+ Suggested by Kamil Dudka in:
+ https://lists.gnu.org/r/bug-gnulib/2020-05/msg00205.html
+ * NEWS: Mention the change for coreutils 8.23.
+ * doc/coreutils.texi (Padding and other flags):
+ Document it.
+
+ ls: port removed-directory test to NFS
+ * tests/ls/removed-directory.sh:
+ Port test to NFS, where one gets a stale file handle
+ when looking at a removed directory.
+
+ dd: omit unnecessary vars when !lint
+ * src/dd.c (real_ibuf, real_obuf) [!lint]:
+ Remove, as they're needed only when lint checking.
+ All uses removed when 'lint' is not defined.
+
+ maint: omit unnecessary pragmas and fix tsort.c
+ * src/chown-core.c, src/comm.c:
+ * src/tsort.c (record_relation):
+ Remove GCC 10 pragmas that are not needed in GCC 10.1.0 (the first
+ public GCC 10 release) and that in some cases cause diagnostics
+ with GCC 10.1.0. The tsort.c change fixes a bug that was
+ inadvertantly introduced when these pragmas were added.
+
+ build: update gnulib submodule to latest
+
+2020-05-11 Pádraig Brady <P@draigBrady.com>
+
+ maint: avoid warnings from GCC's -fanalyzer
+ * src/env.c (build_argv): Add an assert() to avoid:
+ warning: use of NULL 'n' where non-null expected
+ [CWE-690] [-Wanalyzer-null-argument]
+ note: argument 1 of 'getenv' must be non-null
+ * src/dd.c (alloc_ibuf): Don't discard the allocated pointer, to avoid:
+ [CWE-401] [-Wanalyzer-malloc-leak]
+ (alloc_obuf): Likewise.
+ (cleanup): Deallocate the now tracked buffers which
+ also avoids "possibly lost" warnings from valgrind.
+ * src/tsort.c (search_item): Add asserts to avoid:
+ [CWE-690] [-Wanalyzer-null-dereference]
+ (record_relation): An assert doesn't suffice here,
+ so disable the warning for this function.
+ * src/comm.c: Suppress the following false positive for the whole file:
+ [CWE-457] [-Wanalyzer-use-of-uninitialized-value]
+ * src/chown-core.c: Suppress the following false positive for the file:
+ [CWE-415] [-Wanalyzer-double-free]
+
+2020-04-27 Jason Kim <git@jasonk.me>
+
+ ls: allow --classify to be ignored for non tty output
+ Have the `ls` `--classify` option take an optional argument for when to
+ classify ("always", "auto", "never"), just like the optional argument
+ for `--color`. When the optional argument is not specified, default to
+ "always" for backwards compatibility.
+
+ * src/ls.c (usage): Update help text.
+ (decode_switches): Support an optional argument for --classify.
+ * tests/ls/classify.sh: Add a new test.
+ * tests/local.mk: Reference the new test.
+ * NEWS: Mention the new feature.
+
+2020-04-22 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ build: update gnulib to latest - to avoid du(1) crash on XFS
+ Pull in a fix for FTS to avoid a crash when traversing a heavily
+ changed XFS file system:
+
+ > fts: remove NOSTAT_LEAF_OPTIMIZATION
+
+ * NEWS (Bug fixes): Mention the fix.
+ * gnulib: Update to latest.
+ * bootstrap: Sync from gnulib/build-aux/bootstrap.
+
+ Discussed at:
+ <https://lists.gnu.org/r/bug-gnulib/2020-04/msg00068.html>
+
+2020-04-02 Pádraig Brady <P@draigBrady.com>
+
+ maint: clean up recently added test
+ * tests/misc/uniq-collate.sh: Remove logic that
+ was already refactored into gen_input().
+
+ cp: ensure --attributes-only doesn't remove files
+ * src/copy.c (copy_internal): Ensure we don't unlink the destination
+ unless explicitly requested.
+ * tests/cp/attr-existing.sh: Add test cases.
+ * NEWS: Mention the bug fix.
+ Fixes https://bugs.gnu.org/40352
+
+2020-03-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+ * src/selinux.c: Do not include dosname.h; not needed, since
+ system.h does that for us via dirname.h.
+
+2020-03-15 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: add texi2dvi build directory to doc/.gitignore
+ * doc/.gitignore (/coreutils.t2p/): Add entry for the build directory
+ left behind after 'make pdf'.
+ While at it, sort the file.
+
+2020-03-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ ls: improve removed-directory test
+ * tests/ls/removed-directory.sh: Remove host_triplet test.
+ Skip this test if one cannot remove the working directory.
+ From a suggestion by Bernhard Voelker (Bug#39929).
+
+ ls: restore 8.31 behavior on removed directories
+ * NEWS: Mention this.
+ * src/ls.c: Do not include <sys/sycall.h>
+ (print_dir): Don't worry about whether the directory is removed.
+ * tests/ls/removed-directory.sh: Adjust to match new (i.e., old)
+ behavior.
+
+2020-03-05 Pádraig Brady <P@draigBrady.com>
+
+ maint: post-release administrivia
+ * NEWS: Add header line for next release.
+ * .prev-version: Record previous version.
+ * cfg.mk (old_NEWS_hash): Auto-update.
+
+ version 8.32
+ * NEWS: Record release date.
+
+2020-03-04 Pádraig Brady <P@draigBrady.com>
+
+ tests: don't rely on system env(1) being present
+ * tests/misc/env-S.pl: `env -i env` will call the system env
+ due to the path being cleared, so pass the absolute path
+ of our env binary under test to avoid that. This was seen
+ to be an issue on Guix where /usr/bin/env was not available.
+
+ basenc: avoid undefined behaviour in z85 processing
+ * src/basenc.c (z85_decode_ctx_init): Ensure we're working
+ with unsigned, as otherwise ubsan triggers with:
+ src/basenc.c:767:18: runtime error: signed integer overflow:
+ 43 * 52200625 cannot be represented in type 'int'
+ (z85_encode): Likewise to avoid the usban error:
+ src/basenc.c:630:26: runtime error:
+ left shift of 134 by 24 places cannot be represented in type 'int'
+
+2020-03-01 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid a false failure on OpenIndiana 11
+ * tests/misc/timeout-parameters.sh: Split the large timeout
+ handling to ...
+ * tests/misc/timeout-large-parameters.sh: ... here, so that
+ the 3 second delay is contained in its own test, and if
+ the test is skipped due invalid handling within timeout(1),
+ it will be more apparent.
+ Also adjust the check so we skip whenever the kernel timer
+ fires immediately, to handle the buggy OpenIndiana 11 kernel also.
+ Reported by Bruno Haible.
+
+ tests: avoid a hang on GNU/Hurd from 2019
+ * tests/du/8gb.sh: Add a timeout around:
+ `dd bs=1 seek=8G of=big < /dev/null`
+
+ tests: use bash in some scripts to avoid false failures
+ * init.cfg (require_bash_as_SHELL_): A new function to replace
+ SHELL for the current test, with bash if available.
+ This is useful on OpenIndiana 11 where /bin/sh was seen
+ to have races in handling of SIGPIPE.
+ * tests/misc/seq-epipe.sh: Use the new function to enforce bash.
+ * tests/misc/env-signal-handler.sh: Likewise.
+ Reported by Bruno Haible
+
+ tests: improve test coverage for ls stat checks
+ * tests/ls/stat-free-color.sh: Check for the availability
+ of various stat calls individually, and add statx() and fstatat64()
+ to the list to check. Fix the stat counting logic to
+ ignore lines like "+++ exited with 0 +++".
+ * tests/ls/stat-free-symlinks.sh: Check syscalls other than stat().
+
+2020-03-01 Bruno Haible <bruno@clisp.org>
+
+ tests: enable 4 more tests to be executed on FreeBSD
+ * init.cfg (gcc_shared_libs_): New variable.
+ (gcc_shared_): Use it, instead of hardcoding -ldl.
+ (require_gcc_shared_): Determine the suitable value
+ for gcc_shared_libs_.
+
+2020-02-29 Pádraig Brady <P@draigBrady.com>
+
+ tests: fix incorrect `|| fail` pattern in tests
+ * tests/ls/stat-free-symlinks.sh: s/|| fail/|| fail=1/.
+ * tests/misc/tee.sh: Likewise.
+ * tests/touch/relative.sh: Likewise.
+ * cfg.mk (sc_prohibit_or_fail): A new syntax-check to avoid this.
+
+2020-02-29 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid false failures on darwin 19.2.0
+ With these adjustments, all tests pass on macOS Catalina.
+
+ * tests/dd/sparse.sh: Adjust so that systems like apfs that
+ don't create holes < 16 MiB do not fail erroneously.
+ * tests/touch/trailing-slash.sh: Darwin was seen to dereference
+ symlinks to files when given a trailing slash, so avoid
+ that particular case.
+
+2020-02-29 Bruno Haible <bruno@clisp.org>
+
+ tests: fix test failure on FreeBSD 12
+ * tests/misc/csplit-io-err.sh: Limit the effect of the fwrite
+ override to streams != stderr, as fwrite is in the error() path there.
+
+2020-02-27 Jan Nieuwenhuizen <janneke@gnu.org>
+
+ build: once again distribute .tar.gz files
+ * configure.ac: Reenable distribution of gzip-compressed
+ tarballs, for Guix bootstrapping reasons as discussed at:
+ https://lists.gnu.org/r/coreutils/2020-02/msg00042.html
+ * THANKS.in: Remove me, as now a committer.
+ * NEWS (Build-related): Mention this.
+
+2020-02-27 Pádraig Brady <P@draigBrady.com>
+
+ maint: ensure .deps/ in the project root is ignored by git
+ * .gitignore: s|*/.deps/|.deps|
+
+ doc: remove older ChangeLog items
+ * Makefile.am: Update the oldest documented version
+ to 8.23 which is now about 5 years old.
+
+2020-02-27 Colin Watson <cjwatson@debian.org>
+
+ ls: issue error message on removed directory
+ If the current directory has been removed, then "ls" confusingly
+ produced no output and no error message, indistinguishable from
+ running on an empty directory.
+
+ * src/ls.c (print_dir): Report ENOENT on GNU/Linux if readdir
+ finds no directory entries at all, not even "." or "..",
+ and a recheck with the getdents syscall returns ENOENT.
+ We recheck with getdents() as POSIX states that
+ "The directory entries for dot and dot-dot are optional".
+ * tests/ls/removed-directory.sh: New file.
+ * tests/local.mk (all_tests): Add new test.
+ * NEWS: Mention the change in behavior.
+ Reported by Owen Thomas.
+
+2020-02-25 Pádraig Brady <P@draigBrady.com>
+
+ build: update to latest gnulib
+ * bootstrap.conf: Adjust for changes to fchmodat and fchownat,
+ which are now separated from chmodat and chownat respectively.
+
+ b2sum: sync better with upstream
+ * src/blake2/blake2-impl.h: Sync load16() implementation,
+ which doesn't change code generation.
+ Also leverage (builtin) memcpy to more efficiently
+ move data on little endian systems,
+ giving a 2% win with GCC 9.2.1 on an i3-2310M.
+
+ factor: sync longlong.h adjustments from upstream
+ * src/longlong.h: Sync changes from:
+ https://gmplib.org/repo/gmp/log/tip/longlong.h
+ mips64: Provide r6 asm code as default expression yields.
+ arm32: Define sub_ddmmss separately for non-thumb (no rsc instruction).
+ powerpc: Add "CLOBBER" descriptions for some registers.
+ x86: Fix criterion for when to use mulx in umul_ppmm.
+
+ stat,tail: sync file system constants from the linux kernel
+ * src/stat.c: Add magic constants for "binderfs", "dma-buf-fs",
+ "erofs", "ppc-cmm-fs", and "z3fold".
+ * NEWS: Mention the improvement.
+
+2020-02-24 Pádraig Brady <P@draigBrady.com>
+
+ uniq: avoid strcoll() to improve performance and consistency
+ strcoll() is only significant to uniq(1) if it returns 0,
+ and it generally only does so with buggy locales or mismatched
+ locales and data. Some systems may have strcoll()
+ return 0 for equivalent normalized unicode forms,
+ but for consistency across platforms strcoll() is avoided.
+ The various cases are defined in the new test.
+ This is consistent with newer POSIX standards as discussed at:
+ https://www.austingroupbugs.net/view.php?id=963
+
+ * src/uniq.c: s/xstrcoll/memcmp/.
+ * tests/local.mk: Reference the new test.
+ * tests/misc/uniq-collate.sh: Add a new test.
+ * NEWS: Mention the change in behavior.
+ Fixes https://bugs.gnu.org/38627
+
+2020-02-15 Pádraig Brady <P@draigBrady.com>
+
+ doc: clarify that '%a' stat format outputs mode bits
+ * src/stat.c (usage): Mention permission bits rather than
+ "access" so there is no confusion with ACLs etc.
+ Also indicate we output the file type with '%A'.
+ * doc/coreutils.texi (stat invocation): Likewise.
+ Also indicate '%A' is similar to `ls -ld` output.
+ Addresses https://bugs.gnu.org/39613
+
+2020-02-10 Pádraig Brady <P@draigBrady.com>
+
+ tests: fix test for symlink
+ * tests/cp/preserve-gid.sh: s/-l/-L/.
+ Reported by Kamil Dudka
+
+2020-02-09 Kamil Dudka <kdudka@redhat.com>
+
+ tests: ensure tests/cp/preserve-gid.sh works with single binary
+ * tests/cp/preserve-gid.sh: If configured with --enable-single-binary
+ copy the coreutils single binary, instead of the cp one-line launcher.
+
+ Discussed at https://bugzilla.redhat.com/1800597
+ Fixes https://bugs.gnu.org/39485
+
+2020-02-09 Pádraig Brady <P@draigBrady.com>
+
+ maint: avoid syntax-check failure in previous commit
+ * configure.ac: Restrict lines to 80 chars.
+
+2020-02-09 Jim Meyering <meyering@fb.com>
+
+ build: suppress new FP warning from gcc-10.0.1
+ * configure.ac (GNULIB_WARN_CFLAGS): Add -Wno-return-local-addr
+ to avoid FP warning about careadlinkat.c. Discussed starting in
+ https://lists.gnu.org/r/coreutils/2020-02/msg00006.html
+
+2020-02-04 Pádraig Brady <P@draigBrady.com>
+
+ build: update to latest gnulib
+ Pick up recent build fixes to avoid sysctl.h inclusion on glibc systems,
+ restrict the max file size supported by read-file to PTRDIFF_MAX,
+ and to avoid a -Werror=unused failure in test-canonicalize.
+
+ tests: avoid false failure due to varying /proc/kallsyms
+ * tests/cp/proc-short-read.sh: Switch to using /proc/cpuinfo,
+ rather than /proc/kallsyms which was seen to vary in some cases.
+ Fixes https://bugs.gnu.org/39357
+
+2020-02-04 Pádraig Brady <P@draigBrady.com>
+
+ rmdir: fix --ignore-fail-on-non-empty with permissions errors
+ Since v6.10-21-ged5c4e7 `rmdir --ignore-fail-on-non-empty`
+ had reversed the failure status for directories that failed
+ to be removed for permissions reasons. I.E. it would have
+ returned a failure status for such non empty dirs, and vice versa.
+
+ * src/rmdir.c (errno_may_be_non_empty): Rename from the
+ more confusing errno_may_be_empty(), and remove the EEXIST
+ case (specific to Solaris), which is moot here since
+ handled in errno_rmdir_non_empty().
+ (ignorable_failure): Fix the logic error so that
+ _non_ empty dirs are deemed to have ignorable failures.
+ (main): Fix clobbering of errno by is_empty_dir().
+ (remove_parents): Likewise.
+ * tests/rmdir/ignore.sh: Add a test case.
+ * THANKS.in: Add reporter who fixed the errno handling.
+ * NEWS: Mention the bug fix.
+ Fixes https://bugs.gnu.org/39364
+
+2020-02-03 Pádraig Brady <P@draigBrady.com>
+
+ build: avoid vector performance warnings in randperm
+ * configure.ac: Add -Wno-vector-operation-performance to suppress the
+ following gcc-9.2 error in gl/lib/randperm.c:
+ error: vector operation will be expanded piecewise
+
+ build: avoid including sysctl.h on glibc
+ * src/uname.c: Avoid unneeded header with GLIBC,
+ which has been deprecated since glibc-2.30.
+ * src/uptime.c: Likewise.
+
+ ls: support --time=creation to show/sort birth time
+ * src/ls.c (usage): Reorganize help for --time,
+ and add description for --time=birth.
+ (do_statx): Store btime in mtime if available.
+ (get_stat_btime): A new function to read the creation time
+ from the appropriate stat structure member.
+ (cmp_btime): A new function to compare birth time.
+ (print_long_format): Output '?' when birth time unavailable.
+ * doc/coreutils.texi: Document --time={birth,creation}.
+ * tests/local.mk: Reference the new test.
+ * tests/ls/birthtime.sh: Add a new test.
+ * NEWS: Mention the new feature.
+
+2020-01-30 Chris Meyering <christophe.meyering@gmail.com>
+
+ build: rearrange yes(1) code to prevent GCC 10 warning
+ * src/yes.c (main): Convert for loop to do-while in order to indicate
+ that the loop will be run at least once.
+ This avoids the following warning after the second loop:
+ src/yes.c:110:20: error: writing 1 byte into a region of size 0
+
+2020-01-01 Emil Engler <me@emilengler.com>
+
+ maint: add lib/iconv_open-zos.h to .gitignore
+ * .gitignore: Add file newly generated by gnulib commit 49e78fc
+
+2020-01-01 Pádraig Brady <P@draigBrady.com>
+
+ build: auto enable use of openssl with >= version 3
+ * configure.ac: Set --with-openssl=auto-gpl-compat as the default,
+ so that openssl is used for md5sum etc., with openssl >= 3,
+ which is newly licensed under ASL v2.
+ * gnulib: Update to include "auto-gpl-compat" support.
+
+ maint: adjust to split out xstrtol-error gnulib module
+ * bootstrap.conf: Depend on the new module split from xstrtol.
+ * src/df.c: Include "xstrtol-error.h" for xstrtol_fatal.
+ * src/du.c: Likewise.
+ * src/ls.c: Likewise.
+ * src/od.c: Likewise.
+ * src/pr.c: Likewise.
+ * src/sort.c: Likewise.
+
+2020-01-01 Pádraig Brady <P@draigBrady.com>
+
+ maint: update all copyright year number ranges
+ Run "make update-copyright" and then...
+
+ * gnulib: Update to latest with copyright year adjusted.
+ * tests/init.sh: Sync with gnulib to pick up copyright year.
+ * bootstrap: Likewise.
+ * tests/sample-test: Adjust to use the single most recent year.
+
+2019-12-08 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ doc: add example to demonstrate sub-second sleep times
+ * doc/coreutils.texi (sleep invocation): Add an example to demonstrate
+ how to use the floating-point and the scientific notation to sleep
+ for sub-second times, e.g. milli-, micro- and nanoseconds.
+
+ Inspired by Stephane Chazelas in:
+ https://lists.gnu.org/r/coreutils/2019-12/msg00005.html
+
+2019-12-02 Pádraig Brady <P@draigBrady.com>
+
+ maint: fix syntax-check failure from recent adjustment
+ * cfg.mk (old_NEWS_hash): Regenerate after commit v8.31-56-gc1e1965.
+
+2019-12-02 Kamil Dudka <kdudka@redhat.com>
+
+ chcon: do not validate security context if SELinux is disabled
+ * src/chcon.c (main): Skip call of security_check_context()
+ in case SELinux is disabled to avoid unnecessary failure.
+
+ Bug: https://bugzilla.redhat.com/1777831
+
+2019-11-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: remove colon from node name
+ * doc/sort-version.texi (Minus/Hyphen and Colon characters):
+ Rename from “Minus/Hyphen @samp{-} and Colon @samp{:} characters”,
+ as texi2any 6.6 complains about colons in node names.
+
+ shred: modernize documentation
+ * doc/coreutils.texi (shred invocation):
+ Modernize discussion to today’s technology (Bug#38168).
+ * src/shred.c (usage): Omit lengthy duplication of the manual’s
+ discussion of file systems and storage devices, as that became out
+ of sync with the manual. Instead, just cite the manual.
+
+2019-10-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ all: improve parsing of numeric arguments
+ This addresses a longstanding "update all callers" FIXME in
+ lib/xstrtol.c, by having programs check that numbers do not
+ have unknown suffixes. The problem was also reported for
+ 'shuf' by my student Maggie Huang while reimplementing a shuf
+ subset in Python as an exercise in UCLA Computer Science 35L:
+ https://web.cs.ucla.edu/classes/fall19/cs35L/assign/assign3.html
+ This patch also improves the portability of the code to unusual
+ platforms where ULONG_MAX < SIZE_MAX.
+ * NEWS: Mention user-visible changes.
+ * src/chgrp.c (parse_group):
+ * src/chroot.c (parse_additional_groups):
+ * src/du.c (main):
+ * src/install.c (get_ids):
+ * src/join.c (string_to_join_field):
+ * src/ls.c (decode_switches):
+ * src/md5sum.c (split_3):
+ * src/shuf.c (main):
+ * src/sort.c (specify_nthreads):
+ * src/uniq.c (size_opt, main):
+ Use uintmax_t instead of unsigned long, for portability
+ to oddball platforms where unsigned long is not wide enough.
+ * src/du.c (main):
+ * src/expr.c (mpz_init_set_str) [!HAVE_GMP]:
+ * src/install.c (get_ids):
+ * src/ls.c (decode_switches):
+ * src/mknod.c (main):
+ * src/ptx.c (main):
+ * src/shuf.c (main):
+ * src/sort.c (specify_nmerge, specify_nthreads):
+ Reject numbers with suffixes.
+ * src/md5sum.c (split_3): Simplify.
+
+ stdbuf: improve size checking
+ * bootstrap.conf (gnulib_modules): Add minmax.
+ * src/libstdbuf.c: Include stdint.h, minmax.h.
+ (apply_mode): Don’t assume SIZE_MAX <= ULONG_MAX.
+ Improve checking for invalid sizes.
+
+ shuf: improve randperm overflow checking
+ * gl/lib/randperm.c: Include randperm.h first, since it’s the API.
+ Include stdint.h, count-leading-zeros.h, verify.h.
+ (floor_lg): Rename from ceil_log (which was not actually
+ implementing the ceiling!) and implement the floor using
+ count_leading_zeros.
+ (randperm_bound): Use floor_lg, not ceil_log. Use uintmax_t
+ instead of size_t in case the size gets large on a 32-bit host.
+ * gl/modules/randperm (Depends-on): Add count-leading-zeros, stdint.
+
+ build: don’t worry about logical-op checking
+ * configure.ac: Remove code tailoring --enable-gcc-warnings
+ to GCC 4.7 and earlier, as developers no longer need to worry
+ about GCCs that old.
+
+ build: re-enable type-limits checking
+ * configure.ac: When --enable-gcc-warnings is used, omit
+ -Wno-type-limits. The need for -Wno-type-limits has passed, now
+ that intprops.h uses builtin primitives for GCC 5 and later, given
+ that recent GCCs issue type-limits warnings only for non-constant
+ expressions. --enable-gcc-warnings is not intended for use with
+ old compilers, so we can drop -Wno-type-limits now.
+
+2019-10-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ shuf: fix bug with ‘-r -n 0’
+ ‘shuf -r -n 0 file’ would mistakenly read from standard input.
+ Problem reported by my student Jingnong Qu while reimplementing a
+ shuf subset in Python as an exercise in UCLA Computer Science 35L:
+ https://web.cs.ucla.edu/classes/fall19/cs35L/assign/assign3.html
+ * NEWS: Mention the fix. Also, ASCIIfy a previous item.
+ * src/shuf.c (main): Fix bug.
+ * tests/misc/shuf.sh: Add a test case for the bug.
+
+2019-10-09 Jeff Layton <jlayton@kernel.org>
+
+ ls: use statx instead of stat when available
+ statx allows ls to indicate interest in only certain inode metadata.
+ This is potentially a win on networked/clustered/distributed
+ file systems. In cases where we'd have to do a full, heavyweight stat()
+ call we can now do a much lighter statx() call.
+
+ As a real-world example, consider a file system like CephFS where one
+ client is actively writing to a file and another client does an
+ ls --color in the same directory. --color means that we need to fetch
+ the mode of the file.
+
+ Doing that with a stat() call means that we have to fetch the size and
+ mtime in addition to the mode. The MDS in that situation will have to
+ revoke caps in order to ensure that it has up-to-date values to report,
+ which disrupts the writer.
+
+ This has a measurable affect on performance. I ran a fio sequential
+ write test on one cephfs client and had a second client do "ls --color"
+ in a tight loop on the directory that held the file:
+
+ Baseline -- no activity on the second client:
+
+ WRITE: bw=76.7MiB/s (80.4MB/s), 76.7MiB/s-76.7MiB/s (80.4MB/s-80.4MB/s),
+ io=4600MiB (4824MB), run=60016-60016msec
+
+ Without this patch series, we see a noticable performance hit:
+
+ WRITE: bw=70.4MiB/s (73.9MB/s), 70.4MiB/s-70.4MiB/s (73.9MB/s-73.9MB/s),
+ io=4228MiB (4433MB), run=60012-60012msec
+
+ With this patch series, we gain most of that ground back:
+
+ WRITE: bw=75.9MiB/s (79.6MB/s), 75.9MiB/s-75.9MiB/s (79.6MB/s-79.6MB/s),
+ io=4555MiB (4776MB), run=60019-60019msec
+
+ * src/stat.c: move statx to stat struct conversion to new header...
+ * src/statx.h: ...here.
+ * src/ls.c: Add wrapper functions for stat/lstat/fstat calls,
+ and add variants for when we are only interested in specific info.
+ Add statx-enabled functions and set the request mask based on the
+ output format and what values are needed.
+ * NEWS: Mention the Improvement.
+
+2019-10-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ truncate: avoid integer-overflow assumptions
+ * src/truncate.c (do_ftruncate): Simplify overflow checking,
+ and don’t rely on theoretically-nonportable assumptions
+ like assuming that OFF_MAX < UINTMAX_MAX.
+
+ numfmt: avoid unlikely integer overflow
+ * src/numfmt.c (parse_format_string): Report overflow if
+ pad < -LONG_MAX, since that can’t be negated.
+
+ nl: fix integer-overflow bug
+ Problem reported by Roland Illig (Bug#37585)
+ * src/nl.c (print_lineno): Don’t rely on undefined behavior when
+ checking for integer overflow.
+
+ cp: simplify integer overflow checking
+ * src/copy.c (sparse_copy): Use INT_ADD_WRAPV instead
+ of doing overflow checking by hand.
+
+2019-09-08 Pádraig Brady <pbrady@fb.com>
+
+ seq: use faster processing for integer steps from 2 to 200
+ * src/seq.c: (seq_fast): Accept STEP as a parameter and use that
+ to skip the output of generated numbers.
+ (main): Relax to using seq_fast for integer steps between 1 and 200.
+ For larger steps the throughput was faster using the standard
+ incrementing procedure.
+ (cmp): Use the equivalent but faster memcmp for equal len strings.
+ * tests/misc/seq.pl: Update fast path cases.
+ Addresses https://bugs.gnu.org/37241
+
+2019-09-08 Pádraig Brady <P@draigBrady.com>
+
+ maint: use consistent header ordering and spacing in NEWS
+ * NEWS: Move "Changes in behavior" before "New features",
+ and ensure there is only a single blank line between sections.
+
+2019-08-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+
+2019-08-15 Assaf Gordon <assafgordon@gmail.com>
+
+ scripts: document how to build older versions on newer systems
+ Based on https://lists.gnu.org/r/coreutils/2019-08/msg00011.html .
+
+ * scripts/build-older-versions/README.older-versions: Documentation
+ * scripts/build-older-versions/build-older-versions.sh: Helper script.
+ * scripts/build-older-versions/.gitignore: Ignore build directory.
+ * scripts/build-older-versions/coreutils-5.0-on-glibc-2.28.diff,
+ scripts/build-older-versions/coreutils-5.97-on-glibc-2.28.diff,
+ scripts/build-older-versions/coreutils-6.10-on-glibc-2.28.diff,
+ scripts/build-older-versions/coreutils-6.11-on-glibc-2.28.diff,
+ scripts/build-older-versions/coreutils-6.12-on-glibc-2.28.diff,
+ scripts/build-older-versions/coreutils-7.2-on-glibc-2.28.diff,
+ scripts/build-older-versions/coreutils-8.13-on-glibc-2.28.diff,
+ scripts/build-older-versions/coreutils-8.17-on-glibc-2.28.diff,
+ scripts/build-older-versions/coreutils-8.18-on-glibc-2.28.diff,
+ scripts/build-older-versions/coreutils-8.24-on-glibc-2.28.diff,
+ scripts/build-older-versions/coreutils-8.4-on-glibc-2.28.diff: Patches.
+
+2019-08-12 Bruno Haible <bruno@clisp.org>
+
+ build: adjust for recent gnulib pthread changes
+ Discussed in https://lists.gnu.org/r/coreutils/2019-08/msg00030.html .
+
+ * bootstrap.conf (gnulib_modules): Replace 'pthread' with
+ pthread-* modules.
+ * src/sort.c: Remove GNULIB_defined_pthread_functions conditional.
+
+2019-08-11 Assaf Gordon <assafgordon@gmail.com>
+
+ date: mention military timezone changes from gnulib
+ Gnulib commits f1f10d47be8762e4ca17c8957a0520b08d28abfb and
+ 0673d8ab42c9bb0cf618a21b537cdd8fb976fb73 negated the meaning of
+ military timezones parsed in gnu date.
+ See https://lists.gnu.org/r/bug-gnulib/2019-08/msg00005.html and
+ https://lists.gnu.org/r/coreutils/2019-08/msg00021.html
+
+ * NEWS: Mention this user-visible change.
+ * tests/misc/date.pl: Add tests for the new behavior.
+
+2019-08-11 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: add lib/argmatch.h to po/POTFILES.in
+ * po/POTFILES.in (lib/argmatch.h): Add to avoid sc_po_check error:
+ "maint.mk: you have changed the set of files with translatable \
+ diagnostics;"
+
+2019-08-11 Assaf Gordon <assafgordon@gmail.com>
+
+ gnulib: update to latest
+
+2019-08-08 Pádraig Brady <P@draigBrady.com>
+
+ doc: clarify that truncate creates sparse files
+ * src/truncate.c (usage): Explicitly mention "sparse".
+ * doc/coreutils.texi (truncate invocation): Likewise.
+ Addresses https://bugs.gnu.org/36963
+
+2019-08-07 Mike Swanson <mikeonthecomputer@gmail.com>
+
+ dircolors: recognize the WebP image format
+ * src/dircolors.hin: Add .webp for the WebP image format.
+ Fixes https://bugs.gnu.org/36899
+
+2019-08-07 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: fix error in syntax-check checking
+ The previous commit introduced a bug into the following syntax-check,
+ and thus effectively turned it off:
+
+ $ make sc_prohibit_test_calls_print_ver_with_irrelevant_argument; \
+ echo $?
+ prohibit_test_calls_print_ver_with_irrelevant_argument
+ fatal: cannot change to 'grep': No such file or directory
+ 0
+
+ * cfg.mk (sc_prohibit_test_calls_print_ver_with_irrelevant_argument):
+ Remove changing directory, and pass $(srcdir) as argument to 'git -C'.
+
+2019-08-04 Akim Demaille <akim.demaille@gmail.com>
+
+ maint: fix issues in syntax-check
+ * cfg.mk (sc_prohibit_colon_redirection): Don't expect `|` to denote
+ the pipe character in git grep.
+ (sc_tests_executable)
+ (sc_case_insensitive_file_names)
+ (sc_some_programs_must_avoid_exit_failure)
+ (sc_prohibit_test_background_without_cleanup_)
+ (sc_prohibit_test_calls_print_ver_with_irrelevant_argument)
+ (sc_prohibit_test_ulimit_without_require_)
+ (sc_prohibit_test_background_without_cleanup_)
+ (sc_THANKS_in_duplicates)
+ *sc_prohibit_test_calls_print_ver_with_irrelevant_argument):
+ Don't expect builddir to be a descendant of srcdir.
+ (sc_strftime_check): Don't check file size against 0 when "N\nq\n" was
+ already put in the file.
+ * THANKS.in: Remove me.
+
+2019-08-03 Assaf Gordon <assafgordon@gmail.com>
+
+ seq: fix superfluous output line
+ Under certain circumstances seq prints an extra line when the output
+ format has custom format with characters following the printed numbers:
+
+ $ seq -f "%g " 1000000 1000000
+ 1e+06
+ 1e+06
+
+ This is due to the "print_extra_number" logic using strings to determine
+ whether a 'extra number' is needed, but only one string was trimmed
+ when using a custom printf format.
+
+ Prompted by https://lists.gnu.org/r/coreutils/2019-08/msg00001.html
+
+ * NEWS: Mention fix.
+ * src/seq.c (print_numbers): Trim the 'x0_str' string before comparing
+ it to the previous 'x_str' string.
+ * tests/misc/seq-extra-number.sh: Add this scenario.
+ * tests/local.mk (all_tests): Add new test.
+
+2019-07-22 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ doc: improve new version sort chapter
+ * doc/sort-version.texi: Fix some typos, avoid overly long lines in
+ the generated PDF, enclose some sample strings in @samp{...} for better
+ readability, etc. This also avoids an sc-avoid-builtin error:
+ s/builtin/built-in/
+
+2019-07-15 Assaf Gordon <assafgordon@gmail.com>
+
+ doc: add "version sort ordering" chapter
+ * doc/sort-version.texi: New file.
+ * doc/local.mk (doc_coreutils_TEXINFOS): Add new file.
+ * doc/coreutils.texi: @include new file, replace previous "Details about
+ version sort" section.
+
+2019-07-12 Andreas Dilger <adilger@whamcloud.com>
+
+ stat: don't explicitly request file size for filenames
+ When calling 'stat -c %N' to print the filename, don't explicitly
+ request the size of the file via statx(), as it may add overhead on
+ some filesystems. The size is only needed to optimize an allocation
+ for the relatively rare case of reading a symlink name, and the worst
+ effect is a somewhat-too-large temporary buffer may be allocated for
+ areadlink_with_size(), or internal retries if buffer is too small.
+
+ The file size will be returned by statx() on most filesystems, even
+ if not requested, unless the filesystem considers this to be too
+ expensive for that file, in which case the tradeoff is worthwhile.
+
+ * src/stat.c: Don't explicitly request STATX_SIZE for filenames.
+
+2019-06-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ od: use fseek on non-regular files
+ Problem reported by Szőts Ákos (Bug#36291).
+ * NEWS: Mention this.
+ * src/od.c (skip): Try fseek even on files that do not have usable
+ sizes, falling back on fread if fseek fails.
+
+2019-06-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: mention ls -l user/group justification
+ * doc/coreutils.texi (What information is listed):
+ Document justification of user and group columns in ls -l output
+ (Bug#36220).
+
+2019-06-14 Jeff Layton <jlayton@kernel.org>
+
+ stat: fix enabling of statx logic
+ * src/stat.c: STATX_INO isn't defined until stat.h is included.
+ Move the test down so it works properly.
+
+2019-06-13 Assaf Gordon <assafgordon@gmail.com>
+
+ tests: avoid false-positive in date-debug test
+ When debugging an invalid date due to DST switching, the intermediate
+ 'normalized time' should not be checked - its value can differ between
+ systems (e.g. glibc vs musl).
+
+ Reported by Niklas Hambüchen in
+ https://lists.gnu.org/r/coreutils/2019-05/msg00031.html
+ Analyzed by Rich Felker in
+ https://lists.gnu.org/r/coreutils/2019-05/msg00039.html
+
+ * tests/misc/date-debug.sh: Replace the exact normalized time
+ with 'XX:XX:XX' so different values would not trigger test failure.
+
+2019-06-10 Jeff Layton <jlayton@kernel.org>
+
+ stat: Use statx where available and support --cached
+ * src/stat.c: Drop statbuf argument from out_epoch_sec().
+ Use statx() rather than [lf]stat() where available,
+ so a separate call is not required to get birth time.
+ Set STATX_* mask bits only for things we want to print,
+ which can be more efficient on some file systems.
+ Add a new --cache= command-line option that sets the appropriate hint
+ flags in the statx call. These are primarily used with network
+ file systems to indicate what level of cache coherency is desired.
+ The new option is available unconditionally for better portability,
+ and ignored where not implemented.
+ * doc/coreutils.texi: Add documention for --cached.
+ * man/stat.x (SEE ALSO): Mention statx().
+ * NEWS: Mention the new feature.
+
+2019-06-09 Pádraig Brady <P@draigBrady.com>
+
+ doc: fix description of tail -f on truncated files
+ * doc/coreutils.texi (tail invocation): Update to match
+ the new behavior following commit v8.23-189-gb28ff6a
+
+2019-06-08 Pádraig Brady <P@draigBrady.com>
+
+ split: fix failure for certain number of specified files
+ * src/split.c (set_suffix_length): Use a more standard
+ zero based logN calculation for the number of units.
+ * tests/split/suffix-auto-length.sh: Add a test case.
+ * THANKS.in: Mention the reporter.
+ * NEWS: Mention the fix.
+ Fixes https://bugs.gnu.org/35291
+
+2019-05-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ dd: be more careful about signal handling
+ Problem reported by Hans Henrik Bergan (Bug#36007).
+ * NEWS: Mention this.
+ * src/dd.c (iclose, ifdatasync, ifstat, ifsync):
+ New functions, which are more careful about SIGINT.
+ (cleanup): Use iclose instead of close.
+ (finish_up): Process signals first.
+ (skip, dd_copy, main): Use ifstat instead of fstat.
+ (dd_copy): Use ifdatasync and ifsync instead of fdatasync and fsync.
+
+ maint: fix version number in NEWS
+
+2019-05-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ cp: fix /dev/stdin problem on Solaris
+ Problem reported by Jakub Kulik (Bug#35713).
+ * NEWS: Mention this.
+ * configure.ac (DEV_FD_MIGHT_BE_CHR): New macro.
+ * src/copy.c (DEV_FD_MIGHT_BE_CHR): Default to false.
+ (follow_fstatat): New function.
+ (copy_internal): Use it.
+ * src/copy.h (XSTAT): Remove; no longer used.
+
+2019-05-26 Kevin Locke <kevin@kevinlocke.name>
+
+ doc: clarify dd sparse detection is by *output* block
+ The wording of the dd --help text suggests that output will be skipped
+ for sparse *input* blocks (i.e. that NUL-checking is done on input
+ blocks) while the code actually checks/skips all-NUL *output* blocks.[1]
+
+ * src/dd.c (usage): Update the --help text to clarify the above.
+ * tests/dd/sparse.sh: Ensure sparseness is controlled with obs.
+
+ [1]: https://superuser.com/a/1136358
+
+2019-05-22 Martin Castillo <castilma@uni-bremen.de>
+
+ doc: fix typo in sort set operations example
+ * doc/coreutils.texi (sort invocation): Add a missing -u
+ option to uniq.
+ Addresses https://bugs.gnu.org/35849
+
+2019-05-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ b2sum: port blake2b-ref.c to HP-UX aCC
+ Continue the fix for Bug#35650.
+ * src/blake2/blake2b-ref.c [HAVE_CONFIG_H]: Include <config.h>.
+
+2019-05-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ b2sum: sync better with upstream
+ * src/blake2/b2sum.c: Reorder source code to minimize diffs from:
+ https://github.com/BLAKE2/BLAKE2/blob/master/b2sum/b2sum.c
+
+ b2sum: port to HP-UX aCC
+ Its support for the -include option is flaky. Problem reported by
+ Michael Osipov (Bug#35650). Plus, we could run into other
+ compilers that don’t support any option like -include. Change the
+ code so that -include is not needed. Although this causes us to
+ depart from the upstream version, we’re already doing that for
+ other reasons.
+ * configure.ac (USE_XLC_INCLUDE): Remove, as there’s no
+ guarantee a compiler will support something like -include.
+ * src/blake2/b2sum.c [HAVE_CONFIG_H]: Include <config.h>.
+ * src/local.mk (src_b2sum_CPPFLAGS): Add -DHAVE_CONFIG_H.
+ Do not use -include or a substitute.
+
+2019-05-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ stdbuf: port configure-time checking to HP-UX aCC
+ Problem reported by Michael Osipov (Bug#35650).
+ * configure.ac: Use AC_LANG_WERROR to pay attention to compiler
+ and linker warnings when testing whether stdbuf will work.
+
+2019-05-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ b2sum: port to HP-UX C
+ * src/blake2/blake2.h (BLAKE2_PACKED):
+ Don’t assume __attribute__ ((packed)) works on non-Microsoft
+ compilers. Instead, assume it works only if we have good
+ reason to assume so, and fall back on Microsoft (or not packing)
+ otherwise. In practice, not packing is good enough and the
+ BLAKE2_PACKED macro is mostly just for documentation.
+
+ cp: port fiemap.h to C99
+ * src/extent-scan.c (extent_scan_read): Adjust to change in
+ struct fiemap.
+ * src/fiemap.h (struct fiemap): Use FLEXIBLE_ARRAY_MEMBER
+ to port to C99.
+
+ basenc: port to C99
+ * src/basenc.c: Various minor style cleanups.
+ (struct base_decode_context): Do not use anonymous unions, as
+ they’re not in C99. Use a named union instead. All uses changed.
+
+ maint: adjust to recent verify_true removal
+ * src/system.h (X2NREALLOC, X2REALLOC, DECIMAL_DIGIT_ACCUMULATE):
+ Use verify_expr instead of verify_true, which has been removed.
+ (DECIMAL_DIGIT_ACCUMULATE): Remove unnecessary size check.
+
+ build: update gnulib submodule to latest
+
+2019-04-19 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ gnulib: update to the latest
+ * gnulib: Update to latest, mainly for:
+ > mountlist: make parsing /proc/self/mountinfo more robust
+ * NEWS: Mention the fix.
+
+ Fixes https://bugs.gnu.org/33468
+
+2019-03-31 Shugo Maeda <shugo@ruby-lang.org>
+
+ factor: output immediately if stdout is a tty but stdin is not
+ * src/factor.c (lbuf_putc): Use line buffered mode if the standard
+ output is a terminal in the same way as the stdio library.
+ User programs might use pty only for the standard out
+ like the example of Ruby's PTY module:
+ https://docs.ruby-lang.org/en/2.6.0/PTY.html#module-PTY-label-Example
+ * NEWS: Mention the fix.
+ Fixes https://bugs.gnu.orv/35046
+
+2019-03-30 Pádraig Brady <P@draigBrady.com>
+
+ maint: fix syntax check failure
+ * src/ln.c: Remove leading TAB.
+
+2019-03-30 Martin Castillo <castilma@uni-bremen.de>
+
+ maint: tee: use STDIN_FILENO rather than 0
+ * src/tee.c (tee_files): Use the name rather than the value.
+ Addresses https://bugs.gnu.org/35041
+
+2019-03-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ dd: improve doc of stderr output
+ * doc/coreutils.texi (dd invocation):
+ Document stderr output more carefully.
+ Say that conv=block can lose input data.
+
+2019-03-18 Kamil Dudka <kdudka@redhat.com>
+
+ md5sum,b2sum,sha*sum: --help: add note about binary/text mode
+ * src/md5sum.c (usage): Make it clear that there is no difference
+ between binary mode and text mode on GNU systems.
+
+ Bug: https://bugzilla.redhat.com/406981
+ Bug: https://bugzilla.redhat.com/1688740
+
+2019-03-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: add NEWS item for Solaris symlink fix
+
+ ln: port to symlink ("x", ".") failing with EINVAL
+ Problem reported by John Marino (Bug#34894).
+ * src/ln.c (main): Port ln -s to Solaris symlink function,
+ where symlink ("x", ".") fails with errno == EINVAL.
+
+2019-03-16 Pádraig Brady <P@draigBrady.com>
+
+ doc: add a NEWS entry for the ln O_DIRECTORY fix
+ * NEWS: Mention the bugfix.
+
+2019-03-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ ln: port to platforms lacking O_DIRECTORY
+ * src/ln.c (main): Port to older platforms lacking
+ support for POSIX.1-2008’s O_DIRECTORY flag (Bug#34876).
+
+2019-03-15 Kamil Dudka <kdudka@redhat.com>
+
+ doc: improve wording of the --kibibytes option description
+ Bug: https://bugzilla.redhat.com/1527391 , https://bugs.gnu.org/33646
+
+ * doc/coreutils.texi (General output formatting): Improve wording of
+ '--kibibytes' option.
+
+2019-03-11 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: sync extra files from gnulib
+ Some files are physically copied from gnulib, and should get sync'ed
+ after each update to latest gnulib. This was forgotten during recent
+ updates.
+
+ * COPYING: Merge from gnulib/doc/COPYINGv3.
+ * tests/init.sh: Merge from gnulib/tests/init.sh.
+
+2019-03-11 Pádraig Brady <P@draigBrady.com>
+
+ maint: post-release administrivia
+ * NEWS: Add header line for next release.
+ * .prev-version: Record previous version.
+ * cfg.mk (old_NEWS_hash): Auto-update.
+
+2019-03-10 Pádraig Brady <P@draigBrady.com>
+
+ version 8.31
+ * NEWS: Record release date.
+
+ tests: test-N: include subsecond values in gating check
+ * tests/misc/test-N.sh: The subsecond values for atime and mtime
+ were potentially seen to differ on newlyl created files.
+ So we include the subsecond portion when comparing stat values.
+
+ tests: wc-nbsp: fix false failures on various systems
+ * tests/misc/wc-nbsp.sh: Add gating checks for all characters,
+ as there are disparate classifications on various systems:
+ SunOS 5.10 treats \u202F, \u2060 as !iswprint()
+ SunOS 5.10 treats \u00A0, \u2007 as iswspace()
+ AIX 7.2, Darwin 17.4.0, NetBSD 7.1 treat \u2060 as !iswprint()
+
+2019-03-07 Pádraig Brady <P@draigBrady.com>
+
+ tests: tail-2/pipe-f: avoid false failure closing stdout
+ * tests/tail-2/pipe-f.sh: Check closing stdout with >&-
+ is effective, which avoids a false failure on NetBSD 7.1
+ Reported by Assaf Gordon
+
+ tests: tac-2-nonseekable: ensure we don't block indefinitely
+ * tests/misc/tac-2-nonseekable.sh: Add a timeout to both
+ protect and check whether we can close stdin correctly.
+
+ tests: id/zero: avoid false failure due to sed differences
+ * tests/id/zero.sh: sed on OSX will output a \n even
+ if the input doesn't have a \n on the last "line".
+ So ensure we always have a trailing '\n' to avoid the disparity.
+
+2019-03-07 Pádraig Brady <P@draigBrady.com>
+
+ tests: test-N: fix false positives on some systems
+ Testing by Assaf Gordon on OSX showed the atime wasn't
+ being updated when explicitly set back in time.
+ Also Debian 8.11 / mips64 was seen to not update the
+ mtime when truncating an empty file.
+
+ * tests/misc/test-N.sh: Isolate from different timestamping
+ behaviors of various (file) systems, by correlating
+ the timestamps with stat(1) before using `test -N`.
+
+2019-03-07 Assaf Gordon <assafgordon@gmail.com>
+
+ doc: replace @hashchar{} with actual hash character
+ Very old makeinfo-4.13 fails with:
+ ./doc/coreutils.texi:2286: Unknown command `hashchar'.
+ ./doc/coreutils.texi:2286: Misplaced {.
+ ./doc/coreutils.texi:2286: Misplaced }.
+
+ Reported Bernhard Voelker in
+ https://lists.gnu.org/r/coreutils/2019-03/msg00016.html .
+
+ * doc/coreutils.texi (basenc invocation): Replace @hashchar{} with
+ actual hash character. The special syntax is only required
+ when referring to #line directives.
+
+2019-03-06 Pádraig Brady <P@draigBrady.com>
+
+ build: avoid statx related build failure on AIX
+ * src/stat.c (get_birthtime): Check also for STATX_BTIME define,
+ as a different statx is available on AIX 7.2.
+
+ tests: wc-nbsp.sh: avoid failure on FreeBSD
+ * tests/misc/wc-nbsp.sh: FreeBSD and OS X don't
+ treat non breaking space as printable characters.
+ So use wc -L to determine printability before
+ testing non breaking space functionality.
+
+ build: fix env build where SIGNUM_BOUND is not constant
+ * src/env.c (initialize_signals): A new function to initialize
+ the signals array on the heap, to avoid a build failure on
+ opensolaris, where SIGNUM_BOUND is not a constant.
+
+2019-03-04 Pádraig Brady <P@draigBrady.com>
+
+ doc: remove older ChangeLog items
+ * Makefile.am: Update the oldest documented version
+ to 8.22 which is now about 5 years old.
+
+ build: revert recent change with distributed man page handling
+ * man/local.mk: commit f114495e added an extra check to ensure
+ a binary was working before using it to generate the man page.
+ However this was not working for the false(1) command,
+ and also one can generally specify that one should not
+ be using generated commands on the current system by passing
+ 'cross_compiling=yes' to the configure invocation.
+
+ env: add --list-signal-handling to output non default handling
+ * src/env.c (main): Output blocked or ignored signals
+ before a command is executed.
+ * doc/coreutils.texi (env invocation): Add the option.
+ * tests/misc/env-signal-handler.sh: Add a test case.
+ * NEWS: Mention the new feature.
+
+2019-03-04 Assaf Gordon <assafgordon@gmail.com>
+
+ env: new options --{default,ignore,block}-signal[=SIG]
+ New options to set signal handlers for the command being executed.
+ --block-signal suggested by Paul Eggert in http://bugs.gnu.org/34488#71
+ --default-signal is useful to overcome the POSIX limitation that shell
+ must not override inherited signal state, e.g. the second 'trap' here is
+ a no-op:
+
+ trap '' PIPE && sh -c 'trap - PIPE ; seq inf | head -n1'
+
+ Instead use:
+
+ trap '' PIPE && sh -c 'env --default-signal=PIPE seq inf | head -n1'
+
+ Similarly, the following will prevent CTRL-C from terminating the
+ program:
+
+ env --ignore-signal=INT seq inf > /dev/null
+
+ See https://bugs.gnu.org/34488#8
+
+ * NEWS: Mention new options.
+ * doc/coreutils.texi (env invocation): Document new options.
+ * man/env.x: Add example of --default-signal=SIG usage.
+ (SEE ALSO): Mention sigprocmask.
+ * src/env.c (signals): New global variable.
+ (longopts): Add new options.
+ (usage): Print new options.
+ (parse_signal_params): Parse comma-separated list of signals, store in
+ signals variable.
+ (reset_signal_handlers): Set each signal to SIG_DFL/SIG_IGN.
+ (parse_block_signal_params): Parse command-line options.
+ (set_signal_proc_mask): Call sigprocmask to block/unblock signals.
+ (main): Process new options.
+ * src/local.mk (src_env_SOURCES): Add operand2sig.c.
+ * tests/misc/env-signal-handler.sh: New test.
+ * tests/local.mk (all_tests): Add new test.
+
+2019-03-04 Martin Bukatovic <martin.bukatovic@gmail.com>
+
+ stat: print birth time on systems supporting statx
+ * configure.ac: Check for statx(), available on glibc >= 2.28.
+ * src/stat.c (get_birthtime): Call statx() when available.
+ * NEWS: Mention the improvement.
+
+2019-03-04 Pádraig Brady <P@draigBrady.com>
+
+ df: support different file system encodings when not using tty
+ * src/df.c (replace_problematic_chars): A new wrapper to be
+ more conservative in our replacement when not connected to a tty.
+ * tests/df/problematic-chars.sh: Add a test case.
+
+ maint: tidy up recent additions to NEWS
+ * NEWS: Move date change to improvements and fix nohup grammar.
+
+2019-02-27 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ doc: further clarify 'yes' alternative in seq invocation
+ * doc/coreutils.texi (node seq invocation): Clarify to use the tool
+ 'yes'; otherwise the reader may interpret the sentence as if one
+ could pass 'yes' as the INCREMENT value.
+
+2019-02-26 Pádraig Brady <P@draigBrady.com>
+
+ wc: treat non breaking space as a word separator
+ * src/wc.c (iswnbspace): A new function to match
+ characters in this class.
+ (isnbspace): Likewise for single byte charsets.
+ (main): Initialize posixly_correct from the environment,
+ to allow disabling honoring NBSP in non C locales.
+ (wc): Call is[w]nbspace() along with is[w]space.
+ * bootstrap.conf: Ensure btowc is available.
+ * tests/misc/wc-nbsp.sh: A new test.
+ * tests/local.mk: Reference the new test.
+ * NEWS: Mention the change in behavior.
+
+2019-02-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: more date +%F clarifications
+ * doc/coreutils.texi (Date conversion specifiers):
+ Plain %F is actually like %+4Y-%m-%d.
+ (Padding and other flags): Mention POSIX restrictions.
+ * src/date.c (usage): Document recent changes.
+
+ doc: give date +%+F example
+ * doc/coreutils.texi (Padding and other flags):
+ Give example for + conversion specification.
+
+ doc: fix typo in previous patch
+
+ date: ‘+’ conversion specification flag
+ The recent Gnulib update fixed Bug#34608; document and test this.
+ * NEWS: Mention the change.
+ * doc/coreutils.texi (Padding and other flags):
+ Update doc to cover new flag and other POSIX.1-2017 changes.
+ * tests/misc/date.pl (date-century-plus): New test.
+
+ build: update gnulib submodule to latest
+
+2019-02-24 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ all: detect --help and --version more consistently
+ For select programs which accept only --help and --version options
+ (in addition to non-option arguments), process these options before
+ any other options.
+
+ Before:
+
+ $ dd bs=1 --help
+ dd: unrecognized option '--help'
+ Try 'dd --help' for more information.
+
+ $ yes me --help
+ me --help
+ me --help
+ ...
+
+ After:
+ Any occurrence of '--help' in the arguments (prior to '--') will
+ show the help screen.
+
+ Discussed in https://bugs.gnu.org/33468 .
+
+ * NEWS: Mention change.
+ * src/cksum.c, src/dd.c, src/hostid.c, src/hostname.c, src/link.c,
+ src/logname.c, src/nohup.c, src/sleep.c, src/tsort.c, src/unlink.c,
+ src/uptime.c, src/users.c, src/whoami.c, src/yes.c (main): Replace
+ parse_long_options() + getopt_long() calls with
+ parse_gnu_standard_options_only(); Remove <getopt.h> inclusion;
+ Remove empty 'struct long_options' variable;
+ * tests/misc/help-version-getopt.sh: Add test.
+ * tests/local.mk (all_tests): Reference it.
+
+2019-02-24 Pádraig Brady <P@draigBrady.com>
+
+ gnulib: update to the latest
+ update to a version with parse_gnu_standard_options_only()
+
+2019-02-20 Martin Castillo <castilma@uni-bremen.de>
+
+ doc: fix join examples in texinfo
+ * doc/coreutils.texi (join invocation): Fix various errors.
+ Fixes https://bugs.gnu.org/34583
+ Fixes https://bugs.gnu.org/34584
+
+2019-02-19 Daming Yang <lion@aosc.io>
+
+ ls: better align month abbreviations containing digits
+ * src/ls.c (abmon_init): Align numeric abbreviations right.
+ * NEWS: Mention the improvement.
+
+2019-02-18 Pádraig Brady <P@draigBrady.com>
+
+ sort: clarify in --debug; only text comparisons affected
+ * src/sort.c (main): Adjust the debug info regarding locales,
+ to clarify that only textual comparisons are affected.
+ * tests/misc/sort-debug-warn.sh: Adjust accordingly.
+ Fixes https://bugs.gnu.org/34490
+
+2019-02-12 Pádraig Brady <P@draigBrady.com>
+
+ comm,join: ensure warnings are apparent upon exit
+ * src/comm.c (main): Output a warning right before exit,
+ in case previous errors have scrolled from view.
+ * src/join.c (main): Likewise.
+ * tests/misc/comm.pl: Addjust accordingly.
+ * tests/misc/join.pl: Likewise.
+ Fixes https://bugs.gnu.org/34347
+
+2019-02-12 Filipp Gunbin <fgunbin@fastmail.fm>
+
+ doc: fix typo referencing RFC 2822
+ * doc/coreutils.texi (date invocation): s/822/2822/.
+ Fixes https://bugs.gnu.org/34438
+
+2019-02-11 Pádraig Brady <P@draigBrady.com>
+
+ gnulib: update to use new strtold module
+ * gnulib: Update to make the new strtold module available.
+ * bootstrap.conf: strtod is now a dependency of c-strtod,
+ which in turn is a dependency of cl-strtod. This treats
+ strtold and strtod similarly.
+ * gl/lib/cl-strtod.c: Adjust to assume strtold is available.
+ * tests/misc/sort-float.sh: Likewise.
+ * src/sort.c: Likewise.
+ (nan_compare): Adjust comment to indicate
+ we still have to init padding bits as per
+ https://sourceware.org/bugzilla/show_bug.cgi?id=13246
+
+2019-02-04 Pádraig Brady <P@draigBrady.com>
+
+ seq: output decimal points consistently with invalid locales
+ * src/seq.c (print_numbers): Only reset the locale if it
+ was successfully set originally.
+ * tests/misc/seq-locale.sh: Add a new test.
+ * tests/local.mk: Reference the new test.
+ * NEWS: Mention the fix.
+
+ build: ensure sys/select.h is included
+ bootstrap.conf: Explicitly depend on select, rather than transitively.
+ * src/tail.c: Unconditionally include select.h as we use select()
+ outside inotify contexts now.
+
+ stat,tail: fix android build and support inotify
+ * src/extract-magic: Treat android like linux,
+ which fixes the build by ensuring the constants are defined.
+ * src/stat.c: Support all constants on android, including
+ the android specific "sdcardfs".
+ * src/tail.c: Fix inclusion of statfs headers to be independent
+ of inotify availability, as fremote() is used on linux even
+ if inotify has been disabled. Also enable fremote() on android.
+ * NEWS: Mention the improvment.
+ Fixes https://bugs.gnu.org/34239
+
+2019-01-31 Pádraig Brady <P@draigBrady.com>
+
+ tests: add test for locale decimal processing
+ * tests/misc/sleep.sh: Check locale processing of printf, sleep,
+ and timeout, when the french locale data is available.
+
+2019-01-31 Pádraig Brady <P@draigBrady.com>
+
+ build: fix recent build failure on systems without strtold
+ Recently introduced in commit v8.30-50-geb73e23
+
+ * gl/lib/cl-strtod.c: Fall back to strtod() on systems
+ without strtold() (like we already do in sort).
+
+2019-01-28 Pádraig Brady <P@draigBrady.com>
+
+ maint: fix new syntax-check failure from recent change
+ * cfg.mk: Exclude cl-strtold.c wrapper from requiring config.h
+
+2019-01-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ printf,seq: remove c-strtod dependency
+ * gl/modules/cl-strtold (Files): Add lib/cl-strtod.c, lib/cl-strtod.h.
+ (Depends-on): Remove cl-strtod.
+ (configure.ac): Redquire AC_C_RESTRICT.
+
+ printf,seq: improve long double accuracy
+ This fixes a thinko in the previous patch.
+ * gl/lib/cl-strtod.c (STRTOD): New macro.
+ (CL_STRTOD): Use it.
+
+ printf,seq,sleep,tail,timeout: accept current-locale floats
+ These commands now accept floating-point numbers in the
+ current locale, as well as in the C locale.
+ Compatibility problem reported by Robert Elz.
+ * NEWS: Document this.
+ * bootstrap.conf (gnulib_modules): Add cl-strtod, cl-strtold.
+ Remove c-strtold.
+ * doc/coreutils.texi (Floating point, tail invocation)
+ (printf invocation, timeout invocation, sleep invocation)
+ (seq invocation): Document this.
+ * gl/lib/cl-strtod.c, gl/lib/cl-strtod.h, gl/lib/cl-strtold.c:
+ * gl/modules/cl-strtod, gl/modules/cl-strtold: New files.
+ * src/printf.c, src/seq.c, src/sleep.c, src/tail.c, src/timeout.c:
+ Include cl-strtod.h instead of c-strtod.
+ * src/printf.c (vstrtold):
+ * src/seq.c (scan_arg, print_numbers):
+ * src/sleep.c (main):
+ * src/tail.c (parse_options):
+ * src/timeout.c (parse_duration):
+ Use cl_strtold instead of c_strtold.
+
+2019-01-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: update Goldberg URL
+ * doc/coreutils.texi (Floating point): Update URL.
+
+ sleep: improve doc
+ Problem reported by Robert Elz.
+ * doc/coreutils.texi (sleep invocation):
+ Say that arguments must be non-negative, which means they cannot
+ be arbitrary floating-point numbers. Mention POSIX, not
+ “historical implementations” that are no longer of practical
+ interest. List the extensions to POSIX.
+ * src/sleep.c (usage): Omit needless words, removing dubious
+ commentary about “most implementations” and incorrect commentary
+ about “arbitrary”. Details about exactly which numbers are
+ allowed can be found in the documentation.
+
+2019-01-20 Pádraig Brady <P@draigBrady.com>
+
+ tail: fix handling of broken pipes with SIGPIPE ignored
+ * init.cfg (trap_sigpipe_or_skip_): A new function refactored from...
+ * tests/misc/printf-surprise.sh: ...here.
+ * tests/misc/seq-epipe.sh. Likewise.
+ * src/tail.c (die_pipe): Ensure we exit upon sending SIGPIPE.
+ * tests/tail-2/pipe-f.sh: Ensure we exit even if SIGPIPE is ignored.
+ * NEWS: Mention the bug fix.
+
+2019-01-20 Ayappan <ayappap2@in.ibm.com>
+
+ tail: fix recent ineffective AIX change
+ * src/tail.c: Fix commit v8.30-40-gd5ab4cb which was ineffective.
+ Fixes http://bugs.gnu.org/33946
+
+2019-01-20 Pádraig Brady <P@draigBrady.com>
+
+ build: ensure VLAs are not used
+ Fail developer builds if VLAs are used,
+ as there are portability concerns to consider with them.
+
+ * configure.ac: Enable -Wvla which is implicit in the full list added.
+ * m4/jm-macros.m4: Define GNULIB_NO_VLA which disables use of
+ VLAs within gnulib code.
+
+2019-01-20 Pádraig Brady <P@draigBrady.com>
+
+ gnulib: update to the latest
+ * gnulib: Update to a version supporting GNULIB_NO_VLA
+ * bootstrap: Sync with latest
+
+2019-01-16 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ build: use distributed man pages when running with --help fails
+ When building against an incompatible GLIBC version compared to that
+ on the build host, then running the just-built binary might fail
+ although it is the same platform - thus CROSS_COMPILING is false.
+ As a result, generating the man pages fails.
+
+ * man/local.mk (.x.1): Add a check to verify that running the utility
+ with --help succeeds, otherwise falling back to using 'dummy-man'.
+
+2019-01-13 Pádraig Brady <P@draigBrady.com>
+
+ ls: with --group-directories-first, also group symlinked dirs
+ * src/ls.c (is_linked_directory): A new function to
+ also consider symlinked directories.
+ (main): Rename check_symlink_color to check_symlink_mode,
+ and enable that with --group-directories-first.
+ (DIRFIRST_CHECK): Adjust to use is_linked_directory,
+ rather than just is_directory.
+ (gobble_file): Simplify to always update f->linkmode
+ if the stat() succeeds.
+ * tests/ls/group-dirs.sh: A new test.
+ * tests/local.mk: Reference the new test.
+ * NEWS: Mention the change in behavior.
+ Suggested by Amin Bandali in
+ https://lists.gnu.org/r/coreutils/2018-12/msg00017.html
+
+ tail: don't exit immediately with filters on AIX
+ * src/tail.c: Fix the check_output_available check on AIX.
+ Note we don't use poll for all systems as the overhead
+ of adding the gnulib poll module wouldn't be worth it
+ just for this single use.
+ * tests/tail-2/pipe-f.sh: Fix the test which always passed
+ due to only the exit code of sleep being checked.
+ * NEWS: Mention the bug fix and rearrange alphabetically.
+ Fixes http://bugs.gnu.org/33946
+
+2019-01-06 Assaf Gordon <assafgordon@gmail.com>
+
+ basenc: allocate buffers on heap
+ Allocate the encoding/decoding buffers dynamically on the heap instead
+ of using variable-length-array (VLA) on the stack.
+ Discussed in https://lists.gnu.org/r/coreutils/2019-01/msg00004.html .
+
+ * src/basenc.c (do_encode,do_decode): Allocate inbuf/outbuf using
+ xmalloc, and free if using LINT.
+
+2019-01-04 Pádraig Brady <P@draigBrady.com>
+
+ doc: adjust URLs in help to avoid wrapping
+ * src/system.h: Adjust lines containing URLs so that
+ they don't wrap on 80 column terminals. One could also
+ use .UR macros, but these aren't universally available.
+ Note the adjustments here need to be compatible with
+ the pattern matching done in help2man.
+ Addresses https://bugs.gnu.org/33914
+
+2019-01-01 Assaf Gordon <assafgordon@gmail.com>
+
+ maint: update all copyright year number ranges
+ Run "make update-copyright" and then...
+
+ * gnulib: Update to latest with copyright year adjusted.
+ * tests/init.sh: Sync with gnulib to pick up copyright year.
+ * bootstrap: Likewise.
+ * tests/sample-test: Adjust to use the single most recent year.
+
+2019-01-01 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: mention base32 in the title line of common basenc.c
+ * src/basenc.c: Do the above, and remove a redundant comment.
+
+2019-01-01 Assaf Gordon <assafgordon@gmail.com>
+
+ base64,base32: fix 'extra operand' error message
+ In the following invocation, 'a' is the input file, and 'b' is the extra
+ operand:
+
+ $ base64 a b
+
+ Report 'b' in the error message instead of 'a':
+
+ $ base64 a b
+ base64: extra operand 'b'
+
+ Discussed in https://lists.gnu.org/r/coreutils/2018-12/msg00008.html .
+
+ * src/basenc.c (main): If there is more than one non-option operand,
+ report the second one (assuming the first is a the input file name).
+ * tests/misc/base64.pl: Add tests.
+ * tests/misc/basenc.pl: Adjust expectedc error message in tests.
+ * NEWS: Mention bugfix.
+
+2018-12-31 Pádraig Brady <P@draigBrady.com>
+
+ doc: mention that more than 8 colors are supported by ls
+ * src/dircolors.hin: Mention any codes supported by the terminal
+ are allowed.
+ Addresses https://bugs.gnu.org/33915
+
+2018-12-28 Assaf Gordon <assafgordon@gmail.com>
+
+ basenc: A new program complementary to base64/base32
+ Encodes/decodes data in various common formats:
+ base64,base64url,base32,base32,base16,base2,z85.
+
+ Discussed here:
+ https://lists.gnu.org/r/coreutils/2018-11/msg00014.html
+ https://lists.gnu.org/r/coreutils/2018-12/msg00019.html
+
+ * AUTHORS: Add basenc.
+ * README: Reference the new program.
+ * NEWS: Mention the new program.
+ * build-aux/gen-lists-of-programs.sh: Add basenc.
+ * doc/coreutils.texi: (basenc invocation): Document the new command.
+ * man/.gitignore: Ignore the generated man page.
+ * man/basenc.x: A new template, with few examples.
+ * man/local.mk: Reference the new man page.
+ * scripts/git-hooks/commit-msg: Allow basenc as program prefix.
+ * src/.gitignore: Ignore the new binary.
+ * src/basenc.c:
+ (usage): Mention new options.
+ (main): Handle new options.
+ (isbase*, base*_length, base*_encode, base*_decode_ctx): Implement new
+ encoding/decoding formats.
+ * src/local.mk: Add new program.
+ * tests/local.mk: Add new test.
+ * tests/misc/basenc.pl: New tests.
+ * tests/misc/help-version.sh (basenc_setup): use '--version' for default
+ invocation (basenc errors with no parameters).
+
+2018-12-21 Assaf Gordon <assafgordon@gmail.com>
+
+ maint: rename base64.c to basenc.c
+ In preparation for adding 'basenc' program.
+ Suggested in https://lists.gnu.org/r/coreutils/2018-11/msg00019.html .
+
+ * src/base64.c: Rename to src/basenc.c.
+ * src/local.mk: Update base*_SOURCES definitions.
+ * po/POTFILEs.in: Rename base64 to basenc.
+
+2018-12-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ shred,sort,split: add NEWS item
+
+ shred,sort,split: fix ftruncate error reporting
+ Problem reported for split by Scott Worley (Bug#33761):
+ * src/shred.c (do_wipefd):
+ Also report an error if ftruncate fails on a shared memory object.
+ * src/sort.c (get_outstatus): New function.
+ (stream_open, avoid_trashing_input): Use it.
+ * src/sort.c (stream_open):
+ * src/split.c (create):
+ If ftruncate fails, do not report an error
+ unless it is a regular file or a shared memory object.
+
+2018-11-07 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ sync: add NEWS and test for the fix in the previous commit
+ * NEWS (Bug fixes): Mention the fix in commit 94d364f157f0.
+ While at it, remove duplicate "Changes in behavior" heading.
+ * tests/misc/sync.sh: Add a test with a write-only file for the fix.
+
+2018-11-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ sync: fix open fallback bug
+ Problem caught by Coverity Analysis
+ and reported by Kamil Dudka (Bug#33287).
+ * src/sync.c (sync_arg): Fix typo in fallback code.
+
+2018-10-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ ln: use linkat and symlinkat
+ Open a target directory and use its file descriptor in linkat,
+ symlinkat, etc. syscalls, instead of constructing long file names
+ by concatenating the target directory name to a basename.
+ This avoids O(N²) behavior with ‘ln F1 F2 ... Fn DIR’ when DIR is
+ a long file name with many slashes. It also avoids some races if
+ DIR is renamed while ln is running.
+ * bootstrap.conf (gnulib_modules): Add openat-safer.
+ * src/ln.c: Include fcntl-safer.h.
+ (O_PATHSEARCH): New constant.
+ (errno_nonexisting, target_directory_operand): Remove; no longer used.
+ (atomic_link, do_link): New arg DESTDIR_FD. All uses changed.
+ (do_link): New arg DEST_BASE. All uses changed.
+ (main): Open target directory and use its file descriptor
+ as DESTDIR_FD.
+
+ build: update gnulib submodule to latest
+ * src/copy.c (copy_internal):
+ * src/cp.c (do_copy):
+ * src/ln.c (do_link):
+ Adjust to Gnulib API change.
+
+2018-10-27 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ tests: provide 100% coverage for echo
+ * src/echo.c (usage): Assert that STATUS is always EXIT_SUCCESS.
+ * tests/misc/echo.sh: Add further tests for all hex and escape and
+ escape characters.
+
+ To get coverage statistics, run:
+ make coverage -j 4 TESTS=tests/misc/echo.sh SUBDIRS=.
+ xdg-open doc/coverage/src/echo.c.gcov.frameset.html
+
+2018-10-27 Pádraig Brady <P@draigBrady.com>
+
+ echo: always process escapes when POSIXLY_CORRECT is set
+ * src/echo.c (main): Always enable backslash processing if
+ POSIXLY_CORRECT is set.
+ * tests/misc/echo.sh: Add (the first) test for the echo command.
+ * tests/local.mk: Reference the new test.
+ * tests/misc/printf.sh: Update a stale comment.
+ * doc/coreutils.texi (echo invocation). Mention that POSIXLY_CORRECT
+ now always enables backslash processing.
+ * NEWS: Mention the change in behavior.
+ Fixes https://bugs.gnu.org/32703
+ Issue identified by Eric Blake.
+
+2018-10-26 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ test: add -N unary operator
+ Bash knows 'test -N FILE'. Add it to GNU 'test' as well.
+
+ * src/test.c (unary_operator): Add a case for 'N'.
+ (usage): Document it.
+ * doc/coreutils.texi (node File characteristic tests): Likewise.
+ * NEWS (New features): Likewise.
+ * tests/misc/test-N.sh: Add a test.
+ * tests/local.mk (all_tests): Reference it.
+
+2018-10-26 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ test: simplify redundant code
+ Remove the function 'test_unop', as the cases therein are redundant to
+ those handled by 'unary_operator'; exception: the cases 'o' and 'N':
+ they had been present in test_unop and handling the commands
+ test -N STR
+ test -o STR
+ and
+ test x = x -a -N STR
+ test x = x -a -o STR
+ which ran into an error later on anyway.
+ With this commit, the error diagnostic will change from ...
+ $ /usr/bin/test -N STR
+ /usr/bin/test: extra argument '-N'
+ $ /usr/bin/test -o STR
+ /usr/bin/test: extra argument '-o'
+ ... to ...
+ $ src/test -N STR
+ src/test: '-N': unary operator expected
+ $ src/test -o STR
+ src/test: '-o': unary operator expected
+
+ * src/test.c (test_unop): Remove.
+ (unary_operator): Fail with test_syntax_error in the default case.
+ (term): Directly call unary_operator.
+ (two_arguments): Likewise.
+ * tests/misc/test-diag.pl: Adjust error diagnostic.
+
+2018-10-26 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ test: remove support for the ambigous -a unary operator
+ * src/test.c (unary_operator): Remove case 'a'.
+ (test_unop): Likewise.
+ * NEWS (Changes in behavior): Document the change.
+
+ Discussed at https://bugs.gnu.org/33097
+
+2018-10-21 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ test: avoid FP in chroot-credentials.sh for different group list order
+ On my openSUSE:Tumbleweed system, I get a false positive test failure
+ in the above 'check-root' test because the group lists inside and
+ outside the chroot have a different order:
+
+ ++ chroot --userspec=berny / id -G
+ ++ id -G berny
+ + test '100 454 457 480 492' = '100 480 492 457 454'
+ + fail=1
+
+ * tests/misc/chroot-credentials.sh (num_sort): Add function to sort
+ group lists, and use it in the test cases which test multiple groups.
+
+2018-10-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: tidy up setuid commentary
+ * doc/perm.texi (Mode Structure): Improve wording.
+ (Numeric Modes): Don’t say “on execution” (Bug#9594).
+
+2018-10-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ ln: avoid directory hard-link races
+ Previously, 'ln A B' did 'stat("B"), lstat("A"), link("A","B")'
+ where the stat and lstat were necessary to avoid hard-linking
+ directories on systems that can hard-link directories.
+ Now, in situations that prohibit hard links to directories,
+ 'ln A B' merely does 'link("A","B")'. The new behavior
+ avoids some races and should be more efficient.
+ This patch was inspired by Bug#10020, which was about 'ln'.
+ * bootstrap.conf (gnulib_modules): Add unlinkdir.
+ * src/force-link.c (force_linkat, force_symlinkat): New arg for
+ error number of previous try. Return error number, 0, or -1 if
+ error, success, or success after removal. All callers changed.
+ * src/ln.c: Include priv-set.h, unlinkdir.h.
+ (beware_hard_dir_link): New static var.
+ (errnoize, atomic_link): New functions.
+ (target_directory_operand): Use errnoize for simplicity.
+ (do_link): New arg for error number of previous try. All callers
+ changed. Do each link atomically if possible.
+ (main): Do -r check earlier. Remove linkdir privileges so we can
+ use a single linkat/symlinkat instead of a racy substitute for the
+ common case of 'ln A B' and 'ln -s A B'. Set beware_hard_dir_link
+ to disable this optimization.
+
+ cp: 'cp -il A B' no longer fails if user OKs it
+ * NEWS: Mention the change.
+ * src/copy.c (copy_internal): Replace the link if the
+ user has okayed it.
+
+ build: update gnulib submodule to latest
+ * gl/modules/tempname.diff: Update to match Gnulib.
+
+2018-10-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: add chmod examples
+ Discussed in https://bugs.gnu.org/11043 .
+
+ * doc/coreutils.texi (chmod invocation): Add examples.
+
+2018-10-02 Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+
+ doc: fix minor mistakes in "env.x"
+ * man/env.x (OPTIONS): Fix a spelling mistake. Protect a period at the
+ beginning of a line.
+
+2018-09-30 Achilles Gaikwad <agaikwad@redhat.com>
+
+ id: support multiple specified users
+ $ id root nobody
+ uid=0(root) gid=0(root) groups=0(root)
+ uid=99(nobody) gid=99(nobody) groups=99(nobody)
+
+ * src/id.c (main): Make variables opt_zero, just_group_list,
+ just_group, use_real, just_user global to be used in a new
+ function.
+ (print_stuff): New function that will print user and group
+ information for the specified USER.
+ When using -G option delimit each record with two NULs.
+ Restructure the code in the file to have global variables
+ followed by functions.
+ * tests/id/zero.sh: Add test cases to check the usage
+ of -z option with multiple users.
+ * tests/id/uid.sh: Add a test case to ensure all users
+ are queried in the presence of errors.
+ * doc/coreutils.texi: Document the interface changes.
+ * NEWS: Mention the new feature.
+
+2018-09-25 Stéphane Campinas <stephane.campinas@gmail.com>
+
+ doc: csplit: clarify handling of regexps with negative offsets
+ * doc/coreutils.texi (csplit invocation): Detail the behavior
+ with regexp patterns and negative offsets, which differs from
+ line number patterns, to avoid looping on the input. For example:
+ $ seq 50 | csplit -s - /15/-5 /12/
+ csplit: ‘/12/’: match not found
+
+2018-09-24 Pádraig Brady <P@draigBrady.com>
+
+ doc: csplit: clarify input may not be reproducible from output
+ * doc/coreutils.texi (csplit invocation): Clarify that
+ portions of the input may be skipped and thus the input
+ may not be reproducible by just concatenating the output files.
+ Fixes https://bugs.gnu.org/32317
+
+2018-07-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ df: omit redundant comparison
+ Trivial inefficiency reported by Bruno Haible in:
+ http://lists.gnu.org/r/bug-gnulib/2018-07/msg00109.html
+ * src/df.c (hide_problematic_chars): Omit redundant test.
+
+ df: tune slightly
+ * src/df.c (get_header, get_dev):
+ Avoid calling mbswidth twice when once will do.
+
+ df: avoid multibyte character corruption on macOS
+ This improves on the earlier fix for the problem reported by
+ Chih-Hsuan Yen (Bug#32236), by also looking for other control
+ characters and for encoding errors.
+ * src/df.c: Include wchar.h and wctype.h instead of c-ctype.h.
+ (hide_problematic_chars): Process the string as multibyte.
+ Use iswcntrl, not c_iscntrl.
+
+2018-07-26 Chih-Hsuan Yen <yan12125@gmail.com>
+
+ df: avoid multibyte character corruption on macOS
+ * src/df.c (hide_problematic_chars): Use c_iscntrl() as
+ passing 8 bit characters to iscntrl() is not supported on macOS.
+ * NEWS: Mention the bug fix.
+ Fixes https://bugs.gnu.org/32236
+
+2018-07-22 Wodry <coreutils3422@runbox.com> (tiny change)
+
+ doc: improve documentation of binary prefixes
+ * doc/coreutils.texi (Common options):
+ * src/dd.c, src/head.c, src/od.c, src/stdbuf.c, src/tail.c (usage):
+ * src/system.h (emit_size_note):
+ Mention binary prefixes (Bug#32242).
+
+2018-07-21 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid false failure on sparc 32 bit
+ * tests/rm/rm-readdir-fail.sh: Skip the test entirely on 32 bit,
+ so we avoid conflating the 32bit and 64 bit types, as that
+ triggers alignment issues (SIGBUS) on Gentoo sparc.
+ Fixes https://bugs.gnu.org/29886
+
+2018-07-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+ * bootstrap.conf, src/copy.c, src/mv.c, src/shred.c:
+ Adjust to renaming of renameat2 to renameatu.
+
+2018-07-05 Pádraig Brady <P@draigBrady.com>
+
+ tests: fix skipping in some tests
+ * tests/cp/cp-a-selinux.sh: Use 'skip_' rather than the probably
+ undefined 'skip'.
+ * tests/du/2g.sh: Likewise.
+ * tests/install/install-Z-selinux.sh: Likewise.
+ * tests/misc/chcon.sh: Likewise.
+ * tests/misc/selinux.sh: Likewise.
+ * tests/mkdir/restorecon.sh: Likewise.
+ * cfg.mk (sc_prohibit-skip): A new syntax check to catch the issue.
+
+2018-07-02 Jim Meyering <meyering@fb.com>
+
+ maint: init.cfg: fix a minor test-related quoting bug
+ * init.cfg (require_membership_in_two_groups_): This fixes a bug
+ introduced by me in v8.15-8-gdd0e4c562. Luckily, the consequence
+ of low-probability triggering the bug was the mere added backslash
+ in the diagnostic: "...but running id -G\ either...". It would be
+ triggered in a test failure for one who is a member of only one or
+ fewer groups.
+
+2018-07-02 Pádraig Brady <P@draigBrady.com>
+
+ maint: post-release administrivia
+ * NEWS: Add header line for next release.
+ * .prev-version: Record previous version.
+ * cfg.mk (old_NEWS_hash): Auto-update.
+
+ version 8.30
+ * NEWS: Record release date.
+
+2018-07-01 Pádraig Brady <P@draigBrady.com>
+
+ tests: standardize perl usage in tests
+ * tests/cp/fiemap-FMR.sh: Ensure perl is parameterized to $PERL,
+ and ensure require_perl_ is used, so tests are skipped appropriately.
+ * tests/cp/preserve-gid.sh: Likewise.
+ * tests/du/long-from-unreadable.sh: Likewise.
+ * tests/misc/env-S-script.sh: Likewise.
+ * tests/misc/sort-benchmark-random.sh: Likewise.
+ * tests/rm/deep-2.sh: Likewise.
+
+ maint: copy: avoid new static analyzer warnings
+ * src/copy.c (copy_internal): Use the lint protected src_mode,
+ rather than accessing the src_sb again. Also unconditionally
+ populate src_sb when !x->move_mode and in lint mode.
+ Reported by Kamil Dudka with coverity and clang analyzer.
+
+ maint: fix recent stale comments and spelling mistakes
+ * doc/coreutils.texi: s/seperator/separator/.
+ * tests/misc/env-S.pl: Likewise.
+ * src/env.c: Fix stale comment.
+
+2018-06-27 Pádraig Brady <P@draigBrady.com>
+
+ maint: disable overly agressive sc_gitignore_redundant
+ * cfg.mk (sc_gitignore_redundant): Disabled for now as too
+ aggressive flagging entries like /lib/arg-nonnull.h in
+ a newly checked out repo.
+
+ env: adjust diagnostics provided for shebang usage
+ * src/env.c (main): Don't process '-' specially since
+ that causes an issue on the openbsd getopt implementation
+ where a lone '-' is now processed as an option, and anyway
+ it doesn't particuarly help diagnosing common shebang
+ usage issues. Also don't restrict the extra diagnostics
+ for shebang usage to the case with 3 arguments, as
+ further arguments can be passed to a script.
+ * tests/misc/env-S.pl: Adjust accordingly.
+
+2018-06-27 Assaf Gordon <assafgordon@gmail.com>
+
+ tests: accept getopt errors without single-quotes
+ On OpenBSD 6.2, invalid single options produce error messages
+ without single quotes:
+
+ $ ./src/chroot -/
+ chroot: unknown option -- /
+
+ As opposed to other systems:
+
+ ./src/chroot: invalid option -- '/'
+
+ Modify the grep search to accept this.
+
+ * tests/misc/usage_vs_getopt.sh (checkprg): Change the grep pattern
+ to accomodate no-single-quotes cases.
+
+2018-06-27 Pádraig Brady <P@draigBrady.com>
+
+ tests: fix false failures when perl not available
+ * tests/local.mk: Reference the stub that skips perl tests,
+ with the correct path.
+
+ tests: fix false failure with limited shebang lines
+ * tests/misc/env-S-script.sh: Provide a wrapper to
+ emulate shebang processing, but without length limits,
+ which are 127 on Linux for example.
+
+ maint: update gnulib to latest
+ * gnulib: Update to latest, which incorporates
+ a thread linking fix from Bruno Haible,
+ which was seen on newer Ubuntu systems.
+
+2018-06-27 Assaf Gordon <assafgordon@gmail.com>
+
+ tests: remove unused Data::Dumper perl module
+ The module is not needed anymore (was used during development).
+ Despite being a Perl core module, platforms like CentOS don't install
+ it by default. Reported by Bruno Haible at
+ https://lists.gnu.org/r/coreutils/2018-06/msg00093.html.
+
+ * tests/misc/csplit-suppress-matched.pl: Remove Data::Dumper.
+
+2018-06-25 Carlos Santos <casantos@datacom.com.br>
+
+ maint: fix -Werror=suggest-attribute=malloc in expr.c
+ Add attribute 'malloc' to mpz_get_str to prevent
+ the following on GCC 8.1.1
+
+ src/expr.c:117:1: error: function might be candidate for attribute
+ 'malloc' if it is known to return normally
+ [-Werror=suggest-attribute=malloc]
+ mpz_get_str (char const *str, int base, mpz_t z)
+ ^~~~~~~~~~~
+ cc1: all warnings being treated as errors
+
+ * src/expr.c (mpz_get_str): Add _GL_ATTRIBUTE_MALLOC.
+
+2018-06-25 Pádraig Brady <P@draigBrady.com>
+
+ maint: update gnulib to latest
+ * gnulib: Update to latest.
+ * .gitignore: Add new entries.
+ * bootstrap.conf: Enable wchar-single, which will enable more
+ efficient replacements of wcwidth and mbrtowc, as we indicate
+ that the charset will no change between invocations of these functions.
+
+ maint: sync longlong.h from gmp repo
+ * src/longlong.h: Sync changes. No functional change.
+
+ maint: avoid false positive in src/fs-magic-compare
+ * src/local.mk (fs_normalize_perl_subst): `make src/fs-magic-compare`
+ was reporting incorrectly that AFS was not being handled.
+ Add a mapping to our KAFS identifier.
+ * .gitignore: Add intermediate files from `make src/fs-magic-compare`
+
+2018-06-23 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ tests: initialize fail=0 to avoid "unary operator expected" errors
+ With an uninitialized variable 'fail', the unquoted use like
+ test $fail = 1
+ lead to the shell error
+ "unary operator expected".
+
+ The uninitialized 'fail' variable was a side effect of
+ https://git.sv.gnu.org/cgit/gnulib.git/commit/?id=e91c0d4f9
+ which was pulled into coreutils-v8.26 with
+ https://git.sv.gnu.org/cgit/coreutils.git/commit/?id=ef9650170
+ Coreutils test code relied and relies on 'fail' to be initialized,
+ so initialize that variable here.
+
+ * tests/local.mk (TESTS_ENVIRONMENT): Initialize fail=0.
+
+2018-06-21 Jim Meyering <meyering@fb.com>
+
+ maint: do not depend directly on gnulib's now-unused ftello module
+ * bootstrap.conf (gnulib_modules): Remove ftello, since it is
+ no longer used directly, since v8.9-11-geab97b307.
+
+2018-06-21 Pádraig Brady <P@draigBrady.com>
+
+ tests: provide an option to relax the need for gdb
+ * tests/rm/r-root.sh: gdb provides extra protection,
+ but is not strictly necessary. So provide an option
+ for maintainers to relax the requirements.
+
+ rm: add --preserve-root=all to protect mounts
+ * src/remove.c (rm_fts): With the --preserve-root=all extension,
+ reject command line arguments that are mount points.
+ * src/remove.h (rm_options): Add preserve_all_root to store config.
+ * src/mv.c (rm_option_init): Init preserve_all_root to false.
+ * src/rm.c (main): Init preserve_all_root as per option.
+ (usage): Describe the new option.
+ * src/remove.c (rm_fts): Lookup the parent device id,
+ and reject the cli argument if a separate file system.
+ * tests/rm/one-file-system.sh: Add a test case.
+ * NEWS: Mention the new feature.
+
+2018-06-21 Adam Borowski <kilobyte@angband.pl>
+
+ cp: add --reflink=never to force standard copy mode
+ This mode is currently the default, but most if not all users of
+ reflink-capable filesystems want --reflink=auto, which is often
+ encapsulated into an alias. Adding --reflink=never allows overriding
+ such an alias.
+
+ * doc/coreutils.texi (cp invocation): Describe the new option.
+ * src/cp.c: Support --reflink=never.
+ * tests/cp/reflink-auto.sh: Add a test case.
+ * NEWS: Mention the new feature.
+
+2018-06-21 Assaf Gordon <assafgordon@gmail.com>
+
+ env: add -S/--split-string option
+ Adopted from FreeBSD's env(1), useful for specifing multiple
+ parameters on a shebang (#!) script line, e.g:
+
+ #!/usr/bin/env -S perl -w -T
+
+ Discussed in https://lists.gnu.org/r/coreutils/2018-04/msg00011.html
+
+ * src/env.c (valid_escape_sequence,escape_char,scan_varname,
+ extract_varname,validate_split_str,build_argv,
+ parse_split_string): New functions.
+ (main): Process new option and call parse_split_string.
+ (usage): Mention new option.
+ * tests/misc/env-S.pl: Test new option from the command line.
+ * tests/misc/env-S-script.sh: Test new option from shebang scripts.
+ * tests/local.mk (all_tests): Add new tests.
+ * man/env.x (OPTIONS): Show a brief example of -S usage and point to
+ the full documentation for more information.
+ * doc/coreutils.texi (env invocation): Detail usage of -S/--split-string
+ option.
+ * NEWS: Mention new option.
+
+2018-06-21 Assaf Gordon <assafgordon@gmail.com>
+
+ env: add -v/--debug option
+ Prints verbose information about each step:
+
+ $ env -v -uFOO -C /tmp BAR=BAZ date -u
+ env: unset: FOO
+ env: setenv: BAR=BAZ
+ env: chdir: '/tmp'
+ env: executing: date
+ env: arg[0]= ‘date’
+ env: arg[1]= ‘-u’
+ Sun Apr 22 08:52:30 UTC 2018
+
+ Inspired by FreeBSD's env(1).
+
+ * src/env.c (usage): Mention new option.
+ (main): Print debug information if requested.
+ * NEWS: Mention new option.
+ * doc/coreutils.texi (env invocation): Mention -v/--debug.
+
+2018-06-21 Assaf Gordon <assafgordon@gmail.com>
+
+ maint: refactor unsetenv call in env
+ Keep unset envvars (-uFOO) in an array for later deletion,
+ instead of reiterating over argv. Done in preparation for
+ '-S string' feature. Related to '-u' discussion in
+ https://lists.gnu.org/r/coreutils/2018-04/msg00013.html
+
+ * src/env.c (append_unset_var,unset_envvars): New functions.
+ (main): Use new functions.
+
+2018-06-21 Kaxandra Labat <kaxandra.labat@gmail.com>
+
+ ls: ignore case when coloring file extensions
+ * src/ls.c (get_color_indicator): s/STREQ_LEN/c_strncasecmp/
+ * src/dircolors.hin: Remove a now redundant entry.
+ * tests/ls/color-ext.sh: Add a new test.
+ * tests/local.mk: Reference the new test.
+ * NEWS: Mention the change in behavior.
+
+2018-06-21 Pádraig Brady <P@draigBrady.com>
+
+ md5sum,b2sum,sha*sum: support -z,--zero option
+ * doc/coreutils.texi (md5sum invocation): Describe the new option,
+ and how it's not supported by --check, and how it disables escaping.
+ * src/md5sum.c (delim): A new global to parmeterize the out delimiter.
+ (main): Don't enable file name escaping with -z, and output '\0'.
+ * tests/misc/md5sum-newline.pl: Add a test case.
+ * NEWS: Mention the new feature.
+
+2018-06-21 Pádraig Brady <P@draigBrady.com>
+
+ wc: optimize processing of ASCII in multi byte locales
+ ===== Benchmark setup (on GNU/Linux) ====
+ $ yes áááááááááááááááááááá | head -n100000 > mbc.txt
+ $ yes 12345678901234567890 | head -n100000 > num.txt
+
+ ===== Before ====
+ $ time src/wc -Lm < mbc.txt
+ real 0m0.186s
+ $ time src/wc -m < mbc.txt
+ real 0m0.186s
+ $ time src/wc -Lm < num.txt
+ real 0m0.055s
+ $ time src/wc -m < num.txt
+ real 0m0.056s
+
+ ==== After ====
+ $ time src/wc -Lm < mbc.txt
+ real 0m0.196s
+ $ time src/wc -m < mbc.txt
+ real 0m0.173s
+ $ time src/wc -Lm < num.txt
+ real 0m0.031s
+ $ time src/wc -m < num.txt
+ real 0m0.028s
+
+ * src/wc.c (wc): Only call wide variant functions like
+ iswprint() and wcwidth() for non is_basic() characters.
+ I.E. non ISO C "basic character set" characters.
+ This is especially significant on OSX where wcwidth()
+ is very expensive (about 10x in tests).
+ * NEWS: Mention the improvement.
+ Suggested by Eric Fischer.
+
+2018-06-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: port test.1 to doclifter
+ * man/test.x: Use \& instead of quoting (Bug#31803).
+
+ doc: port man pages to doclifter
+ Problem reported by Eric S. Raymond (Bug#31803).
+ * man/test.x: Add SYNOPSIS section, since help2man
+ understandably gets confused by the square brackets.
+ * src/ln.c (usage): Omit parenthetical "(Nth form)" in usage,
+ as it confuses doclifter.
+
+2018-06-04 Pádraig Brady <P@draigBrady.com>
+
+ cp: preserve existing permissions with --no-preserve=mode
+ This issue was introduced in commit v8.19-145-g24ebca6
+
+ * src/copy.c (copy_internal): With --no-preserve=mode,
+ only reset permissions for newly created files.
+ (copy_reg): Likewise.
+ * NEWS: Mention the fix.
+ * tests/cp/preserve-mode.sh: Add a test case.
+ Fixes https://bugs.gnu.org/31675
+
+2018-05-29 Pádraig Brady <P@draigBrady.com>
+
+ tests: fix periodic false failure in month alignment
+ * tests/ls/abmon-align.sh: Base relative month adjustment
+ from the middle of the month, to avoid failures due
+ to months being repeated.
+ Fixes https://bugs.gnu.org/31644
+
+2018-05-26 Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
+
+ doc: formatting fixes in "du.x" and "rm.x"
+ Avoid warnings from: groff -b -e -mandoc -T utf8 -rF0 -t -w w -z
+
+ * man/du.x: Change ".BR" to ".B" if there is only one argument.
+ Protect an end-of-sentence indicator (.?!) with '\&'
+ if it does not mean an end of a sentence.
+ Change '--' to '\-\-' if it indicates an option.
+ * man/rm.x: Change '\=' to '='.
+
+2018-05-18 Pádraig Brady <P@draigBrady.com>
+
+ cp: with --force; replace self referential symlinks
+ * src/copy.c (copy_internal): Don't fail immediately upon
+ getting ELOOP when running stat() on the destination,
+ rather proceeding if -f specified, allowing the link
+ to be removed. If the loop is not in the final component
+ of the destination path, we still fail but at the
+ subsequent unlink() stage.
+ * doc/coreutils.texi (cp invocation): Adjust wording to say
+ that --force doesn't work with dangling links, rather than
+ all links that can't be traversed.
+ * tests/cp/thru-dangling.sh: Add a test case.
+ * NEWS: Mention the change in behavior.
+ Discussed in https://bugs.gnu.org/31335
+
+2018-05-15 Pádraig Brady <P@draigBrady.com>
+
+ cp: fix symlink checks when overwriting files
+ Ensure this _does_ recreate the symlink
+ Given "path1" and "path2" are on different devices.
+ $ touch "path1/file"
+ $ cd path2/; ln -s path1/file
+ $ cp -dsf path1/file .
+
+ Ensure this does _not_ overwrite file
+ $ touch file
+ $ ln -s file l1
+ $ cp -sf l1 file
+
+ * src/copy.c (same_file_ok): Remove device ids from consideration,
+ instead deferring to future EXDEV with --link or allowing
+ the first case above to work.
+ Also ensure that we do not exist this function too early,
+ when the destination file is not a symlink, which protects
+ against the second case.
+ * tests/cp/cross-dev-symlink.sh: Add a test for the first case.
+ * tests/cp/same-file.sh: Add a test for the second case above.
+ * NEWS: Mention the bug fixes.
+ * THANKS.in: Mention the reporters who also analyzed the code.
+ Fixes https://bugs.gnu.org/31364
+
+2018-05-15 Pádraig Brady <P@draigBrady.com>
+
+ cp: ensure --remove-destination doesn't traverse symlinks
+ * src/cp.c (target_directory_operand): Allow through inaccessible
+ arguments with -f or --remove.
+ * doc/coreutils.texi (cp invocation): Clarify that -f doesn't directly
+ impact the removal of non-traversable symlinks.
+ * tests/cp/dir-rm-dest.sh: Test the new behavior.
+ * tests/cp/thru-dangling.sh: Enforce -f behavior wrt symlinks.
+ * NEWS: Mention the bug fix.
+ Fixes https://bugs.gnu.org/31335
+
+ maint: make chmod/chgrp/chown leak free under valgrind
+ * src/chmod.c: Deallocate the mode change array in dev mode.
+ * src/chown.c: Make chopt_free() actually deallocate, but
+ only call in dev mode.
+ * src/chgrp.c: Likewise.
+
+ doc: improve formatting of nl --help
+ * src/nl.c (usage): Better delineate the information.
+
+2018-05-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ who: simplify port to GCC 8
+ * src/who.c (make_id_equals_comment): Use simpler workaround
+ for GCC bug 85602. Suggested by Martin Sebor in:
+ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85602#c3
+
+2018-05-04 Pádraig Brady <P@draigBrady.com>
+
+ build: make GCC 8 adjustments more portable
+ * src/chown-core.h (chopt_free): Just define away this noop.
+ * src/chown-core.c (chopt_free): Remove the empty implementation.
+
+2018-05-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+
+2018-05-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: port to GCC 8
+ * src/chown-core.h (chopt_free, gid_to_name, uid_to_name):
+ No longer const.
+ * src/make-prime-list.c (xalloc): Add malloc attribute.
+ * src/who.c (make_id_equals_comment): Work around GCC bug 85602
+ by using mempcpy rather than strncat. Although the old code
+ was correct, strncat raises so many hackles that it’s not
+ worth maintaining its use here.
+
+ maint: remove strpbrk module
+ * bootstrap.conf (gnulib_modules): Remove obsolete module strpbrk.
+
+ build: update gnulib submodule to latest
+
+2018-04-21 Pádraig Brady <P@draigBrady.com>
+
+ doc: retroactively adjust info about tail and closed output
+ * NEWS: Expand on the 8.28 description of how tail more
+ responsively reacts to closed output, and move from "Improvements"
+ to "Changed behavior".
+ * cfg.mk (old_NEWS_hash): Regenerate.
+ Fixes https://bugs.gnu.org/31225
+
+2018-04-19 Pádraig Brady <P@draigBrady.com>
+
+ doc: timeout --help: mention 0 DURATION disables timeout
+ * src/timeout.c (usage): Mention that a duration of 0 disables
+ the associated timeout, which is both concise info and useful
+ functionality as timeouts are frequently configured.
+
+2018-04-06 Eric Blake <eblake@redhat.com>
+
+ doc: retroactively document -e/-u addition in NEWS
+ Prompted by https://bugs.gnu.org/31045
+
+ * NEWS: Update 8.8 blurb to mention other split additions.
+ * cfg.mk (old_NEWS_hash): Regenerate.
+
+2018-04-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: Clarify octal bits in permissions
+ * doc/perm.texi (Numeric Modes): Briefly explain octal.
+ Reorder description to make it more intuitive (Bug#29069).
+
+2018-03-28 Tobias Stoeckmann <tobias@stoeckmann.org>
+
+ cut: improve large file support on 32 bit
+ Increase max range from SIZE_MAX to UINTMAX_MAX, which will
+ allow cut to support line lengths up to the max file size
+ on all systems. The inherent SIZE_MAX limitation in cut was
+ removed with the enhancements in https://bugs.gnu.org/13127.
+ Also numfmt gets similarly increased --field ranges due to
+ shared code.
+
+ * src/cut.c: s/size_t/uintmax_t/.
+ * src/numfmt.c: Likewise.
+ * src/set-fields.c: Likewise.
+ * src/set-fields.h: Likewise.
+ * tests/misc/cut-huge-range.sh: Adjust accordingly.
+ * tests/misc/numfmt.pl: Likewise.
+ * NEWS: Mention the improvement.
+
+2018-03-28 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid a recent syntax-check failure
+ * tests/ls/a-option.sh: s/framework_failure/&_/.
+
+2018-03-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ ls: -A now overrides -a
+ Problem reported by Karl Berry (Bug#30963).
+ * NEWS: Mention this.
+ * src/ls.c (decode_switches): Implement this.
+ * tests/ls/a-option.sh: New file.
+ * tests/local.mk (all_tests): Add it.
+
+2018-03-24 Roland Hieber <rohieb@rohieb.name>
+
+ doc: fix two typos in github templates
+ * .github/ISSUE_TEMPLATE.txt: Fix typo "coreitils" in the URL to the bug
+ tracker.
+ * .github/PULL_REQUEST_TEMPLATE.txt: Likewise.
+
+2018-03-16 Pádraig Brady <P@draigBrady.com>
+
+ ls: increase the allowed abmon width from 5 to 12
+ This will impact relatively few languages,
+ and will make Arabic or Catalan etc.
+ output unambiguous abbreviated month names.
+
+ * src/ls.c (MAX_MON_WIDTH): Increase from 5 to 12.
+ * NEWS: Mention the bug fix.
+ * tests/ls/abmon-align.sh: Augment to check for ambiguous output.
+ Fixes https://bugs.gnu.org/30814
+
+2018-03-14 Brent Petit <brent.petit@hpe.com>
+
+ stat,tail: add support for the EXFS file system
+ Enhanced XFS (EXFS) is a version of XFS maintained by HPE.
+ EXFS uses a unique magic number to allow the use of community
+ XFS, and EXFS filesystems at the same time.
+
+ * src/stat.c (human_fstype): Add file system ID definition,
+ and use "exfs" as the name.
+ * NEWS: Mention the Improvement.
+
+2018-03-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+
+2018-03-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ stat: work around IBM xlC bug
+ Problem reported by John Wiersba (Bug#30718)
+ * src/stat.c (human_time): Avoid giving an integer constant
+ expression a name, as it runs afoul of a bug in IBM XL C/C++ for
+ AIX 12.01.0000.0002.
+
+2018-03-04 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: adjust email address of Keith Thompson in THANKS.in
+ * THANKS.in (Keith Thompson): Update email address as requested by
+ himself at https://lists.gnu.org/r/coreutils/2018-03/msg00004.html
+
+2018-02-25 Pádraig Brady <P@draigBrady.com>
+
+ cp: set appropriate default permissions for special files
+ This issue was introduced in commit v8.19-145-g24ebca6
+
+ * src/copy.c (copy_internal): When setting default permissions
+ to use with --no-preserve=mode, only set executable bits for
+ directories or sockets.
+ * NEWS: Mention the fix.
+ * tests/cp/preserve-mode.sh: Add a test case.
+ Fixes https://bugs.gnu.org/30534
+
+2018-01-21 Pádraig Brady <P@draigBrady.com>
+
+ doc: use consistent example format in manual
+ * doc/coreutils.texi: Use @example consistently
+ as we don't need the smaller or fixed width representation.
+ This is especially true for the synopsis of commands.
+ @smallexample is rendered left aligned for HTML
+ which is awkward to read with the center aligned main content.
+
+2018-01-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ mv: clarify ‘mv -n A A’ change
+
+ mv: fewer syscalls for ‘mv a b’
+ This builds on a previous patch for mv atomicity (Bug#29961).
+ It merely improves performance; it does not fix bugs.
+ * src/copy.h (struct cp_options): New members last_file, rename_errno.
+ * src/copy.c (copy_internal): Support new rename_errno member
+ for the copy options. Avoid calling stat when new members
+ suggest it’s not needed.
+ (cp_options_default): Initialize new members.
+ * src/mv.c: Include renameat2.h.
+ (main): With two arguments, first call ‘renamat2 (AT_FDCWD, "a",
+ AT_FDCWD, "b", RENAME_NOREPLACE)’. Use its results to skip
+ remaining processing if possible; for example, if it succeeds
+ there is no need to stat either "a" or "b". Also, set
+ x.last_file when it is the last file to rename.
+
+ mv: improve -n atomicity
+ Problem reported by Kamil Dudka (Bug#29961).
+ * NEWS: Mention this.
+ * src/copy.c: Include renameat2.h.
+ (copy_internal): If mv, try renameat2 first thing, with
+ RENAME_NOREPLACE. If this works, skip most of the remaining code.
+ Also, fail quickly if it fails with EEXIST, and we are using -n.
+
+2018-01-10 Michael Orlitzky <michael@orlitzky.com>
+
+ doc: warn about following symlinks recursively in chown/chgrp
+ In both chown and chgrp (which shares its code with chown), operating
+ on symlinks recursively has a window of vulnerability where the
+ destination user or group can change the target of the operation.
+ Warn about combining the --dereference, --recursive, and -L flags.
+
+ * doc/coreutils.texi (warnOptDerefWithRec): Add macro.
+ (node chown invocation): Add it to --dereference and -L.
+ (node chgrp invocation): Likewise.
+
+ See also: CVE-2017-18018
+
+2018-01-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ cp: remove ASSIGN_BASENAME_STRDUPA
+ * src/cp.c (do_copy): Just use ASSIGN_STRDUPA, as this simplifies
+ the code and uses less memory.
+
+2018-01-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ mv: -n overrides -u
+ * NEWS: Mention these fixes.
+ * doc/coreutils.texi (cp invocation, mv invocation):
+ Mention that -n is silent, and that it overrides -u.
+ * src/cp.c, src/mv.c (main): -n overrides -u.
+
+2018-01-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ tr: add -A, for compatibility with AIX tr
+ Problem reported by Michael (Bug#29946).
+ * src/tr.c (main): Add undocumented -A option.
+
+2018-01-03 Michael Orlitzky <michael@orlitzky.com>
+
+ doc: clarify chown/chgrp --dereference defaults
+ * doc/coreutils.texi: the documentation for the --dereference
+ flag of chown/chgrp states that it is the default mode of
+ operation. Document that this is only the case when operating
+ non-recursively.
+
+2018-01-02 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid false failure with xargs on AIX
+ * tests/misc/shred-remove.sh: AIX xargs defaults to using
+ '_' to indicate end of input, thus ignoring it.
+ Rather than specifying -E to avoid this behavior, simplify
+ by removing sed and xargs usage.
+
+2018-01-01 Pádraig Brady <P@draigBrady.com>
+
+ maint: update all copyright year number ranges
+ Run "make update-copyright" and then...
+
+ * gnulib: Update to latest with copyright year adjusted.
+ * tests/init.sh: Sync with gnulib to pick up copyright year.
+ * bootstrap: Likewise.
+ * tests/sample-test: Adjust to use the single most recent year.
+
+2017-12-27 Pádraig Brady <P@draigBrady.com>
+
+ maint: post-release administrivia
+ * NEWS: Add header line for next release.
+ * .prev-version: Record previous version.
+ * cfg.mk (old_NEWS_hash): Auto-update.
+
+ version 8.29
+ * NEWS: Record release date.
+
+2017-12-23 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid false failure on AIX 7.2
+ * tests/tail-2/pipe-f.sh: Close stdout in a subshell
+ to ensure the current shell isn't impacted. Subsequent
+ piped commands like `echo foo | blah` were seen to fail
+ due to the previous closing of stdout.
+ Reported by Assaf Gordon.
+
+ doc: describe recent build checks for 32 bit time_t
+ * README: Document the new handling of 32 bit time_t,
+ with examples of how to build in 64 bit mode on AIX.
+ Also mention that GNU make is desired on AIX
+ due to its mishandling of the "[" target.
+ Suggested by Assaf Gordon.
+
+2017-12-21 Pádraig Brady <P@draigBrady.com>
+
+ tests: fix recent portability issues on solaris 10
+ * tests/misc/ptx.pl: Escape the '^' character which is
+ otherwise considered as a line continuation character.
+ * tests/misc/shred-remove.sh: sed doesn't support \n.
+
+ maint: remove reference to excluded changelog item
+ * build-aux/git-log-fix: Remove old entry.
+
+2017-12-20 Pádraig Brady <P@draigBrady.com>
+
+ maint: add doc/coverage to .gitignore
+ * .gitignore: Ignore the generated coverage report.
+
+ doc: remove older ChangeLog items
+ * Makefile.am: Update the oldest documented version
+ to 8.20 which is now about 5 years old.
+
+2017-12-18 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ doc: mention which privileges are needed to chmod
+ POSIX specification for chmod(1):
+ https://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html
+
+ * doc/coreutils.texi (chmod invocation): Add a sentence about who can
+ change the file mode bits of a file - (almost) a copy from what POSIX
+ requires.
+
+ Fixes https://bugs.gnu.org/29207.
+
+2017-12-16 Pádraig Brady <P@draigBrady.com>
+
+ tests: fix recent regressions with dash
+ * tests/misc/timeout.sh: dash outputs the "Killed"
+ message to stderr rather than the terminal.
+ * tests/misc/usage_vs_getopt.sh: dash doesn't yet
+ support the POSIX proposed $'...' shell quoting syntax.
+
+ build: avoid a signed overflow warning in ptx
+ * src/ptx.c (fix_output_parameters): GCC 6.3.1 with
+ ./configure --enable-single-binary would give:
+ error: assuming signed overflow does not occur
+ when simplifying conditional to constant [-Werror=strict-overflow]
+ if (file_index > 0)
+ So change the type of file_index to signed (size_t).
+
+2017-12-11 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: adjust for the renamed nstrfime gnulib module
+ * bootstrap.conf: s/strftime/nstrfrime/.
+
+2017-12-11 Pádraig Brady <P@draigBrady.com>
+
+ build: update gnulib submodule to latest
+ * gnulib: Update with various build/test fixes.
+
+ tests: fix false failure in new dd/nocache_eof test
+ * test/dd/nocache_eof.sh: Also handle fadvise64_64 which is
+ used on 32 bit x86. Note strace internally maps fadvise64_64
+ to {arm,xtensa}_fadvise64_64.
+
+ tail: fix tailing non seekable files on certain systems
+ * src/tail.c (tail_bytes): On systems were blksize_t is unsigned
+ and the same size or wider than off_t (android for example),
+ our initialized (off_t) -1 would be promoted to unsigned before
+ comparison, and thus fail to follow the appropriate path.
+ * tests/tail-2/tail-c.sh: Add a test case.
+ * NEWS: Mention the fix.
+ This issue was introduced in commit v8.23-47-g2662702
+ Reported at https://github.com/termux/termux-app/issues/233
+
+ build: avoid build failure without sys/mtio.h
+ * m4/jm-macros.m4: Check for the header.
+ * src/dd.c: Avoid the workaround where the header
+ is not available (on non glibc systems).
+ * src/shred.c: Likewise.
+
+ doc: reorganize ls -k and --time-style help
+ * src/ls.c (usage): Clarify -k only applies to -s usage
+ and directory 'total' lines. Move the description
+ of TIME_STYLE out of the option section as it was awkward
+ to read and write there within 80 columns.
+
+2017-12-10 Pádraig Brady <P@draigBrady.com>
+
+ doc: clarify numeric setuid handling in chmod man page
+ * man/chmod.x: Update the information to state one can
+ clear the setuid and setgid bits for directories numerically
+ using an additional leading '0' or a leading '='.
+ That has been supported since v8.15-64-g8931cdb.
+ Fixes https://bugs.gnu.org/29390
+
+ doc: shred: change 'truncate' to the more descriptive 'deallocate'
+ * doc/coreutils.texi (shred invocation): s/truncate/deallocate/.
+ * src/shred.c (usage): Likewise.
+ Fixes https://bugs.gnu.org/29317
+
+ doc: clarify that cp --force may recreate files
+ * doc/coreutils.texi (cp invocation): The language used
+ to describe recreating the file was a little confusing
+ as it mentioned opening a removed file.
+ Fixes https://bugs.gnu.org/29315
+
+2017-12-04 Kamil Dudka <kdudka@redhat.com>
+
+ doc: fix default QUOTING_STYLE for %N format of stat(1)
+ * doc/coreutils.texi (stat invocation): The default value
+ of QUOTING_STYLE for the %N format of 'stat --printf' is
+ 'shell-escape-always'.
+ Fixes https://bugs.gnu.org/29563
+ Reported by Christian Groessler at
+ https://bugzilla.redhat.com/1520399#c3
+
+2017-12-02 Jean Delvare <jdelvare@suse.de>
+
+ tests: make ls/block-size more readable
+ * tests/ls/block-size.sh: The output of the test was hard to read. Add
+ comments saying what we are testing to make it easier to understand.
+
+2017-11-29 Bernhard Voelker <mail@bernhard-voelker.de>
+ Pádraig Brady <P@draigBrady.com>
+
+ tests: verify usage vs. getopt
+ Verify that all options mentioned in usage are actually recognized
+ by the program.
+
+ * tests/misc/usage_vs_getopt.sh: Add test.
+ * tests/local.mk (all_tests): Reference it.
+
+2017-11-29 Pádraig Brady <P@draigBrady.com>
+
+ readlink: remove superfluous comma from usage output
+ * src/readlink.c (usage): Remove ',' after --quiet option.
+
+2017-11-29 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ all: use consistent diagnostics for unknown long options
+ Previously, e.g. cksum failed to output the offending unknown long
+ option:
+ $ cksum --unknown-opt
+ cksum: invalid option -- '-'
+ Try 'cksum --help' for more information.
+ i.e., it tried to diagnose '-' as short option.
+ Instead, it should diagnose the unknown long option:
+ $ cksum --unknown-opt
+ cksum: unrecognized option '--unknown-opt'
+ Try 'cksum --help' for more information.
+
+ * src/cksum.c (long_options): Add struct with null entry only.
+ (main): Use it in the getopt_long call.
+ * src/dd.c: Likewise.
+ * src/hostid.c: Likewise.
+ * src/hostname.c: Likewise.
+ * src/link.c: Likewise.
+ * src/logname.c: Likewise.
+ * src/nohup.c: Likewise.
+ * src/sleep.c: Likewise.
+ * src/tsort.c: Likewise.
+ * src/unlink.c: Likewise.
+ * src/uptime.c: Likewise.
+ * src/users.c: Likewise.
+ * src/whoami.c: Likewise.
+ * src/yes.c: Likewise.
+ * NEWS (Improvements): Mention the fix.
+
+2017-11-29 Pádraig Brady <P@draigBrady.com>
+
+ test: fix issues with tests/cp/preserve-mode.sh
+ * tests/cp/preserve-mode.sh: This was the only use of awk,
+ which may not be available on the system resulting
+ in an ineffective test. Also the permissions bits for
+ directories were not being checked at all.
+
+ build: update gnulib submodule to latest
+ * gnulib: Update with various build/test fixes.
+
+2017-11-28 Pádraig Brady <P@draigBrady.com>
+
+ build: update gnulib submodule to latest
+ * gnulib: Update including various build fixes.
+
+2017-11-27 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ timeout: also support short -v option
+ * src/timeout.c (main): Add short option character 'v' to getopt_long
+ call.
+ * tests/misc/timeout.sh: Run the test both for the long and the short
+ option.
+
+2017-11-25 Pádraig Brady <P@draigBrady.com>
+
+ dd: support iflag=direct with arbitrary sized files
+ * src/dd.c (iread): Handle read error with a non-aligned
+ file offset in the O_DIRECT case. This is not an issue
+ on XFS at least, but on EXT4 the final read will return
+ EINVAL rather than the expected 0 to indicate EOF.
+ * tests/dd/direct.sh: Test the iflag=direct case also.
+ * NEWS: Mention the improvement.
+
+2017-11-24 Pádraig Brady <P@draigBrady.com>
+
+ timeout: add --verbose to diagnose timeouts
+ This is useful as handling in shell is complicated
+ with the varying exit status in the --kill-after case.
+
+ * src/timeout.c (main): Handle '-v' and store
+ COMMAND for the diagnostic.
+ (cleanup): Diagnose the signal name before sending.
+ (usage): Document -v, --verbose.
+ * doc/coreutils.texi (timeout invocation): Likewise.
+ * tests/misc/timeout.sh: Add a test case.
+ * NEWS: Mention the new feature
+ Fixes https://bugs.gnu.org/21760
+
+2017-11-19 Pádraig Brady <P@draigBrady.com>
+
+ tail: seek to the end of block devices
+ * src/tail.c (tail_bytes): Try lseek(..., SEEK_END) when
+ we can't determine the file size.
+ * tests/tail-2/end-of-device.sh: Add a new root only test.
+ * tests/local.mk: Reference the new test.
+ * NEWS: Mention the improvement.
+ Paul Eggert suggested using lseek() (rather than ioctl(BLKGETSIZE64)).
+ Fixes https://bugs.gnu.org/29259
+
+2017-11-14 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: include the module year2038 from gnulib
+ * bootstrap.conf (gnulib_modules): Add 'year2038' to ensure that time_t
+ is 64-bit (and thus works after 2038).
+
+ Suggested by Bruno Haible in
+ https://lists.gnu.org/r/bug-gnulib/2017-11/msg00022.html
+
+2017-11-14 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: update gnulib to latest
+ * gnulib: Update - mainly for the recent year2038 changes.
+ * tests/init.sh: Update from gnulib/tests/init.sh.
+
+2017-11-09 Assaf Gordon <assafgordon@gmail.com>
+
+ doc: add github issue/pull-request templates
+ These templates instruct contributors not to use github, and instead
+ use the upstream GNU development resources. Discussed in
+ http://lists.gnu.org/archive/html/coreutils/2017-11/msg00007.html .
+
+ * .github/ISSUE_TEMPLATE.txt,
+ .github/PULL_REQUEST_TEMPLATE.txt: New files.
+
+2017-11-08 Jim Meyering <meyering@fb.com>
+
+ maint: make hook script reject "/archive/html" in lists.gnu.org URLS
+ * scripts/git-hooks/commit-msg: Require the abbreviated "/r/"
+ form in any log message URL.
+
+ maint: shorten https://lists.gnu.org/archive/html/... links
+ Each /archive/html/ part can be replace with /r/.
+ Run this to induce the change:
+ git grep -l archive/html|xargs perl -pi -e 's,/archive/html/,/r/,g'
+ * TODO: Perform that substitution.
+ * bootstrap: Likewise.
+ * src/sort.c (sequential_sort): Likewise.
+ * src/tail.c (tail_file): Likewise.
+ * tests/misc/sort-merge-fdlimit.sh: Likewise.
+ * tests/misc/stty-row-col.sh: Likewise.
+ * tests/misc/unexpand.pl: Likewise.
+ * tests/rm/readdir-bug.sh: Likewise.
+ * tests/tail-2/inotify-rotate.sh: Likewise.
+
+2017-11-07 Thomas Deutschmann <whissi@gentoo.org>
+
+ tests: avoid false failure with inaccessible mount points
+ * tests/ls/readdir-mountpoint-inode.sh: Skip the test
+ if any mount points are inaccessible by the current user.
+ Fixes https://bugs.gnu.org/29167
+ Reported at: https://bugs.gentoo.org/353164
+
+2017-11-06 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ doc: fix "Up" field of realpath usage examples
+ Older versions of 'makeinfo' choke on a missing reference:
+
+ ./doc/coreutils.texi:14177: `Realpath usage examples' has no Up field\
+ (perhaps incorrect sectioning?).
+ makeinfo: Removing output file `doc/coreutils.info' due to errors; \
+ use --force to preserve.
+
+ * doc/coreutils.texi (realpath invocation): Add a menu referencing
+ the usage examples - introduced in v8.27-91-g7449f0d.
+
+2017-11-06 Pádraig Brady <P@draigBrady.com>
+
+ maint: ensure https:// URLs are used in --help and man pages
+ * configure.ac(AC_INIT): Specify the URL explicitly, so we're
+ not dependent on unreleased autoconf.
+
+2017-10-31 Assaf Gordon <assafgordon@gmail.com>
+
+ stat: output default formats for --terse in usage
+ Suggested by L A Walsh in https://bugs.gnu.org/28763 .
+
+ * src/stat.c (fmt_terse_fs): Define format for --terse -f here.
+ (fmt_terse_regular): Define format for --terse here.
+ (fmt_terse_selinux): Likewise for when SELinux is enabled.
+ (default_format): Use the above constants.
+ (usage): Output the formats for the terse modes.
+
+2017-10-30 Pádraig Brady <P@draigBrady.com>
+
+ df: fix hang with fifo argument
+ * src/df.c (main): stat() before open(), and avoid
+ the optional open when given a fifo argument.
+ * tests/df/unreadable.sh: Add a test case.
+ * NEWS: Mention the fix.
+ Fixes https://bugs.gnu.org/29038
+
+2017-10-28 Jim Meyering <meyering@fb.com>
+
+ build: ls.c: apply _GL_ATTRIBUTE_PURE to more functions
+ * src/ls.c (DEFINE_SORT_FUNCTIONS): Apply _GL_ATTRIBUTE_PURE
+ to each strcmp-derived function definition, since GCC8 with
+ -Wsuggest-attribute=pure now warns it is needed.
+
+2017-10-26 Vincent Lefevre <vincent@vinc17.net>
+
+ doc: reference statfs(2) in the stat(1) man page
+ * man/stat.x (SEE ALSO): Mention statfs(2) in addition to stat(2).
+ Note statfs() is generally used rather than statvfs(),
+ so we'll defer that reference to the SEE ALSO section of statfs(2).
+ Fixes https://bugs.gnu.org/28989
+
+2017-10-25 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid false failure when O_DIRECT isn't supported
+ * tests/dd/nocache_eof.sh: Only run the O_DIRECT tests
+ when 512 byte alignment is supported. Otherwise with older
+ XFS on systems with > 1MiB pages, or on file systems not
+ supporting O_DIRECT, there would have been false failures.
+ * tests/dd/direct.sh: Clarify the skip message.
+
+2017-10-25 Pádraig Brady <P@draigBrady.com>
+
+ dd: fix nocache regions passed to posix_fadvise()
+ Previously with oflag=direct the call to invalidate_cache()
+ was not passed to the kernel, as it was less than a page size,
+ and a subsequent call was not made to invalidate the pending space.
+ Similarly with oflag=nocache the pending space at EOF was
+ not invalidated. Even though these amount to only a single page
+ in the page cache it can be significant. For example on
+ XFS before kernel patch v4.9-rc1-4-g0ee7a3f, O_DIRECT files
+ would have been read inefficiently if any pages were cached,
+ even if they were already synced to storage.
+
+ * src/dd.c (i_nocache_eof, o_nocache_eof): New bools used
+ to control when we want invalidate_cache(,0) to clear to EOF.
+ (cache_round): Use IO_BUFSIZE (currently 132KiB) to minimize
+ calls to the relatively expensive advise function, rather
+ than page_size. This also makes it clear that while the
+ kernel function operates on pages, this size is chosen for
+ performance reasons.
+ (invalidate_cache): Refactor to share more code between
+ input and output paths. Use i_nocache_eof and o_nocache_eof
+ rather than proxying off max_records. Ensure we
+ invalidate full pages when clearing to EOF as the kernel
+ will ignore any non complete pages. Fix the offset used
+ for the output path.
+ (dd_copy): Invalidate the cache of the input after the
+ offset is updated, for consistency and so we don't try to
+ invalidate before the start of the file. When we read
+ EOF on input, set flags so that we invalidate to EOF.
+ (main): Invalidate to EOF in more cases, by depending
+ on the i_nocache_eof and o_nocache_eof flags.
+ * doc/coreutils.texi (dd invocation): Clarify the alignment
+ and persisted caveats on the example applying "nocache"
+ to part of a file.
+ * tests/dd/nocache_eof.sh: A new test.
+ * tests/local.mk: Reference the new test.
+ * NEWS: Mention the bug fix.
+ Issue reported by Eric Bergen.
+
+2017-10-24 Michael Stone <mstone@debian.org>
+
+ doc: mention QUOTING_STYLE env var in ls man page
+ * src/ls.c (usage): Mention QUOTING_STYLE with the --quoting-style
+ option, and indicate it has lower precedence than that option.
+
+2017-10-24 Pádraig Brady <P@draigBrady.com>
+
+ maint: apply suggested cleanup to recent stty.c change
+ This should have been part of commit v8.28-17-gf926f7c
+ * src/stty.c (check_argument): Align line continuation chars,
+ and ensure the function macro is immune to usage with if/else.
+ Suggested by Jim Meyering and Paul Eggert.
+
+ b2sum: fix crash with --check and truncated input
+ * src/md5sum.c (split_3): Ensure we don't walk off
+ the end of the string.
+ * tests/misc/b2sum.sh: Add test cases.
+ Fixes https://bugs.gnu.org/28860
+
+2017-10-24 Pádraig Brady <P@draigBrady.com>
+
+ stty: fix processing of options when -F is specified
+ This was a latent issue that became significant with
+ the addition of the -F option in FILEUTILS-3_16n-56-ge46a424
+
+ * src/stty.c (apply_settings): Refactor argument checking
+ to a function macro. Augment the argument check to ignore
+ NULLed out arguments (already processed -F).
+ * NEWS: Mention the fix.
+ * tests/misc/stty-invalid.sh: Add a test case.
+ Fixes https://bugs.gnu.org/28859
+
+2017-10-24 Pádraig Brady <P@draigBrady.com>
+
+ timeout: fix a small race that would ignore command exit
+ This fixes a regression from commit v8.26-39-g2f69dba
+
+ * src/timeout.c (block_cleanup_and_chld): Rename from block_cleanup
+ to indicate we also block SIGCHLD to avoid the race where SIGCHLD
+ fires between waitpid() polling and sigsuspend() waiting for a signal.
+ * NEWS: Mention the fix.
+
+2017-10-24 Thomas Jarosch <thomas.jarosch@intra2net.com>
+
+ timeout: fix regression when invoked with blocked SIGCHLD
+ We inherit the signal mask from our parent process,
+ therefore ensure SIGCHLD is not blocked.
+
+ If SIGCHLD is blocked, sigsuspend() won't be interrupted
+ when the child process exits and we hang until the timeout (SIGALRM).
+
+ This fixes a regression from commit v8.26-39-g2f69dba
+
+ * src/timeout.c (install_sigchld): Ensure SIGCHLD is unblocked.
+ * NEWS: Mention the issue.
+
+2017-10-02 Pádraig Brady <P@draigBrady.com>
+
+ build: reinstate distribution of man pages
+ man pages change little between systems,
+ so falling back to distributed pages make sense
+ when cross compiling or lacking perl.
+
+ * man/local.mk: Add all man pages to EXTRA_DIST
+ so that they're distributed in the generated tarball.
+ Use the dummy-man page generator if cross compiling.
+ Set TZ to avoid a distcheck failure where man pages
+ used a diffent month than those rebuilt (with a .timestamp).
+ * man/dummy-man: Only fall back to generating a stub
+ if copying an existing man page fails.
+ * man/help2man: Sync portable TZ=UTC0 specification
+ from upstream help2man.
+ * NEWS: Mention the build-related change.
+ Fixes https://bugs.gnu.org/28574
+
+2017-10-02 Pádraig Brady <P@draigBrady.com>
+
+ maint: remove a duplicate entry from THANKS
+ * .mailmap: Prefer Colin Watson's last used email address.
+
+2017-09-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ copy: revert recent patch for vulnerable dirs
+ I plan to propose a better patch to catch vulnerable parent
+ directories.
+ * NEWS, doc/coreutils.texi (Target directory): Document this.
+ * src/cp.c, src/install.c, src/ln.c, src/mv.c:
+ Do not include targetdir.h.
+ (target_directory_operand): Remove test for vulnerable parents.
+ * src/cp.c (stat_target_operand): Remove. All uses removed.
+ * src/local.mk (noinst_HEADERS): Remove src/targetdir.h.
+ (src_ginstall_SOURCES, src_cp_SOURCES, src_ln_SOURCES)
+ (src_mv_SOURCES): Remove src/targetdir.c.
+ * src/targetdir.c, src/targetdir.h: Remove.
+ * tests/mv/vulnerable-target.sh: Remove.
+ * tests/local.mk (all_root_tests): Remove it.
+
+2017-09-24 Pádraig Brady <P@draigBrady.com>
+
+ tests: fix test hang on case insenitive file systems
+ * tests/split/filter.sh: Due to an invalid 'FILE = zero.in'
+ construct trying to initialize a FILE variable, it would
+ instead try to run the FILE command which is present on
+ macOS 10.13 with APFS.
+ We also remove a redundant duplicate test clause introduced
+ during a rebase, and simplify the piped timeout command,
+ to avoid requiring a subshell and associated quoting.
+ * THANKS.in: Add the reporter Jack Howarth.
+ Fixes https://bugs.gnu.org/28506
+
+2017-09-21 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid a false failure in expr test with UTF8
+ * tests/misc/expr.pl: Skip the quote varying tests in
+ the multi-byte locales as these tests aren't that interesting
+ in those locales. Also ERR_SUBST is already defined for
+ some tests so awkward to redefine to munge UTF8 quotes to ASCII.
+
+2017-09-20 Assaf Gordon <assafgordon@gmail.com>
+
+ expr: add detailed syntax error messages
+ Show offending argument instead of a generic 'syntax error' message.
+ Suggested by Bernhard Voelker in https://bugs.gnu.org/28461#13 .
+
+ * src/expr.c (syntax_error): Remove.
+ (required_more_args): New function.
+ (eval7, main): Replace syntax_error call with detailed die message.
+ * tests/misc/expr.pl: Add tests for new messages.
+
+2017-09-20 Pádraig Brady <P@draigBrady.com>
+
+ maint: fix new syntax-check failures from HTTPS adjustments
+ * cfg.mk [old_NEWS_hash]: update with `make update-NEWS-hash`.
+ [sc_long_lines]: Avoid flagging (long) URLs in NEWS.
+ * src/sort.c: Tweak to a shorter line.
+ * src/tail.c: Likewise.
+ Introduced in v8.28-4-gbe87d61
+
+ maint: fix new syntax check failures from copy restrictions
+ * doc/coreutils.texi: Remove doubled word.
+ * src/targetdir.c: Explicitly mark exported function.
+ * tests/local.mk: This is not a root only test.
+ * tests/mv/vulnerable-target.sh: Use returns_.
+ Introduced in v8.28-3-g44ccd1c
+
+ shred: reinstate --remove file name length obfuscation
+ This was unintentionally removed in v8.27-60-g2ae1460
+ * src/shred.c (wipename): Interate through all name lengths.
+ * tests/misc/shred-remove.sh: Add test cases.
+ * NEWS: Mention the bug fix.
+ Fixes https://bugs.gnu.org/28507
+
+2017-09-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: copy bootstrap from Gnulib
+
+ all: prefer HTTPS in URLs
+
+ copy: check for vulnerable target dirs
+ * NEWS, doc/coreutils.texi (Target directory): Document this.
+ * src/cp.c, src/install.c, src/ln.c, src/mv.c: Include targetdir.h.
+ (target_directory_operand): Use the new targetdir_operand_type
+ function to check for vulnerable target directories.
+ * src/cp.c (stat_target_operand): New function.
+ (target_directory_operand, do_copy): Use it.
+ * src/local.mk (noinst_HEADERS): Add src/targetdir.h.
+ (src_ginstall_SOURCES, src_cp_SOURCES, src_ln_SOURCES)
+ (src_mv_SOURCES): Add src/targetdir.c.
+ * src/targetdir.c, src/targetdir.h: New files.
+ * tests/mv/vulnerable-target.sh: New test.
+ * tests/local.mk (all_root_tests): Add it.
+
+2017-09-14 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ ptx: avoid infloop due to zero-length matches with -S regex
+ * src/ptx.c (find_occurs_in_text): Die with an appropriate error
+ diagnostic when the given regular expression returns a match of
+ length 0.
+ * tests/misc/ptx.pl (S-infloop): Add a test.
+ * NEWS (Bug fixes): Mention the fix.
+
+ Fixes https://bugs.gnu.org/28417 which was detected using
+ Symbolic Execution techniques developed in the course of the
+ SYMBIOSYS research project at COMSYS, RWTH Aachen University.
+
+2017-09-02 Pádraig Brady <P@draigBrady.com>
+
+ maint: post-release administrivia
+ * NEWS: Add header line for next release.
+ * .prev-version: Record previous version.
+ * cfg.mk (old_NEWS_hash): Auto-update.
+
+ version 8.28
+ * NEWS: Record release date.
+
+2017-09-01 Pádraig Brady <P@draigBrady.com>
+
+ tests: fix false failure in recent ls --hyperlink test
+ * tests/ls/hyperlink.sh: If the hostname or any part of
+ the absolute path would be changed due to URL encoding,
+ the test would fail. Therefore simplify to remove
+ these components of the URL from consideration.
+
+ maint: avoid a syntax-check failure
+ * .gitignore: Remove lines indicated by sc_gitignore_redundant
+ in a freshly checked out repo.
+
+2017-08-31 Pádraig Brady <P@draigBrady.com>
+
+ tests: exclude the expensive gnulib fts-tests
+ * gnulib: The only change in this gnulib update
+ is the tagging of the fts-tests module as longrunning,
+ which gnulib-tool currently implicitly excludes.
+ This test was seen to take about 20s and 285MB.
+ Reported by Assaf Gordon on space restricted VMs.
+
+ tty: don't distinguish input errors
+ * src/tty.c (main): Don't distinguish ENOTTY from other errors,
+ because isatty() doesn't portably distinguish errors.
+ Solaris returns ENOENT for all input errors for example.
+ Musl also returns ENOENT, and ENODEV may be returned as disscussed at:
+ http://openwall.com/lists/musl/2017/04/06/6
+ * tests/misc/tty.sh: Adjust accordingly.
+
+ tests: avoid printf '0*d' construct unsupported by ash
+ * tests/ln/sf-1.sh: Generate specific length with space padding
+ which is supported.
+ Reported by Assaf Gordon on Alpine Linux.
+
+2017-08-31 Pádraig Brady <P@draigBrady.com>
+
+ tests: skip tests upon failure to set SELinux context
+ On some setups the root:object_r:tmp_t context is invalid.
+ This does indicate a limitation in the test framework,
+ but for now we'll relax this to skipping the tests.
+ The tests still run on a Fedora 25 system for example.
+
+ * tests/cp/cp-a-selinux.sh: Upon chcon error, skip rather than ERROR.
+ * tests/install/install-Z-selinux.sh: Likewise.
+ * tests/misc/chcon.sh: Likewise.
+ * tests/misc/runcon-no-reorder.sh: Likewise.
+ * tests/misc/selinux.sh: Likewise.
+ * tests/mkdir/restorecon.sh: Likewise.
+
+2017-08-30 Kamil Dudka <kdudka@redhat.com>
+
+ expr: fix a recently introduced memory leak
+ * src/expr.c (eval6): Free memory allocated by mbs_logical_substr().
+
+ Introduced in v8.27-47-ga9f2be5. Detected by Coverity Analysis:
+
+ Error: RESOURCE_LEAK:
+ src/expr.c:851: leaked_storage: Variable "s" going out of scope
+ leaks the storage it points to.
+ 849| char *s = mbs_logical_substr (l->u.s, pos, len);
+ 850| v = str_value (s);
+ 851|-> }
+ 852| freev (l);
+ 853| freev (i1);
+
+2017-08-30 Pádraig Brady <P@draigBrady.com>
+
+ build: fix build of renameat2 on Alpine Linux
+ * gnulib: The only change included in this update
+ it the added check for the presence of <linux/fs.h>
+ which is not present on Alpine Linux by default.
+
+ tty: fix exit code with EINVAL
+ * src/tty.c (main): All systems mention that isatty()
+ man return EINVAL as well as (the POSIX compliant) ENOTTY.
+ Also Centos 6 was seen to return EINVAL from ttyname().
+ * tests/misc/tty.sh: Fix a test issue where we assume
+ standard input is always a valid tty.
+ Reported by Assaf Gordon on OpenSolaris 5.10 and 5.11,
+ and Centos 6.5
+
+2017-08-30 Pádraig Brady <P@draigBrady.com>
+
+ runcon: revert "disable use of the TIOCSTI ioctl"
+ This reverts commit v8.27-97-g8cb06d4 because
+ the setsid() fallback was not implemented correctly
+ and disabling the ioctl was not a complete solution
+ to the security issue of the child being passed
+ the tty of the parent.
+
+ Given runcon is not really a sandbox command,
+ the advice is to use `runcon ... setsid ...`
+ to avoid this particular issue.
+
+2017-08-30 Pádraig Brady <P@draigBrady.com>
+
+ stat: fix determination of max name length on BSD systems
+ We only use one of statfs or statvfs for `stat -f`
+ and on the BSDs we use statfs which doesn't have the
+ f_namelen member. However on OpenBSD and later FreeBSD
+ systems statfs does provide f_namemax, so use that.
+
+ * NEWS: Mention the improvement for OpenBSD and FreeBSD.
+ * m4/stat-prog.m4: Check for f_namemax in the statfs struct.
+ * src/stat.c: Return '?' rather than '*' when we can't
+ determine the max length of the file system.
+ * tests/ln/sf-1.sh: This test was failing on all BSDs
+ due to '*' being returned for the max length which
+ caused the test to attempt to create 1Mi+1 names.
+ The test now uses a short name when we can't determine
+ the max name length to use.
+
+ Reported by Assaf Gordon on various BSD based systems.
+
+2017-08-29 Pádraig Brady <P@draigBrady.com>
+
+ stat,tail: support "AAFS" AppArmor file system
+ * src/stat.c (human_fstype): This file system is used
+ to manage AppArmor policy in the Linux kernel.
+
+ all: update gnulib submodule to latest
+ * bootstrap: Sync timestamp update.
+
+2017-08-29 Pádraig Brady <P@draigBrady.com>
+
+ runcon: disable use of the TIOCSTI ioctl
+ Similar to the issue with SELinux sandbox (CVE-2016-7545),
+ children of runcon can inject arbitrary input to the terminal
+ that would be run at the originating terminal privileges.
+
+ The new libseccomp dependency is widely available and used
+ on modern SELinux systems, but is not available by default
+ on older systems like RHEL6 etc.
+
+ * m4/jm-macros.m4: Check for libseccomp and
+ warn if unavailable on selinux supporting systems.
+ * src/local.mk: Link runcon with -lseccomp.
+ * src/runcon.c (disable_tty_inject): A new function to
+ disable use of the TIOCSTI using libseccomp, or with setsid()
+ where libseccomp is unavailable.
+ * tests/misc/runcon-no-inject.sh: A new test that uses
+ python to make the TIOCSTI call, and ensure that doesn't succeed.
+ * tests/local.mk: Reference the new test
+ * NEWS: Mention the fix.
+ Addresses http://bugs.gnu.org/24541
+
+2017-08-29 Pádraig Brady <P@draigBrady.com>
+
+ ls: support --hyperlink to output file:// URIs
+ Terminals such as iTerm2 and VTE based terminals
+ (as of version 0.49.1), support hyperlinks when
+ passed terminals codes as described at:
+ https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda
+
+ * src/ls.c (gobble_file): Allocate an absolute file name to output.
+ (quote_name): Output the absolute name with the appropriate codes.
+ (file_escape): A new function to encode file names as per rfc8089.
+ (main): Handle the new option and call the file_escape_init() helper.
+ Disable --dired when --hyperlink is specified.
+ (print_dir): Get the absolute file name here too, so that the
+ directory name can be linkified.
+ * NEWS: Mention the new feature.
+ * tests/ls/hyperlink.sh: Add a new test.
+ * tests/local.mk: Reference the new test.
+ * doc/coreutils.texi (ls invocation): Describe --hyperlink.
+
+2017-08-29 Pádraig Brady <P@draigBrady.com>
+
+ doc: remove older ChangeLog items
+ This saves about 0.5MB uncompressed from the tarball.
+
+ * Makefile.am: Following on from v8.26-34-g2c64bc8
+ update the oldest documented version to 8.18 which
+ is now about 5 years old. Also remove older ChangeLogs
+ that were previously thought to be for changes not
+ in the git history, but are adequately recorded upon review.
+ * build-aux/ChangeLog-2007: Remove file.
+ * lib/ChangeLog-2007: Likewise.
+ * m4/ChangeLog-2007: Likewise.
+
+2017-08-29 Colin Watson <cjwatson@debian.org>
+
+ env: add --chdir option
+ This is useful when chaining with other commands that run commands in a
+ different context, while avoiding using the shell to cd, and thus
+ having to consider shell quoting the chained command.
+
+ * NEWS (New features): Document the new option.
+ * doc/coreutils.texi (env invocation): Likewise.
+ * src/env.c (usage): Likewise.
+ (main): Implement the new option.
+ * tests/misc/env.sh: Test the new option.
+
+2017-08-29 Pádraig Brady <P@draigBrady.com>
+
+ tests: don't fail tests when failing to write files
+ * tests/sample-test: Use framework_error_ rather than fail=1
+ * tests/chown/deref.sh: Likewise.
+ * tests/chown/preserve-root.sh: Likewise.
+ * tests/cp/src-base-dot.sh: Likewise.
+ * tests/dd/unblock-sync.sh: Likewise.
+ * tests/du/2g.sh: Likewise.
+ * tests/du/inacc-dest.sh: Likewise.
+ * tests/du/one-file-system.sh: Likewise.
+ * tests/fmt/goal-option.sh: Likewise.
+ * tests/ln/hard-backup.sh: Likewise.
+ * tests/ls/color-dtype-dir.sh: Likewise.
+ * tests/ls/m-option.sh: Likewise.
+ * tests/ls/stat-dtype.sh: Likewise.
+ * tests/ls/time-style-diag.sh: Likewise.
+ * tests/ls/x-option.sh: Likewise.
+ * tests/misc/chcon.sh: Likewise.
+ * tests/misc/nohup.sh: Likewise.
+ * tests/misc/od-N.sh: Likewise.
+ * tests/misc/sort-compress.sh: Likewise.
+ * tests/misc/tac-continue.sh: Likewise.
+ * tests/misc/time-style.sh: Likewise.
+ * tests/mv/backup-dir.sh: Likewise.
+ * tests/mv/dir2dir.sh: Likewise.
+ * tests/rm/dir-no-w.sh: Likewise.
+ * tests/rm/dir-nonrecur.sh: Likewise.
+ * tests/rm/inaccessible.sh: Likewise.
+ * tests/rm/interactive-always.sh: Likewise.
+ * tests/rm/interactive-once.sh: Likewise.
+ * tests/rm/rm3.sh: Likewise.
+ * tests/rm/v-slash.sh: Likewise.
+ * tests/touch/relative.sh: Likewise.
+
+2017-08-29 Josef Cejka <jcejka@suse.com>
+ Bernhard Voelker <mail@bernhard-voelker.de>
+
+ df: avoid stat() for dummy file systems with -l
+ When systemd is configured to automount a remote file system - see
+ 'man systemd.automount(5)', then the mount point is initially
+ mounted by systemd with the file system type "autofs".
+ When the resource is used later on, then the wanted file system is
+ mounted over that mount point on demand.
+ 'df -l' triggered systemd to mount the file system because it called
+ stat() on the mount point.
+ Instead of single-casing "autofs" targets, we can avoid stat()ing
+ all dummy file systems (which includes "autofs"), because those are
+ skipped later on in get_dev() anyway.
+
+ *src/df.c (filter_mount_list): Also skip dummy file systems unless
+ the -a option or a specific target are given.
+ * NEWS: Mention the fix.
+
+
+ Fixes http://bugzilla.suse.com/show_bug.cgi?id=1043059
+
+2017-08-29 Assaf Gordon <assafgordon@gmail.com>
+
+ doc: add 'realpath usage examples' section
+ * doc/coreutils.texi (Realpath usage examples): New section.
+
+2017-08-29 Assaf Gordon <assafgordon@gmail.com>
+
+ doc: fix realpath index entry
+ The 'readlink' node has '@findex realpath' in it. This results in
+ info doc/coreutils.info realpath
+ incorrectly jumping to the 'readlink' node (instead of the 'realpath'
+ node). Change it to @cindex instead.
+
+ * doc/coreutils.texi (readlink): Change '@findex realpath' to @cindex.
+
+2017-08-29 Assaf Gordon <assafgordon@gmail.com>
+
+ realpath: improve usage description for --relative-{to,base}
+ * src/realpath.c (usage): Explicitly say 'DIR' instead of 'FILE' for
+ --relative-{to,base} parameters, to avoid giving the impression
+ that regular files can be used as relative base.
+ * doc/coreutils.texi (realpath): Same.
+
+2017-08-25 Pádraig Brady <P@draigBrady.com>
+
+ ls: consistently quote symlink targets
+ * src/ls.c (gobble_file): Disable the optimization to avoid quoting
+ if the symlink target itself needs quoting. This was introduced
+ with the quoting alignment adjustments in v8.25-106-g01971c0
+ * tests/ls/symlink-quote.sh: Add a test.
+ * tests/local.mk: Reference the test.
+ * NEWS: Mention the fix.
+
+2017-08-25 Pádraig Brady <P@draigBrady.com>
+
+ tail: reinstate inotify use with FIFOs
+ commit v8.27-44-g18f6b22 was too aggressive in
+ only allowing inotify use with regular files. This will
+ support responsive processing of `tail -f fifo | ...`
+
+ * src/tail.c (any_non_regular): Adjust to allow FIFOs
+ since inotify supports these well.
+ * tests/tail-2/inotify-only-regular.sh: Adjust comment.
+
+2017-08-19 Pádraig Brady <P@draigBrady.com>
+
+ maint: avoid a syntax check failure
+ * src/sort.c: Don't include stdio--.h as fopen() is no longer used.
+
+ tests: fix issues on alpine linux
+ * tests/misc/seq-epipe.sh: Remove stale comment.
+ * tests/misc/sort-debug-warn.sh: musl doesn't indicate a set_locale()
+ failure with missing locales, so avoid a test portion in that case.
+ * tests/misc/wc-files0.sh: Avoid a bug on older ash implementations.
+ Addresses http://bugs.gnu.org/28054
+
+2017-08-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ ptx: fix some integer overflow bugs
+ Problem reported by Lukas Zachar at:
+ http://bugzilla.redhat.com/1482445
+ * src/ptx.c (line_width, gap_size, maximum_word_length)
+ (reference_max_width, half_line_width, before_max_width)
+ (keyafter_max_width, truncation_string_length, compare_words)
+ (compare_occurs, search_table, find_occurs_in_text, print_spaces)
+ (fix_output_parameters, define_all_fields):
+ Use ptrdiff_t, not int, for object offsets and sizes.
+ (WORD, OCCURS): Use ptrdiff_t, not short int.
+ (WORD_TABLE, number_of_occurs, generate_all_output):
+ Prefer ptrdiff_t to size_t where either will do.
+ (total_line_count, file_line_count, OCCURS, fix_output_parameters)
+ (define_all_fields):
+ Use intmax_t, not int, for line counts.
+ (DELTA): Remove. All uses changed.
+ (OCCURS, find_occurs_in_text, fix_output_parameters):
+ Use int, not size_t, for file indexes.
+ (tail_truncation, before_truncation, keyafter_truncation)
+ (head_truncation, search_table, define_all_fields)
+ (generate_all_output):
+ Use bool for booleans.
+ (digest_word_file, find_occurs_in_text):
+ Use x2nrealloc instead of checking for overflow by hand.
+ (find_occurs_in_text, fix_output_parameters, define_all_fields):
+ Omit unnecessary cast.
+ (fix_output_parameters): Don’t assume integers fit in 11 digits.
+ (fix_output_parameters, define_all_fields):
+ Use sprintf return value rather than calling strlen.
+ (define_all_fields): Do not rely on sprintf to generate a string
+ that may contain more than INT_MAX bytes.
+ (main): Use xstrtoimax, not xstrtoul.
+ Use xnmalloc to catch integer overflow.
+
+ nohup: simplify by using fcntl
+ * src/nohup.c: Do not include cloexec.h.
+ (main): Use fcntl rather than dup + set_cloexec_flag.
+
+ sort: use pthread_sigmask, not sigprocmask
+ POSIX says sigprocmask has unspecified behavior in a multithreaded
+ program like ‘sort’.
+ * src/sort.c (pthread_sigmask) [GNULIB_defined_pthread_functions]:
+ New macro, for use when ‘sort’ is not multithreaded.
+ (cs_enter, cs_leave): Use it. Pass address, not value, as
+ this is typically a tad faster. All callers changed.
+
+ sort: minor cleanups
+ * src/sort.c (move_fd): Rename from move_fd_or_die,
+ since it no longer can die.
+
+ sort: file descriptor discipline
+ Use O_CLOEXEC when creating file descriptors, so that subsidiary
+ processes do not inherit file descriptors that they do not need.
+ This is helpful for ‘sort’, as it is a multithreaded program that
+ forks and execs.
+ * bootstrap.conf (gnulib_modules): Add mkostemp, open, pipe2.
+ * src/sort.c (create_temp_file): Open temporary file with O_CLOEXEC.
+ (stream_open): Open the stream with O_CLOEXEC.
+ (pipe_fork): Create the pipe with O_CLOEXEC.
+ (check_output): Open the output file with O_CLOEXEC.
+ (main): Use xfopen/xfclose to handle --files0-from, so that
+ O_CLOEXEC is used properly. This is simpler anyway.
+ * tests/misc/sort-files0-from.pl: Adjust to change in diagnostic
+ wording.
+
+ build: update gnulib submodule to latest
+
+2017-08-14 Pádraig Brady <P@draigBrady.com>
+
+ kill: fix signal number to name lookup on AIX
+ * src/operand2sig.c (operand2sig): AIX uses a different bit pattern
+ in the returned status from the wait() functions and from shells.
+ Therefore hardcode the selection of the lower bits of the number.
+ * NEWS: Mention the fix.
+
+ build: use the appropriate single file include option with xlc
+ * configure.ac: Set USE_XLC_INCLUDE when __xlc__ is defined.
+ * src/local.mk: Use it to select the appropriate include option.
+ Reported by Michael Felt.
+
+ tests: avoid false failures on AIX
+ * tests/ln/sf-1.sh: Limit the symlink size to 1MiB
+ to avoid memory exhaustion seen on NFS on AIX, giving:
+ + printf '%0*d' 4294967296 0
+ + ./tests/ln/sf-1.sh: line 38: printf: warning: 0: Result too large
+ * tests/id/setgid.sh: Skip the test when the adjusted gid
+ would equal 4294967295, as that's reserved on AIX.
+ Reported by Michael Felt.
+
+ sort: handle musl locale differences in --debug reporting
+ * src/sort.c (main): Don't assume hard_LC_COLLATE implies
+ a successful setting of the locale as musl defaults to
+ UTF8 when failing to set the specified locale.
+ * tests/misc/sort-debug-warn.sh: Adjust for the now
+ separated locale debug info and map the musl specific
+ message back to the common case.
+ Addresses https://bugs.gnu.org/28054
+
+ seq: produce consistent error messages upon write error
+ * src/seq.c (io_error): Use the same error message as would
+ be generated at exit time when closing the stdout stream.
+ The inconsistency was added with commit v8.25-26-gc92585b.
+ This was noticed due to an inconsistency in the expected
+ error message generated by seq on musl libc.
+ Addresses https://bugs.gnu.org/28054
+
+ tests: fix false failure with large printf formats
+ * tests/misc/printf-surprise.sh: With musl libc the
+ large printf format does succeed, outputting data.
+ To avoid SIGPIPE being generated we ignore that signal
+ and then handle the subsequent EPIPE error.
+ Addresses https://bugs.gnu.org/28054
+
+2017-08-12 Jim Meyering <meyering@fb.com>
+
+ build: adjust warning options to work with latest GCC
+ * configure.ac: Disable some new warnings to avoid false positives.
+ Building with warnings enabled and latest gcc would evoke build
+ failure without these changes. Disable the following in coreutils
+ proper: -Wformat-overflow=2 -Wformat-truncation=2, and
+ disable these for gnulib: -Wformat-truncation=2 -Wduplicated-branches
+
+ gnulib: update to latest and adjust gl/modules/tempname.diff
+ * gnulib: Update to latest.
+ * gl/modules/tempname.diff: This patch failed to apply.
+ Adjust it to reflect removal of the secure_getenv dependency.
+
+ chroot: fix typo in preceding change: didn't compile
+ * src/chroot.c (usage): Add backslashes.
+
+2017-08-10 Jim Meyering <meyering@fb.com>
+
+ doc: correct technicality in chroot's --help output
+ * src/chroot.c (usage): Use correct quoting in descriptive diagnostic.
+ We would run `"$SHELL" -i`, not `${SHELL} -i`.
+
+2017-08-09 Assaf Gordon <assafgordon@gmail.com>
+
+ doc: fix join example
+ * doc/coreutils.texi (join invocation): Fix incorrect output in example.
+ Reported by Phlosioneer in https://bugs.gnu.org/28014 .
+
+2017-08-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+
+2017-08-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ copy: more-accurate warning about destruction
+ * src/copy.c (copy_internal):
+ * tests/cp/backup-is-src.sh, tests/mv/backup-is-src.sh:
+ Say "might destroy", not "would destroy".
+
+2017-08-03 Pádraig Brady <P@draigBrady.com>
+
+ maint: avoid a syntax-check failure
+ * src/shred.c (wipename): As per the comment, the arguments
+ to error() are sufficiently quoted, so split the call over
+ multiple lines to avoid the syntax-check.
+
+2017-08-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+
+2017-08-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ copy: go back to failing 'cp --backup a~ a'
+ Suggested by Kamil Dudka in:
+ http://lists.gnu.org/archive/html/coreutils/2017-07/msg00072.html
+ * NEWS: Document the changed nature of the fix.
+ * doc/coreutils.texi, tests/cp/backup-is-src.sh:
+ * tests/mv/backup-is-src.sh: Revert previous change.
+ * src/copy.c (source_is_dst_backup): New function.
+ (copy_internal): Use it. Fail instead of falling back on numbered
+ backups when it looks like the backup will overwrite the source.
+ Although this reintroduces a race, it's more compatible with
+ previous behavior.
+
+2017-07-31 Paul Eggert <eggert@cs.ucla.edu>
+
+ copy: sanity-check --suffix
+ * src/cp.c, src/install.c, src/ln.c, src/mv.c (main):
+ Use set_simple_backup_suffix, to sanity-check the user-supplied
+ backup suffix.
+
+ copy: make backup files more reliably
+ * NEWS, doc/coreutils.texi (Backup options): Document the change.
+ * bootstrap.conf (gnulib_modules): Add backup-rename.
+ * src/copy.c (copy_internal): Silently switch to numbered backups
+ if a simple backup might lose data. Use backup_file_rename
+ to avoid races with numbered backups.
+ * tests/cp/backup-is-src.sh, tests/mv/backup-is-src.sh:
+ Adjust to match new behavior.
+
+ shred: avoid rename race
+ Use renameat2 to avoid a rename race condition, on recent-enough
+ GNU/Linux.
+ * bootstrap.conf (gnulib_modules): Add renameat2.
+ * src/shred.c: Include renameat2.h.
+ (wipename): Use renameat2 instead of rename.
+
+ build: update gnulib submodule to latest
+
+2017-07-25 Jim Meyering <meyering@fb.com>
+
+ maint: fix grammar in a shred.c comment
+ * src/shred.c: Remove spurious "to" in an old comment.
+
+2017-07-23 Pádraig Brady <P@draigBrady.com>
+
+ maint: fix recent syntax-check failures
+ * .gitignore: Add /lib/utime.h from the recent gnulib update.
+ * src/nproc.c (usage): Adjust spacing to placate help2man.
+
+ shred: remove redundant zeroing of freed memory
+ * src/shred.c (dopass): shred used to read the input file,
+ and so needed to ensure internal memory was cleared.
+ This is no longer the case since SH-UTILS-1_16f-260-gf381610
+ so avoid this redundant clearing.
+ (do_wipefd): Likewise.
+ * NEWS: Remove the recent mention of this issue.
+
+ maint: resync with blake2 upstream
+ * src/blake2/blake2-impl.h: Don't use the equivalent explicit_bzero().
+
+ tests: avoid a false failure on AIX
+ * tests/misc/sync.sh: Normalize the error messages
+ when syncing a non read/write directory, as AIX
+ gives the "Is a directory" error.
+ Also ensure that sync(1) returns an error for this
+ case on all systems.
+
+2017-07-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ shred: use explicit_bzero
+ * NEWS: Document this.
+ * bootstrap.conf (gnulib_modules): Add explicit_bzero.
+ * gl/lib/randint.c (randint_free):
+ * gl/lib/randread.c (randread_free):
+ * src/blake2/blake2-impl.h (secure_zero_memory):
+ * src/shred.c (dopass, do_wipefd):
+ Prefer explicit_bzero to memset when erasing secrets.
+
+ build: update gnulib submodule to latest
+
+2017-07-10 Andreas Schwab <schwab@linux-m68k.org>
+
+ nproc: fix indentation of usage output
+ * src/nproc.c (usage): Align output.
+
+2017-07-10 Jim Meyering <meyering@fb.com>
+
+ groups: do not exit early
+ Most programs take care to operate on all command-line-specified
+ operands before exiting. That is an important feature that allows
+ to identify all problems with the first run. However, groups would
+ exit upon the first problematic user name.
+ Bug introduced via commit v6.10-56-g167b8025ac.
+ * src/groups.c (main): Do not exit immediately upon error.
+ * tests/misc/groups-process-all.sh: New file. Test for this.
+ * tests/local.mk (all_tests): Add it.
+ * NEWS (Bug fixes): Mention this.
+
+2017-07-08 Jim Meyering <jim@meyering.net>
+
+ tests: groups-dash.sh: avoid false failure
+ * tests/misc/groups-dash.sh: Avoid false failure on a system for which
+ "none" is a valid user name. The first invocation would succeed, and
+ the second would fail with "groups: ‘--’: no such user".
+ Use a user name that cannot exist.
+
+ doc: tweak wording
+ * NEWS (Bug fixes): Tweak wording of the mv/cp-vs-symlink-ownership
+ entry and the one about df.
+
+2017-06-28 Assaf Gordon <assafgordon@gmail.com>
+
+ expr: add multibyte support
+ Discussed in https://bugs.gnu.org/26779 .
+
+ * NEWS: Mention the improvement.
+ * bootstrap.conf: Add gnulib modules mbslen,mbschr.
+ * src/expr.c (mbs_logical_substr): New function to return a substring
+ based on logical character positions (instead of bytes).
+ (mbs_logical_cspn): Similar to strcspn/mbscspn, but returns number of
+ logical characters instead of byte offset.
+ (mbs_offset_to_chars): New function to return number of logical
+ characters fitting in a given byte offset.
+ (docolon): Report matched logical characters instead of bytes.
+ (eval6): For length/substr/index operations, use logical characters
+ instead of bytes by calling the above new functions.
+ * tests/misc/expr.pl: Repeat all tests with non-C locale to detect any
+ regressions.
+ * tests/misc/expr-multibyte.pl: New tests with multibyte input.
+ * tests/local.mk: Add new test file.
+
+2017-06-21 Jim Meyering <meyering@fb.com>
+
+ maint: avoid spurious "make distcheck" failure
+ When the generated file, doc/constants.texi, happens to be older than
+ doc/coreutils.info, it will not be updated until/unless its generated
+ contents change. This is due to way that rule is careful to update
+ the file, to avoid provoking a pointless rerunning of makeinfo.
+
+ Note that this does not happen when one first runs "make distclean",
+ as recommended in README-release. However, I sometimes run it as
+ a more-rigorous "make check", and shouldn't have to manually run
+ "make distclean" first, in that case.
+
+ Before this change, one could reproduce the failure by running
+ `touch -dyesterday doc/constants.texi && make distcheck`. It would
+ fail with "makeinfo: could not open ../../doc/coreutils.info-t
+ for writing: Permission denied"
+ * Makefile.am (dist-hook): Touch the two generated files, so that
+ they cannot be out of date wrt doc/coreutils.texi.
+
+2017-06-17 Pádraig Brady <P@draigBrady.com>
+
+ maint: use C99 for loop initial declarations where possible
+ This results in a net reduction of about 120 lines.
+
+ tail: only use inotify with regular files
+ * src/tail.c (any_non_regular): A new function to check passed files.
+ (main): Use the above to skip inotify if any non regular files passed
+ like /dev/tty or /dev/ttyUSB0 etc.
+ * tests/tail-2/inotify-only-regular.sh: A new test.
+ * tests/local.mk: Reference the new test.
+ * NEWS: Mention the bug fix.
+ Fixes http://bugs.gnu.org/21265 and http://bugs.gnu.org/27368
+
+ tail: with -f don't warn if doing a blocking read of a tty
+ * src/tail.c: (main): Only issue the warning about -f being
+ ineffective when we're not going into simple blocking mode.
+ * tests/tail-2/follow-stdin.sh: Ensure the warning is output correctly.
+ Fixes http://bugs.gnu.org/27368
+
+2017-06-11 Pádraig Brady <P@draigBrady.com>
+
+ tail: exit promptly when output no longer writable
+ This will support use cases like:
+
+ tail -f file.log | grep -q trigger &&
+ process_immediately
+
+ * src/tail.c (check_output_alive): A new function that
+ uses select on fifos or pipes to detect if they're broken.
+ (tail_forever): Call check_output_alive() periodically.
+ (tail_forever_inotify): Merge the select() call from
+ check_output_alive() into the select() originally present
+ for the --pid case, and adjust accordingly.
+ * tests/tail-2/pipe-f.sh: Add test cases.
+ * NEWS: Mention the improvement.
+
+2017-06-11 Jim Meyering <meyering@fb.com>
+
+ maint: update to work with GCC7's -Werror=implicit-fallthrough=5
+ * src/system.h (FALLTHROUGH): Define.
+ * src/cp.c (main): Use new FALLTHROUGH macro in place of comments.
+ * src/basename.c (main): Likewise.
+ * src/dircolors.c (append_quoted): Likewise.
+ * src/echo.c (main): Likewise.
+ * src/fold.c (main): Likewise.
+ * src/join.c (main): Likewise.
+ * src/kill.c (main): Likewise.
+ * src/ls.c (get_funky_string, gobble_file): Likewise.
+ * src/sort.c (parse_field_count, main): Likewise.
+ * src/stat.c (print_it): Likewise.
+ * src/tail.c (parse_obsolete_option): Likewise.
+ * src/test.c (posixtest): Likewise.
+ * src/wc.c (wc): Likewise.
+ * src/who.c (main): Likewise.
+
+2017-06-07 Pádraig Brady <P@draigBrady.com>
+
+ tail: with --pid, ensure all inotify events are processed
+ * NEWS: Mention the bug fix.
+ * src/tail.c (tail_forever_inotify): With --pid, avoid waiting
+ for new events if there are still events to process.
+ * tests/tail-2/inotify-dir-recreate.sh: Adjust to trigger.
+
+ tests: fix issues with recently added tail test
+ * tests/tail-2/inotify-dir-recreate.sh: Skip when
+ inotify is not usable. Also remove a bash specific &> construct.
+
+2017-06-03 Pádraig Brady <P@draigBrady.com>
+
+ copy: don't fail when unable to chown symlinks
+ * src/copy.c (copy_internal): Honor the x->require_preserve flag
+ for symlinks as we do for ordinary files, so we don't exit with
+ failure upon failure to chown a symbolic link.
+ * NEWS: Mention the bug fix.
+
+2017-05-29 Sebastian Kisela <skisela@redhat.com>
+
+ doc: mention `setpriv --no-new-privs` feature in runcon info
+ * doc/coreutils.texi (runcon invocation): Mention setpriv usage.
+ Discussed at https://bugzilla.redhat.com/1360903
+
+2017-05-18 Pádraig Brady <P@draigBrady.com>
+
+ mv: distinguish copy and rename operations with --verbose
+ * src/copy.c (copy_internal): In x->move_mode distinguish
+ whether we're copying, creating directory, or renaming.
+ * tests/mv/backup-dir.sh: Adjust to new output.
+ * tests/mv/mv-n.sh: Likewise.
+ * tests/mv/mv-special-1.sh: Likewise.
+ * NEWS: Mention the improvement.
+ Fixes http://bugs.gnu.org/26971
+
+2017-05-11 Prateek saxena <prateeksaxena2@gmail.com>
+
+ uptime: remove inconsistent AM/PM from current time
+ * src/uptime.c (main): 00-23 was always used for the hour component
+ of the current time, so remove the AM/PM output (which was only
+ present in some locales anyway). Also add seconds to the time
+ to be more consistent with the usual procps-ng uptime implementation
+ on GNU/Linux.
+ * NEWS: Mention the fix.
+ Fixes http://bugs.gnu.org/26783
+
+2017-05-04 Pádraig Brady <P@draigBrady.com>
+
+ maint: fix various typos in recent commits
+ * NEWS: Grammar fixes.
+ * HACKING: Likewise.
+
+2017-05-04 Jaak Ristioja <jaak.ristioja@cyber.ee>
+
+ doc: Fixed typo in timeout man page
+ * man/timeout.x: Correct spelling of "currently".
+ Fixes http://bugs.gnu.org/26762
+
+2017-04-30 Pádraig Brady <P@draigBrady.com>
+
+ doc: update the instructions for generating a coverage report
+ * HACKING: Change from explicit instructions to using gnulib
+ provided coverage testing targets. Also include instructions
+ for adding root only tests to the report.
+ Fixes http://bugs.gnu.org/26709
+
+2017-04-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ dd: simplify translator’s jobs
+ * src/dd.c (print_xfer_stats): Format the SI units directly,
+ without translating them, to simplify the translators’ jobs.
+ See Bug#26621.
+
+2017-04-27 Pádraig Brady <P@draigBrady.com>
+
+ date,touch: test and document large TZ security issue
+ Add a test for CVE-2017-7476 which was fixed in gnulib at:
+ http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=commitdiff;h=94e01571
+
+ * tests/misc/date-tz.sh: Add a new test which overwrites enough
+ of the heap to trigger a segfault, even without ASAN enabled.
+ * tests/local.mk: Reference the new test.
+ * NEWS: Mention the bug fix.
+
+2017-04-27 Pádraig Brady <P@draigBrady.com>
+
+ build: update gnulib submodule to latest
+ * .gitignore: Add new entry as indicated by `make syntax-check`.
+
+2017-04-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ dd: status=progress outputs "6 s", not "6.00001 s"
+ Problem reported by Benno Schulenberg (Bug#26621).
+ * NEWS: Document this.
+ * src/dd.c (print_xfer_stats): With status=progress,
+ format times with %.0f rather than %g. Improve
+ translator comments.
+
+2017-04-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+
+ maint: remove unused functions and constants
+ These were found by clang.
+ * gl/lib/rand-isaac.c (min):
+ * gl/lib/randint.c (shift_right):
+ * src/md5sum.c (algorithm):
+ Remove; unused.
+
+ date: adjust to gnulib parse-datetime changes
+ * doc/coreutils.texi (Options for date): Capitalize a sentence.
+ * tests/misc/date-debug.sh: Adjust --debug output to match
+ recent changes to Gnulib’s parse-datetime module.
+
+ build: update gnulib submodule to latest
+ * gl/modules/tempname.diff: Update to match current Gnulib.
+
+2017-04-18 Bogdan Drozdowski <bogdandr@op.pl>
+
+ shred: fix invalid pattern generation for certain sizes
+ * src/shred.c (fillpattern): Fix the "off by one" issue when
+ testing whether we have enough space to copy the already
+ written portion of the buffer to the remainder of the buffer.
+ Specifically for buffer sizes that are (3*(2^x))+1, i.e. 7,13,...
+ we both use an uninitialized byte and invoke undefined
+ behavior in memcpy() operation on overlapping memory regions.
+ * tests/misc/shred-passes.sh: Add an invocation that will
+ trigger either valgrind UMR, or ASAN like:
+ ERROR: AddressSanitizer: memcpy-param-overlap: memory ranges
+ #1 0x403065 in fillpattern src/shred.c:293
+ A direct test is awkward due to the random writes surrounding
+ the problematic pattern writes.
+ Fixes http://bugs.gnu.org/26545
+
+2017-04-17 Bo Rydberg <bolry@hotmail.com>
+
+ doc: fix awk example for getting penultimate field
+ * doc/coreutils.texi (cut invocation): Add required brackets.
+ Fixes http://bugs.gnu.org/26519
+
+2017-04-06 Sebastian Kisela <skisela@redhat.com>
+
+ tail: revert to polling if a followed directory is replaced
+ * src/tail.c (tail_forever_inotify): Add the IN_DELETE_SELF flag when
+ creating watch for the parent directory. After the parent directory
+ is removed, an event is caught and then we switch from inotify to
+ polling mode. Till now, inotify has always frozen because it waited for
+ an event from a watched dir, which has been already deleted and was not
+ added again.
+ * tests/tail-2/inotify-dir-recreate.sh: Add a test case.
+ * tests/local.mk: Reference the new test.
+ * NEWS: Mention the bug fix.
+ Fixes http://bugs.gnu.org/26363
+ Reported at https://bugzilla.redhat.com/1283760
+
+2017-04-06 Pádraig Brady <P@draigBrady.com>
+
+ maint: fix syntax-check issues in previous tty commit
+ * src/tty.c: Avoid EXIT_FAILURE to be more descriptive
+ and to placate sc_some_programs_must_avoid_exit_failure.
+
+2017-04-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ tty: handle misconfigured namespaces
+ On some platforms, isatty succeeds but ttyname fails.
+ POSIX does not seem to allow this, but there it is.
+ Problem reported by Christian Brauner (Bug#26371).
+ While we’re at it, check for errors more carefully and return a
+ new exit status 4 if stdin is closed or a similar error occurs.
+ * doc/coreutils.texi (tty invocation): Document new behavior.
+ * init.cfg (stderr_fileno_):
+ Don't assume have_input_tty is not in the environment.
+ * src/tty.c (TTY_STDIN_ERROR): New constant.
+ (main): Exit with nonzero status if there is a usage error,
+ like other coreutils programs.
+ Check for error in getting stdin type.
+ * tests/misc/tty.sh: New file.
+ * tests/local.mk (all_tests): Add it.
+
+2017-04-03 Pádraig Brady <P@draigBrady.com>
+
+ doc: refactor and update expand and unexpand --help
+ * src/expand-common.c (emit_tab_list_info): A new function to
+ output the extended info on --tab=LIST, including the new
+ '+' and '/' prefixes.
+ * src/expand-common.h: Declare the above.
+ * src/expand.c (usage:): Call emit_tab_list_info and
+ match alignment with that used in unexpand --help.
+ * src/unexpand.c (usage): Likewise.
+
+2017-04-03 Jacob Keller <jacob.e.keller@intel.com>
+
+ expand,unexpand: add support for incremental tab stops
+ Support --tabs="1,+8" which is equivalent to --tabs="1,9,17,..."
+ useful for viewing unified diff output with its 1 character
+ gutter for example.
+
+ * doc/coreutils.texi ({expand,unexpand} invocation): Document,
+ using diff processing as the example.
+ * src/expand-common.c (set_increment_size): Update the new
+ increment_size global.
+ (parse_tab_stops): Handle the new '+' prefix.
+ (finalize_tab_stops): Verify both '+' and '/' prefixes
+ are not used together.
+ * tests/misc/expand.pl: Add test cases.
+ * NEWS: Mention the new feature.
+
+2017-03-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ sort: update comment
+ * src/sort.c: Update identifiers in comment.
+
+2017-03-30 Chris Davies <chris@roaima.co.uk>
+
+ doc: clarify in dd man page that bs= overrides [io]bs=
+ * src/dd.c (usage): Add the extra info.
+ Reported in https://bugs.debian.org/859021
+
+2017-03-28 Ludovic Courtès <ludo@gnu.org>
+
+ tests: avoid false ulimit failure on some systems
+ * tests/misc/cut-huge-range.sh: On some systems returns_ may
+ use more memory, so incorporate that in the determination
+ of the ulimit value to use. Noticed on ARMv7 with bash-4.4.12,
+ and x86_64 with bash-4.2.37.
+ Fixes http://bugs.gnu.org/26253
+
+2017-03-28 Pádraig Brady <P@draigBrady.com>
+
+ maint: avoid syntax check failure with wrapped returns_
+ * cfg.mk (sc_prohibit_env_returns): Allow wrapped calls to
+ return_ of the form: `wrapper_ returns_ ...` which is needed
+ with the following commit.
+
+2017-03-28 Michael Heimpold <mhei@heimpold.de>
+
+ split: add new --hex-suffixes option
+ * doc/coreutils.texi (split invocation): Document the new option.
+ * src/split.c (usage): Likewise.
+ (main): Process the new option much like --numeric-suffixes,
+ but with an adjusted alphabet.
+ * tests/split/numeric.sh: Refactor to support --hex mode.
+ * NEWS: Mention the new feature.
+
+2017-03-28 Pádraig Brady <P@draigBrady.com>
+
+ md5sum,b2sum,sha*sum: don't erroneously trigger BSD reversed mode
+ * src/md5sum.c (split_3): Verify hex digits internally before
+ triggering the global bsd_reversed mode flag.
+ (bsd_split_3): Likewise.
+ * tests/misc/md5sum-bsd.sh: Add a test case.
+ * NEWS: Mention the bug fix.
+ Fixes http://bugs.gnu.org/26263
+
+2017-03-27 Philipp Thomas <pth@suse.de>
+
+ df: avoid querying excluded file systems
+ * src/df.c (filter_mount_list): Avoid stat() on
+ explicitly excluded file systems, which is especially
+ significant in cases like `-x nfs` which may hang.
+ * NEWS: Mention the bug fix.
+
+2017-03-26 Pádraig Brady <P@draigBrady.com>
+
+ maint: avoid a static analysis warning in expand-common
+ * src/expand-common.c (next_file): We're dependent on calling
+ this function with NULL to initialize things appropriately.
+ So enforce this with assert(), which avoids a warning from
+ clang-anaylzer.
+
+ split: process more efficiently when filters exit early
+ * src/split.c (bytes_split): Don't write to an existing filter
+ if it has exited. When filters exit early, skip input data if
+ possible. Refactor out 2 redundant variables.
+ * tests/split/filter.sh: Improve test coverage given the
+ new more efficient processing. Also use a 10TB file to
+ expand the file systems tested on.
+
+2017-03-26 Pádraig Brady <P@draigBrady.com>
+
+ split: ensure input is processed when filters exit early
+ commit v8.25-4-g62e7af0 introduced the issue as it
+ broke out of the processing loop irrespective of
+ the value of new_file_flag which was used to indicate
+ a finite number of filters or not.
+
+ For example, this ran forever (as it should):
+ $ yes | split --filter="head -c1 >/dev/null" -b 1000
+ However this exited immediately due to EPIPE being propagated
+ back through cwrite and the loop not considering new filters:
+ $ yes | split --filter="head -c1 >/dev/null" -b 100000
+
+ Similarly processing would exit early for a bounded number of
+ output files, resulting in empty data sent to all but the first:
+ $ truncate -s10T big.in
+ $ split --filter='head -c1 >$FILE' -n 2 big.in
+ $ echo $(stat -c%s x??)
+ 1 0
+
+ I was alerted to this code by clang-analyzer,
+ which indicated dead assigments, which is often
+ an indication of code that hasn't considered all cases.
+
+ * src/split.c (bytes_split): Change the last condition in
+ the processing loop to also consider the number of files
+ before breaking out of the processing loop.
+ * tests/split/filter.sh: Add a test case.
+ * NEWS: Mention the bug fix.
+
+2017-03-11 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid a false failure on OS X 10.5.8
+ * tests/misc/sort-debug-keys.sh: Disparate LC_CTYPE and LC_MESSAGES
+ are not supported, with the result LC_MESSAGES=C is used throughout.
+ Therefore just set LC_ALL in the test, and normalize the message
+ variants with sed.
+ Reported and tested by J Rogowsky.
+
+ build: fix missing renameat() on OS X 10.5.8
+ * bootstrap.conf: Depend on renameat.
+ Reported and tested by J Rogowsky.
+ Fixes http://bugs.gnu.org/26044
+
+2017-03-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ tests: port to tzdb-2017a
+ Problem reported by Bernhard Voelker in:
+ http://lists.gnu.org/archive/html/coreutils/2017-03/msg00026.html
+ * tests/misc/date-debug.sh: Port test to tzdb 2017a,
+ and future-proof the America/Belize test.
+
+2017-03-09 Pádraig Brady <P@draigBrady.com>
+
+ build: for factor use C in more cases for arm64 and ppc64
+ * src/longlong.h: Sync from gmp repo incorporating:
+ Use asm-free umul_ppmm() on arm64 and ppc64.
+
+ doc: rearrange a recent bug entry to an improvement in NEWS
+ * NEWS: The stat,tail change was an improvement, not a bug fix.
+ * cfg.mk [old_NEWS_hash]: update with `make update-NEWS-hash`.
+
+ maint: post-release administrivia
+ * NEWS: Add header line for next release.
+ * .prev-version: Record previous version.
+ * cfg.mk (old_NEWS_hash): Auto-update.
+
+ version 8.27
+ * NEWS: Record release date.
+
+
+See the source repo for older entries