summaryrefslogtreecommitdiffstats
path: root/ChangeLog
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 16:58:41 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 16:58:41 +0000
commite1908ae95dd4c9d19ee4dfabfc8bf8a7f85943fe (patch)
treef5cc731bedcac0fb7fe14d952e4581e749f8bb87 /ChangeLog
parentInitial commit. (diff)
downloadcoreutils-e1908ae95dd4c9d19ee4dfabfc8bf8a7f85943fe.tar.xz
coreutils-e1908ae95dd4c9d19ee4dfabfc8bf8a7f85943fe.zip
Adding upstream version 9.4.upstream/9.4upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog9173
1 files changed, 9173 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..06c1353
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,9173 @@
+2023-08-29 Pádraig Brady <P@draigBrady.com>
+
+ version 9.4
+ * NEWS: Record release date.
+
+2023-08-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: spelling fixes, including author names
+ Most of this just affects commentary and documentations. The only
+ significant behavior change is translating author names via
+ proper_name_lite rather than proper_name_utf8, or not translating
+ them at all. proper_name_lite is good enough for coreutils and
+ avoids the bloat that had coreutils not using Gnulib proper_name.
+ * bootstrap.conf (gnulib_modules): Use propername-lite instead
+ of propername.
+ (XGETTEXT_OPTIONS): Look for proper_name_lite instead of for
+ proper_name_utf8.
+ * cfg.mk (local-checks-to-skip): Remove
+ sc_proper_name_utf8_requires_ICONV, since we no longer use
+ proper_name_utf8.
+ (old_NEWS_hash): Update.
+ (sc_check-I18N-AUTHORS): Remove; no longer needed.
+
+ test: omit unreachable code
+ * src/test.c (unary_operator): Omit unreachable ‘return false;’.
+ Oracle Solaris Studio 12.6 warns about it.
+
+2023-08-28 Bruno Haible <bruno@clisp.org>
+
+ tests: avoid test failure on Android
+ * gl/tests/test-mbsalign.c (main): Skip the unibyte truncation test
+ on Android, when the "C" locale in fact is multibyte.
+
+2023-08-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ sort: port sort-merge-fdlimit test to Solaris 10
+ * tests/sort/sort-merge-fdlimit.sh: Give 'sort' fd 6 too.
+ Needed for the same reason sort-continue.sh needed a ulimit -n boost.
+
+ sort: port sort-continue test back to Solaris 10
+ * tests/sort/sort-continue.sh: Use ulimit -n 7 not -n 6. On
+ Solaris 10 'sort' uses Gnulib mkostemp, which calls Gnulib
+ getrandom, which opens /dev/urandom to calculate the temp file's
+ name, which means 'sort' needs one more file descriptor to work.
+
+2023-08-27 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid false failure on cygwin
+ * tests/cksum/md5sum-bsd.sh: Avoid part of test dealing with backslashes
+ in file names, on systems where backslash is a directory separator.
+ Issue reported by Bruno Haible on cygwin.
+
+2023-08-27 Pádraig Brady <P@draigBrady.com>
+
+ cksum: adjust tests and docs to binary mode handling
+ Following commit v9.3-80-g5e1e0993b which makes cksum
+ match the output of the standalone utilities...
+
+ * doc/coreutils.texi (cksum output modes): Remove the mention
+ that cksum never outputs a binary indicator, as that's no longer the
+ case.
+ * tests/cksum/b2sum.sh: Avoid outputting a binary indicator.
+ * tests/cksum/sm3sum.pl: Likewise.
+
+2023-08-27 Pádraig Brady <P@draigBrady.com>
+
+ all: avoid duplicated write errors on FreeBSD
+ * src/system.h (write_error): Also call fpurge(), which was seen to
+ be needed on FreeBSD 13.1 to avoid duplicated write errors.
+ * src/head.c (xwrite_stdout): Likewise.
+ * bootstrap.conf: Depend on fpurge.
+ Reported by Bruno Haible.
+
+ tests: avoid false failure where sleep is a shell builtin
+ * tests/misc/usage_vs_getopt.sh: Handle sleep as a shell builtin,
+ which was seen on Alpine Linux 3.18.
+
+2023-08-27 Bruno Haible <bruno@clisp.org>
+
+ build: fix link errors of sort, split on CentOS 5 and Solaris 10
+ * src/local.mk (src_sort_LDADD, src_split_LDADD): Add $(CLOCK_TIME_LIB).
+
+ build: fix compilation error on AIX 7.1
+ * src/copy.c (copy_internal): Don't test for ENOTEMPTY if it has the
+ same value as EEXIST.
+
+2023-08-27 Pádraig Brady <P@draigBrady.com>
+
+ build: update with gnulib fixes
+ * gnulib: Update to incorporate gnulib fixes
+ from Bruno Haible from his coreutils 9.4 pre-release testing.
+
+2023-08-24 Pádraig Brady <P@draigBrady.com>
+
+ doc: remove older ChangeLog items
+ * Makefile.am: Update the oldest documented version
+ to 8.30 which is now about 5 years old.
+
+2023-08-23 Pádraig Brady <P@draigBrady.com>
+
+ shred: fix operation on Solaris with 64 bit builds
+ * NEWS: Mention the bug fix.
+ * gl/lib/randread.c (get_nonce): Limit getrandom() <= 1024 bytes.
+
+2023-08-22 Pádraig Brady <P@draigBrady.com>
+
+ build: update gnulib submodule to latest
+ * gnulib: Update to latest
+
+ doc: reorg texinfo for the checksumming utilities
+ * doc/coreutils.texi: Reorg so that 'cksum invocation' is the
+ main node listing all options and output formats, which is then
+ referenced by the descriptions of the standalone utilities.
+ Use macros in the description of the standalone utilities
+ rather than referencing 'md5sum invocation' to be more direct.
+
+2023-08-21 Pádraig Brady <P@draigBrady.com>
+
+ doc: cksum: remove -b description from texinfo
+ * doc/coreutils.texi (cksum invocation): Following commit 5e1e0993
+ also remove the desciption of the -b option for the cksum command.
+
+ cp: with --sparse=never, avoid COW and copy offload
+ * src/cp.c (main): Set default reflink mode appropriately
+ with --sparse=never.
+ * src/copy.c (infer_scantype): Add a comment to related code.
+ * tests/cp/sparse-2.sh: Add a test case.
+ * NEWS: Mention the bug.
+
+2023-08-19 Pádraig Brady <P@draigBrady.com>
+
+ maint: comment spelling fix
+ * tests/split/l-chunk-root.sh: Fix recently introduced typo.
+
+2023-08-16 Pádraig Brady <P@draigBrady.com>
+
+ maint: remove extraneous line in NEWS
+ * NEWS: Remove extraneous line.
+
+2023-08-15 Bruno Haible <bruno@clisp.org>
+
+ uptime: simplify following gnulib changes
+ * build-aux/gen-lists-of-programs.sh (build_if_possible_progs):
+ Remove uptime.
+ (normal_progs): Add uptime.
+ * configure.ac: Remove GNULIB_BOOT_TIME invocation.
+ * m4/boottime.m4: Remove file.
+ * src/uptime.c: Don't include <sys/sysctl.h>, <OS.h>.
+ (print_uptime): Don't call sysctl, get_system_info, as Gnulib's
+ readutmp module now does this.
+
+2023-08-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: update uptime NEWS
+ * NEWS: Update as per Bruno Haible <https://bugs.gnu.org/65255#14>.
+
+2023-08-15 Pádraig Brady <P@draigBrady.com>
+
+ tests: fix false failure due to locale on alpine
+ * tests/sort/sort-debug-keys.sh: Decimal point was seen to be '.'
+ on fr_FR.UTF-8 on Alpine Linux 3.18, so add an extra guard
+ to ensure we've a ',' as the decimal point on this locale.
+ Fixes https://bugs.gnu.org/65310
+
+2023-08-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ uptime: be more generous about read_utmp failure
+ * src/uptime.c (print_uptime): Check for overflow
+ when computing uptime. Use C99-style decl after statements.
+ Do not let an idx_t value go negative.
+ (print_uptime, uptime): Be more generous about read_utmp failures,
+ or when read_utmp does not report the boot time. Instead of
+ failing, warn but keep going, printing the information that we did
+ get, and then exit with nonzero status.
+ (print_uptime): Return the desired exit status. Caller changed.
+
+2023-08-15 Bruno Haible <bruno@clisp.org>
+
+ uptime: Include VM sleep time in the "up" duration
+ * src/uptime.c: Don't include c-strtod.h.
+ (print_uptime): Don't read /proc/uptime, because the value it provides
+ does not change when a date adjustment occurs.
+ * bootstrap.conf (gnulib_modules): Remove 'uptime'.
+
+2023-08-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+
+2023-08-15 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: fix typo in NEWS
+ * NEWS: s|/who/log/wtmp|/var/log/tmp|, introduced in commit 85edb4afbd1.
+
+2023-08-15 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ doc: reference install(1) and cp(1) from each other
+ * man/cp.x (SEE ALSO): Add install(1).
+ * man/install.x (SEE ALSO): Add cp(1).
+
+ Discussed at
+ https://lists.gnu.org/r/coreutils/2023-08/msg00026.html
+
+2023-08-14 Bruno Haible <bruno@clisp.org>
+
+ build: fix recent compilation error on GNU/Hurd
+ * src/copy.c (set_author): Revert change from MACH_PORT_NULL to
+ MACH_PORT_nullptr from commit 16b5ca6e (2023-06-29).
+
+2023-08-14 Pádraig Brady <P@draigBrady.com>
+
+ maint: avoid syntax-check failure
+ * po/POTFILES.in: Cater to lib/file-type.c adjustments
+ as suggested by sc_po_check.
+
+2023-08-14 Bruno Haible <bruno@clisp.org>
+
+ build: fix link errors with gcc < 4.8
+ * configure.ac: Attempt to link, not only compile, the test programs
+ with __builtin_cpu_supports, to avoid link errors with cksum and wc.
+
+2023-08-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: improve NEWS discussion of systemd
+
+ build: update gnulib submodule to latest
+
+2023-08-12 Pádraig Brady <P@draigBrady.com>
+
+ maint: allow use of printf C99 integer size specifiers
+ Older systems that had issues with these like HP-UX and Solaris 8
+ are now obsolete, and can easily apply patches to provide support.
+ Also we've used %td since coreutils 9.1, with no reported issues.
+
+ * cfg.mk (sc_prohibit-c99-printf-format): Remove to allow use of
+ %[jtz] size specifiers, which allows for cleaner code
+ by avoiding the need to cast to PRI?MAX etc.
+
+2023-08-11 Pádraig Brady <P@draigBrady.com>
+
+ doc: separate out description of 2038 time stamp change
+ * NEWS: Separate out the description of the _existing_ issues
+ with outputting timestamps on 32 bit systems, from _future_ issues
+ outputting timestamps on all systems. Also move this to the
+ "improvement" section, since it's not really a coreutils
+ specific issue, and also is a build time configurable option.
+
+2023-08-11 Bruno Haible <bruno@clisp.org>
+
+ pinky,users,who: optimize read_utmp invocation
+ When we are only interested in entries of type USER_PROCESS, tell
+ read_utmp that it does not need to determine the boot time.
+
+ * src/pinky.c (short_pinky): Pass option READ_UTMP_USER_PROCESS.
+ * src/users.c (users): Likewise.
+ * src/who.c (who): Likewise, if calling list_entries_who.
+
+2023-08-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ who: simplify based on readutmp changes
+ * src/pinky.c (time_string, print_entry, scan_entries, short_pinky):
+ * src/uptime.c (print_uptime, uptime):
+ * src/users.c (list_entries_users, users):
+ * src/who.c (UT_TYPE_RUN_LVL, UT_TYPE_INIT_PROCESS)
+ (UT_TYPE_LOGIN_PROCESS, UT_TYPE_DEAD_PROCESS, UT_TYPE_NEW_TIME)
+ (time_string, print_user, print_boottime)
+ (make_id_equals_comment, print_deadprocs, print_login)
+ (print_initspawn, print_clockchange, print_runlevel)
+ (list_entries_who, scan_entries, who):
+ Simplify, partly by using plain -> rather than macros.
+
+ pinky,who: omit pragma
+ * src/pinky.c, src/who.c:
+ Omit no-longer-needed -Wstringop-overread pragma.
+
+2023-08-09 Bruno Haible <bruno@clisp.org>
+
+ maint: Simplify after gnulib changed
+ Update gnulib submodule to latest.
+ All of UT_USER_SIZE, UT_ID_SIZE, UT_LINE_SIZE, UT_HOST_SIZE are now -1.
+
+ * src/pinky.c (print_entry): Remove code for bounded-length ut_line,
+ ut_user, ut_host.
+ (scan_entries): Remove code for bounded-length ut_user.
+ * src/who.c (print_line): Remove userlen, linelen arguments.
+ (print_user): Remove code for bounded-length ut_line, ut_user, ut_host.
+ (make_id_equals_comment): Remove code for bounded-length ut_id.
+ (print_boottime, print_deadprocs, print_login, print_initspawn,
+ print_clockchange, print_runlevel, print_heading): Update print_line
+ invocations.
+ (scan_entries): Remove code for bounded-length ut_line.
+
+2023-08-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: Update after gnulib module 'readutmp' changed
+ (This patch is coauthored with Bruno Haible,
+ with original version at <https://bugs.gnu.org/64937#>.)
+ This updates the gnulib submodule to latest.
+ For year-2038 safety on Linux/{x86,arm},
+ this adds an --enable-systemd option to ‘configure’.
+ The idea is that this sort of thing will become the default
+ after it has been tested more.
+ * configure.ac: Don't test whether struct utmp and struct utmpx
+ have the ut_host field; this is now done in gnulib's readutmp module.
+ * src/local.mk: Link the programs 'pinky', 'uptime', 'users',
+ 'who' with $(READUTMP_LIB).
+ * src/pinky.c, src/who.c:
+ Test HAVE_STRUCT_XTMP_UT_HOST instead of HAVE_UT_HOST.
+ * src/pinky.c (print_entry):
+ * src/who.c (print_user, print_deadprocs, print_login)
+ (print_initspawn, scan_entries):
+ Support the situation where ut_line is a 'char *' rather than a
+ 'char[]' of fixed size. Likewise for ut_user and ut_host.
+ (make_id_equals_comment): Likewise for ut_id.
+ * src/pinky.c (print_entry):
+ * src/who.c (print_user):
+ Open /dev to simplify looking up its entries.
+ Don’t use printf if the output might in theory be longer than INT_MAX.
+ * src/pinky.c (scan_entries, short_pinky):
+ * src/uptime.c (print_uptime, uptime):
+ * src/users.c (list_entries_users, users):
+ * src/who.c (who):
+ Use idx_t where new read_utmp needs it.
+ * src/system.h (STREQ_LEN): Add comment that last arg can be -1.
+
+2023-08-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ uptime: fix Y5881633 bug
+ * src/uptime.c (print_uptime): Prefer signed types.
+ Fix unlikely bug on platforms with 32-bit long and 64-bit time_t
+ if the idle time exceeds 2**31 days (about 6 million years...).
+
+ pinky: fix "d" typo
+ Problem reported by Bruno Haible (bug#65003).
+ * src/pinky.c (idle_string): Fix recently-introduced typo:
+ missing "d" for "days".
+
+2023-08-01 Dragan Simic <dsimic@manjaro.org>
+
+ maint: minor comment cleanups
+ * src/cut.c: Adjust a few comments slightly, simply to have their
+ trailing whitespace the same as in the majority of the comments.
+
+ cut: promptly diagnose write errors, continued
+ * src/cut.c: Complete the error-handling improvements started in
+ commit e0a4a60af5, by adding a couple of remaining checks for putchar().
+ While there, sprinkle a few rather useful comments, and perform a few
+ small code cleanups, to make the code and the comments more uniform
+ and more conformant to the official coding style. Also make the help
+ message slightly more uniform.
+
+ maint: reformat text width in HACKING
+ * HACKING: Adjust line lengths.
+
+2023-08-01 Pádraig Brady <P@draigBrady.com>
+
+ pinky: fix buffer size on 32 bit builds
+ * src/pinky.c (idle_string): Use the correct buffer size
+ following the recent int type adjustment.
+
+ od: fix issues with recent format string changes
+ * src/ioblksize.h: Avoid syntax check with redundant idx.h inclusion.
+ * src/od.c (FMT_BYTES_ALLOCATED): Increase by two to avoid:
+ error: '%s' directive writing between 1 and 2 bytes into a region
+ of size between 1 and 4 [-Werror=format-overflow=]
+ (maint): Use %td to print idx_t rather than invalid %jt format.
+
+2023-08-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ pinky: prefer signed types
+ * src/pinky.c (idle_string): Prefer intmax_t to unsigned long int;
+ this avoids an overflow on platforms where unsigned long is 32
+ bits and time_t is 64 bits (the bug could occur on such a system
+ that was idle for more than 6 million years, so it’s a bit
+ hard to supply a test case...).
+
+ pathchk: prefer signed types
+ * src/pathchk.c (validate_file_name): Prefer signed types.
+
+ numfmt: prefer signed types
+ * src/numfmt.c (suffix_power_char, powerld, expld)
+ (simple_strtod_int, double_to_human, prepare_padded_number)
+ (process_suffixed_number): Prefer signed types.
+ (process_suffixed_number): Fix an unlikely bug if an
+ arg has exactly 2**32 spaces at the start.
+
+ mktemp,seq: prefer signed types
+ * src/mktemp.c (main):
+ * src/seq.c (main): Prefer signed types.
+
+ kill: prefer signed types
+ * src/kill.c (list_signals):
+ Prefer signed types. This avoids undefined behavior on
+ theoretical platforms where unsigned and signed int have
+ different representations.
+
+ groups,id: don’t assume gid_t fits in unsigned long
+ * src/group-list.c (print_group): Convert to intmax_t or
+ uintmax_t, not to unsigned long.
+
+ dircolors,du,expr: prefer signed types
+ * src/dircolors.c (dc_parse_stream):
+ * src/du.c (max_depth, main):
+ * src/expr.c (main):
+ Prefer signed types.
+
+ od: prefer signed types
+ * src/od.c: Include stdckdint.h.
+ (bytes_to_oct_digits, bytes_to_signed_dec_digits)
+ (bytes_to_unsigned_dec_digits, bytes_to_hex_digits):
+ Use ‘char’ for these small constants.
+ (simple_strtoi): Rename from simple_strtoul. Convert to int
+ instead of unsigned long; that’s good enough. All uses changed.
+ Simplify by using ckd_mul and ckd_add to check for overflow.
+ (main): Prefer signed types to unsigned.
+
+ cksum,df,digest: prefer signed types
+ * src/cksum.c (main):
+ * src/df.c (decode_output_arg):
+ * src/digest.c (valid_digits):
+ Prefer idx_t to unsigned types when the value is an index
+ into an array.
+
+ join: prefer signed types
+ * src/join.c (struct outlist, struct field, struct line)
+ (struct seq, autocount_1, autocount_2, join_field_1, join_field_2)
+ (extract_field, keycmp, check_order, init_linep, free_spareline)
+ (getseq, delseq, prfield, prfields, prjoin, join, add_field)
+ (string_to_join_field, decode_field_spec, add_field_list)
+ (set_join_field, main):
+ Prefer signed integers to unsigned.
+
+ factor: prefer signed types
+ When it’s easy, prefer signed types to unsigned, as
+ they are less confusing and allow overflow checking.
+ * src/factor.c (struct mp_factors, udiv_qrnnd)
+ (count_leading_zeros, count_trailing_zeros)
+ (factor_insert_multiplicity, mp_factor_clear, mp_factor_insert)
+ (factor_insert_refind, factor_using_division)
+ (mp_factor_using_division, powm2, millerrabin, millerrabin2)
+ (mp_millerrabin, prime_p, prime2_p, mp_prime_p, isqrt, isqrt2)
+ (invtab, q_freq, factor_using_squfof, strto2uintmax)
+ (print_factors_single, main):
+ Prefer signed integers to unsigned.
+
+ maint: include idx.h everywhere
+ * src/system.h: Include idx.h here, instead of in every file
+ that currently uses idx_t. This should make it easier to use
+ idx_t in the future.
+
+2023-07-31 Paul Eggert <eggert@cs.ucla.edu>
+
+ who: fix only-theoretical overflow
+ Change stzncpy’s implementation to match its comment, in the case
+ where SRC + LEN would overflow. This case never happens in coreutils.
+ * src/system.h (stzncpy): Work even if SRC + LEN would overflow.
+
+2023-07-31 Pádraig Brady <P@draigBrady.com>
+
+ tac: handle short reads on input
+ This can be reproduced by getting the read() above 2G,
+ which induces a short read, thus triggering the erroneous failure.
+
+ $ truncate -s 5G 5G
+
+ $ cat 5G | TMPDIR=$PWD tac | wc -c
+ tac: /tmp/tacFt7txA: read error: Illegal seek
+ 0
+
+ With the fix in place we now get:
+
+ $ cat 5G | TMPDIR=$PWD src/tac | wc -c
+ 5368709120
+
+ * src/tac.c (tac_seekable): Use full_read() to handle short reads.
+ * NEWS: Mention the bug fix.
+ Reported at https://bugs.debian.org/1042546
+
+2023-07-31 Bruno Haible <bruno@clisp.org>
+
+ uptime: output correct user count on OpenBSD
+ * src/uptime.c (print_uptime, uptime): Always call read_utmp
+ and count the result.
+ * NEWS: Mention the fix (text by Bruno Haible).
+
+2023-07-31 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+
+2023-07-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+ * NEWS: Mention a bug that this fixes.
+
+2023-07-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ mv: better diagnostic for 'mv dir x' failure
+ Problem reported by Nir Oren <https://bugs.gnu.org/64785>.
+ * src/copy.c (copy_internal): Use a more-specific diagnostic when
+ a rename fails due to a problem that must be due to the
+ destination, avoiding user confusion in cases like 'mv dir x'
+ where x is a nonempty directory.
+ * tests/mv/dir2dir.sh: Adjust to match.
+
+2023-07-20 Pádraig Brady <P@draigBrady.com>
+
+ doc: clarify tail -n/-c +NUM operation
+ tail -n/-c +NUM, is different from tail -n/-c NUM,
+ and head -n/-c NUM, and head -n/c -NUM, in that it
+ specifies a 1 based index rather than a count to skip/include.
+ So clarify this in tail --help and tail info manual.
+ Note we also mention this gotcha at:
+ https://www.pixelbeat.org/docs/coreutils-gotchas.html#tail
+
+ * doc/coreutils.texi (tail invocation): Give examples for -c/-n +NUM,
+ to make it clear one has to specify a number 1 larger than
+ might be expected.
+ * src/tail.c (usage): State the skip at start edge case more clearly
+ in the -n description. -c is not often used with tail so we leave
+ full explanation of that to the info manual. Also split the string
+ to simplify translation.
+
+2023-07-18 Pádraig Brady <P@draigBrady.com>
+
+ maint: add a syntax check to prevent use of NULL
+ * cfg.mk (sc_prohibit_NULL): Direct to use nullptr instead.
+
+ tests: split: provide more isolated /tmp handling
+ * tests/split/l-chunk.sh: Move the "expensive" portion to ...
+ * tests/split/l-chunk-root.sh: .. A new test split from l-chunk.sh
+ which uses an isolated TMPDIR, rather than exhausting /tmp,
+ as that gives false positive failures with some other coreutils tests
+ like tac-2-nonseekable.sh and shuf-reservoir.sh at least.
+ * tests/local.mk: Reference the new test.
+
+ split: honor $TMPDIR for temp files
+ * bootstrap.conf: Depend on tmpdir rather than tmpfile,
+ as the standard tmpfile() doesn't honor $TMPDIR.
+ * src/split.c (copy_to_tmpfile): Adjust to call temp_stream() rather
+ than tmpfile();
+ * NEWS: Mention the improvement.
+
+2023-07-18 Pádraig Brady <P@draigBrady.com>
+
+ tac: fall back to /tmp if $TMPDIR is unavailable
+ This also refactors temp_stream() to its own module,
+ in preparation for use by split.
+
+ * src/tac.c: Refactor temp_stream() out to ...
+ * src/temp-stream.c: ... A new module mostly refactored from tac,
+ but uses tmpdir to more robustly support $TMPDIR,
+ while falling back to /tmp if not available.
+ * src/temp-stream.h: The new module interface.
+ * src/local.mk: Reference the new module from tac.
+ * tests/tac/tac.pl: Adjust to non failing missing $TMPDIR.
+ * po/POTFILES.in: Reference the new module with translatable strings.
+ * NEWS: Mention the user visible improvements to tac TMPDIR handling.
+
+2023-07-18 Pádraig Brady <P@draigBrady.com>
+
+ maint: add syntax check to ensure safe mkstemp usage
+ One needs to include stdlib--.h if using mkstemp()
+ lest one hits esoteric bugs with closed stdin etc.
+
+ * cfg.mk (sc_require_stdlib_safer): Add a new syntax check.
+ (sc_require_stdio_safer): Fix this; broken since commit fa7ed969c3.
+
+2023-07-17 Pádraig Brady <P@draigBrady.com>
+
+ join: promptly diagnose write errors
+ * src/join.c (prjoin): Check for write errors after each line.
+ * tests/misc/write-errors.sh: enable the test for join.
+ * NEWS: Mention the improvement.
+
+ comm: promptly diagnose write errors
+ * src/comm.c (writeline): Simplify by removing the unneeded STREAM
+ parameter. Call write_error() upon ferror().
+ (compare_files): Adjust to simplified writeline().
+ * tests/misc/write-errors.sh: Enable comm test.
+ * NEWS: Mention the improvement.
+
+ cut: promptly diagnose write errors
+ * src/cut.c (cut_bytes): Diagnose errors from fwrite() and putchar().
+ (cut_fields): Likewise.
+ * tests/misc/write-errors.sh: Enable the test for cut,
+ and augment to cover both cut_bytes() and cut_fields().
+ * NEWS: Mention the improvement.
+
+ uniq: promptly diagnose write errors
+ * src/uniq.c (write_line): Check the output from fwrite() immediately.
+ (check_file): Likewise.
+ * tests/misc/write-errors.sh: Enable the test case.
+ * NEWS: Mention the improvement.
+
+ od: promptly diagnose write errors
+ * src/od.c (dump): Check for write errors after each block written,
+ to exit early even with large / unbounded inputs.
+ * tests/misc/write-errors.sh: enable od check.
+ * NEWS: Mention the improvement.
+ Fixes https://bugs.gnu.org/64540
+
+ all: avoid repeated diagnostic upon write error
+ * cfg.mk (sc_some_programs_must_avoid_exit_failure): Adjust to
+ avoid false positive.
+ (sc_prohibit_exit_write_error): A new syntax check to prohibit
+ open coding error(..., "write error"); instead directing to use...
+ * src/system.h (write_error): ... a new function to clear stdout errors
+ before we explicitly diagnose a write error and exit.
+ * src/basenc.c: Use write_error() to ensure no repeated diagnostics.
+ * src/cat.c: Likewise.
+ * src/expand.c: Likewise.
+ * src/factor.c: Likewise.
+ * src/paste.c: Likewise.
+ * src/seq.c: Likewise.
+ * src/shuf.c: Likewise.
+ * src/split.c: Likewise.
+ * src/tail.c: Likewise.
+ * src/tr.c: Likewise.
+ * src/unexpand.c: Likewise.
+ * tests/misc/write-errors.sh: Remove TODOs for the fixed utilities:
+ expand, factor, paste, shuf, tr, unexpand.
+
+ tests: ensure utilties exit promptly upon write error
+ * tests/local.mk: Reference the new test.
+ * tests/misc/write-errors.sh: A new test to ensure utilities
+ exit promptly upon writing to /dev/full.
+
+2023-07-14 Jim Meyering <meyering@meta.com>
+
+ cksum: improve problematic_chars function
+ * src/digest.c (problematic_chars): Implement using strcspn,
+ and traversing S only once, rather than once per escaped byte.
+
+2023-07-12 Pádraig Brady <P@draigBrady.com>
+
+ maint: give a new function the "pure" attribute
+ * src/digest.c (problematic_chars): This recently introduced
+ function does not modify state so is pure, even though GCC 13.1 at least
+ did not warn about that attribute being appropriate.
+
+2023-07-11 Pádraig Brady <P@draigBrady.com>
+
+ cksum: escape filenames with a leading '\' in --check status
+ * src/digest.c (digest_check): Also escape in the case that the
+ file name contains '\'.
+ * tests/cksum/md5sum-bsd.sh: Add a test case.
+ * doc/coreutils.texi (md5um invocation): Clarify escaping operation.
+ * NEWS: Mention the bug fix.
+ Fixes https://bugs.gnu.org/64392
+
+2023-07-09 Pádraig Brady <P@draigBrady.com>
+
+ cksum: support transparent emulation of older utils
+ Support -b, --binary, and -t, --text
+ to allow full emulation of older utilities with:
+ exec cksum -a $algo --untagged "$@"
+ Note this would diverge from OpenBSD's support of cksum -b.
+
+ * src/digest.c: Change -b to mean --binary, not --base64 in all cases.
+ Accept -b and -t in all cases. Keep --binary and --text undocumented
+ for cksum.
+ * tests/cksum/cksum-base64.pl: s/-b/--base64/.
+ * tests/cksum/cksum-a.sh: Ensure cksum supports -b and -t appropriately.
+ * NEWS: Mention the change in behavior.
+
+2023-07-08 Pádraig Brady <P@draigBrady.com>
+
+ maint: avoid static analysis failure for ignored dup2 return
+ * src/sort.c: We're ignoring failures from these calls,
+ so do so explicitly to avoid static analysis issues
+ as reported by coverity.
+
+2023-07-04 Sylvestre Ledru <sylvestre@debian.org>
+
+ tests: mktemp -t: $TMPDIR has higher priority than -p
+ * tests/misc/mktemp.pl: Ensure that with -t,
+ $TMPDIR has precedence over -p.
+
+2023-07-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: update .gitignore
+ Add some newly-created Gnulib files,
+ plus some bootstrap temporaries.
+
+ stty: fix untranslated diagnostics
+ * src/stty.c (set_speed): Translate diagnostics.
+
+ maint: sync bootstrap from Gnulib
+ * bootstrap: Copy from gnulib/build-aux/bootstrap.
+
+ maint: prefer ckd_add to INT_ADD_WRAPV etc
+ * bootstrap.conf (gnulib_modules): Add stdckdint.
+ Also, in C source code, prefer C23 macros like ckd_add
+ to their Gnulib near-equivalents like INT_ADD_WRAPV.
+ Include <stdckdint.h> as needed.
+
+ who: don’t crash if clock gyrates
+ * src/who.c (idle_string): Avoid signed integer overflow
+ if the superuser messes with the clock in bizarre ways.
+ Remove an ‘assume’ that wasn’t correct under this scenario.
+
+ df: omit GCC 5 ‘assume’s
+ * src/df.c (main):
+ * src/shred.c (dopass):
+ Omit ‘assumes’ needed to pacify GCC 5 but not needed with GCC 13.
+
+ maint: pacify GCC bug#109613 better
+ * src/cut.c (cut_file):
+ * src/nl.c (nl_file): Pacify GCC Bug#109613 in a better way, by
+ narrowing the coverage of the ‘assume’ so that bugs in the
+ no-longer-covered part are not masked.
+
+ maint: stop pacifying Parfait
+ * src/fmt.c (get_paragraph):
+ * src/stty.c (display_changed, display_all): Omit calls to
+ ‘assume’ that are present only to pacify false positives by Parfait
+ <https://labs.oracle.com/pls/apex/f?p=94065:12:17236785746387:13>,
+ which went in-house in 2012 and never came back.
+
+ build: update gnulib submodule to latest
+
+ maint: go back to using ‘error’
+ Now that Gnulib’s ‘error’ module does proper static checking
+ for not returning, we need no longer use the ‘die’ macro.
+ This makes code easier to read for people that are used to ‘error’.
+ * cfg.mk (error_fns, exclude_file_name_regexp): Remove ‘die’.
+ (sc_die_EXIT_FAILURE): Remove.
+ * src/die.h: Remove. All includes removed. All calls to ‘die’
+ changed back to calls to ‘error’.
+ * src/install.c (get_ids): Use quoteaf (problem found with
+ make syntax-check).
+ * src/system.h: Include error.h, since some of our macros call ‘error’.
+ Stop including error.h elsewhere.
+
+ maint: improve static and dynamic checking
+ This modernizes the source code somewhat, to take advantage
+ of advances in GCC over the years, and Gnulib’s ‘assure’ module.
+ Include assure.h in files that now need it.
+ Do not include assert.h directly; it’s no longer needed.
+ * bootstrap.conf (gnulib_modules): Add ‘assure’.
+ * gl/lib/randread.c (randread_error):
+ * src/chmod.c (describe_change):
+ * src/chown-core.c (describe_change):
+ * src/cp.c (decode_preserve_arg):
+ * src/head.c (diagnose_copy_fd_failure):
+ * src/ls.c (parse_ls_color):
+ * src/od.c (decode_one_format):
+ * src/split.c (main):
+ * src/test.c (binary_operator, posixtest):
+ Prefer affirm to abort, since it has better diagnostics in the
+ normal case and better performance with -DNDEBUG.
+ * gl/lib/xdectoint.c, src/die.h: Include stddef.h, for unreachable.
+ * gl/lib/xdectoint.c: Do not include verify.h; no longer needed.
+ * gl/lib/xdectoint.c (__xnumtoint):
+ * src/die.h (die):
+ Prefer C23 unreachable () to assume (false).
+ * gl/lib/xfts.c (xfts_open):
+ * src/basenc.c (base32hex_encode):
+ * src/copy.c (abandon_move, copy_internal, valid_options):
+ * src/cut.c (cut_fields):
+ * src/df.c (alloc_field, decode_output_arg, get_dev):
+ * src/du.c (process_file, main):
+ * src/echo.c (usage):
+ * src/factor.c (udiv_qrnnd, mod2, gcd2_odd, factor_insert_large)
+ (mulredc2, factor_using_pollard_rho, isqrt2, div_smallq)
+ (factor_using_squfof):
+ * src/iopoll.c (iopoll_internal, fwrite_wait):
+ * src/join.c (add_field):
+ * src/ls.c (dev_ino_pop, main, gobble_file, sort_files):
+ * src/mv.c (do_move):
+ * src/od.c (decode_format_string, read_block, dump, main):
+ * src/remove.c (rm):
+ * src/rm.c (main):
+ * src/sort.c (stream_open):
+ * src/split.c (next_file_name, lines_chunk_split):
+ * src/stdbuf.c (main):
+ * src/stty.c (set_speed):
+ * src/tac-pipe.c (line_ptr_decrement, line_ptr_increment):
+ * src/touch.c (touch):
+ * src/tr.c (find_bracketed_repeat, get_next)
+ (validate_case_classes, get_spec_stats, string2_extend, main):
+ * src/tsort.c (search_item, tsort):
+ * src/wc.c (main):
+ Prefer affirm to assert, as it allows for better static
+ checking when compiling with -DNDEBUG.
+ * src/chown-core.c (change_file_owner):
+ * src/df.c (get_field_list):
+ * src/expr.c (printv, null, tostring, toarith, eval2):
+ * src/ls.c (time_type_to_statx, calc_req_mask, get_funky_string)
+ (print_long_format):
+ * src/numfmt.c (simple_strtod_fatal):
+ * src/od.c (decode_one_format):
+ * src/stty.c (mode_type_flag):
+ * src/tail.c (xlseek):
+ * src/tr.c (is_char_class_member, get_next, get_spec_stats)
+ (string2_extend):
+ Prefer unreachable () to abort () or assert (false) when merely
+ pacifying the compiler, e.g., in a switch statement on an enum
+ where all cases are covered.
+ * src/copy.c (valid_options): Now returns void; the bool was useless.
+ Caller no longer needs to assert.
+ * src/csplit.c (find_line):
+ * src/expand-common.c (next_file):
+ * src/shred.c (incname):
+ * src/sort.c (main):
+ * src/tr.c (append_normal_char, append_range, append_char_class)
+ (append_repeated_char, append_equiv_class):
+ * src/tsort.c (search_item):
+ Omit assert, since the hardware will check for us.
+ * src/df.c (header_mode): Now the enum type it should have been.
+ * src/du.c (process_file):
+ * src/ls.c (assert_matching_dev_ino):
+ * src/tail.c (valid_file_spec):
+ * src/tr.c (validate_case_classes):
+ Mark defns with MAYBE_UNUSED if they’re not used when -DNDEBUG.
+ * src/factor.c (prime_p, prime2_p, mp_prime_p): Now ATTRIBUTE_PURE.
+ Prefer affirm to error+abort. No need to translate this diagnostic.
+ * src/fmt.c (get_paragraph):
+ * src/stty.c (display_changed, display_all, sane_mode):
+ * src/who.c (idle_string):
+ Prefer assume to assert, since the goal is merely pacification
+ and assert doesn’t pacify anyway if -DNDEBUG is used.
+ * src/join.c (decode_field_spec):
+ Omit unreachable abort.
+ * src/ls.c (assert_matching_dev_ino, main):
+ * src/tr.c (get_next):
+ Prefer assure to assert, since the check is relatively expensive
+ and won’t help static analysis.
+ * src/ls.c (main):
+ Prefer static_assert to assert of a constant expression.
+ (format_inode): Redo to make it clear that buflen doesn’t matter,
+ and that buf must have a certain number of bytes. All callers changed.
+ This pacifies -Wformat-overflow.
+ * src/od.c (decode_one_format):
+ Omit an assert that tested for obviously undefined behavior,
+ as the compiler could optimize it away anyway.
+ * src/od.c (decode_one_format, decode_format_string):
+ Prefer ATTRIBUTE_NONNULL to runtime checking.
+ * src/stat.c: Do not include <stddef.h> since system.h does that now.
+ * src/sync.c (sync_arg):
+ Prefer unreachable () to assert (true), which was a typo.
+ * src/system.h: Include stddef.h, for unreachable.
+ * src/tail.c (xlseek): Simplify by relying on ‘error’ to exit.
+
+ maint: fix indenting in previous change
+ * src/ptx.c: Adjust to fit into 80 columns.
+
+2023-06-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: prefer C23-style nullptr
+ * bootstrap.conf (gnulib_modules): Add nullptr.
+ In code, prefer nullptr to NULL where either will do.
+
+2023-06-22 Bruno Haible <bruno@clisp.org>
+
+ build: ensure that makeinfo ≥ 6.8 checks the @menu structure
+ See <https://lists.gnu.org/r/bug-texinfo/2023-06/msg00015.html>.
+
+ * doc/local.mk (MAKEINFO): New variable.
+ * cfg.mk (_makefile_at_at_check_exceptions): Update.
+
+2023-06-22 Pádraig Brady <P@draigBrady.com>
+
+ b2sum: fix UAR with --check with malformed checksum lines
+ * src/digest.c (split_3): Reinstate the check for whitespace after the
+ digest portion of the line, so that we exit early before inspecting
+ the file name which would be outside the passed buffer in the case
+ where the input does not contain a newline.
+ * tests/cksum/b2sum.sh: Add a test case.
+ * NEWS: Mention the bug fix.
+ * THANKS.in: Add Frank Busse who has reported multiple bugs using KLEE.
+ Fixes https://bugs.gnu.org/64229
+
+2023-06-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: update GCC bug number in comment
+
+2023-06-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: mention fix for bug#64123
+
+ build: update gnulib submodule to latest
+
+2023-06-19 Sylvestre Ledru <sylvestre@debian.org>
+
+ tests: move tests to a directory per utility
+ * cfg.mk: Adjust syntax check exclusion paths.
+ * tests/local.mk: Adjust for renamed tests.
+
+2023-06-15 Pádraig Brady <P@draigBrady.com>
+
+ doc: mention cksum error fix with cpu feature checks changes
+ * NEWS: Mention the error message to aid those searching
+ for solutions to the issue, and mention cksum also
+ as that was confirmed to fix the error with the adjusted
+ cpu feature detection, as discussed at https://bugs.debian.org/1037264
+ * src/cksum.c: Cleanup syntax-check failure from previous commit.
+
+2023-06-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ cksum,wc: clean up hw capability checking
+ * src/cksum.c (cksum_pclmul) [!CRCTAB && !USE_PCLMUL_CRC32]:
+ Remove macro.
+ (cksum_fp): No longer file-scope.
+ (pclmul_supported): Define only if USE_PCLMUL_CRC32.
+ This omits the debug output "using generic hardware support"
+ for simplicity and consistency with wc’s output.
+ (crc_sum_stream) [!USE_PCLMUL_32]: No need for static function pointer.
+ * src/wc.c (wc_lines_p) [USE_AVX2_WC_LINECOUNT]: No longer file-scope.
+ (wc) [USE_AVX2_WC_LINECOUNT]: Check for avx2 support at most once,
+ which was surely the code’s original intent.
+ (wc) [!USE_AVX2_WC_LINECOUNT]: No need for static function pointer.
+
+ cksum,wc: don’t include <cpuid.h>
+ * src/cksum.c [!CRCTAB && USE_PCLMUL_CRC32]:
+ * src/wc.c [USE_AVX2_WC_LINECOUNT]:
+ Don’t include <cpuid.h>; no longer needed.
+
+ cksum: fix bug in check for cksum_pclmul
+ This fixes a typo in the previous patch.
+ Problem reported by Pádraig Brady <https://bugs.gnu.org/64058#11>.
+ * src/cksum.c (pclmul_supported): Also require AVX support
+ to use cksum_pclmul.
+
+ wc: port to kernels that disable XSAVE YMM
+ Problem reported by Dave Hansen <https://bugs.gnu.org/64058>.
+ Apply similar change to cksum and pclmul, too.
+ * NEWS: Mention wc fix.
+ * configure.ac (cpuid_exists, get_cpuid_count_exists):
+ Remove. All uses removed, since we no longer use __get_cpuid or
+ __get_cpuid_count.
+ (pclmul_intrinsic_exists, avx2_intrinsic_exists): Set to no if
+ __builtin_cpu_supports calls cannot be compiled.
+ (HAVE_PCLMUL_INTRINSIC, HAVE_AVX2_INTRINSIC): Remove; unused.
+ Simplify surrounding code because of this.
+ * src/cksum.c (pclmul_supported):
+ * src/wc.c (avx2_supported):
+ Use __builtin_cpu_supports instead of doing it by hand.
+ Simplify surrounding code because of this.
+
+2023-06-12 Ville Skyttä <ville.skytta@iki.fi>
+
+ dircolors: update list of backup file extensions
+ * src/dircolors.hin: Sort backup section by extension.
+ Treat .dpkg-new and .dpkg-tmp as backup files.
+ Treat .crdownload (Chromium based browsers' partial download)
+ as a backup file.
+
+2023-06-11 Pádraig Brady <P@draigBrady.com>
+
+ dd: fix parsing of numbers with more than two multipliers
+ * src/dd.c (parse_integer): Use recursion to support more than two
+ multipliers. Also protect suffix[-1] access to ensure we don't
+ inspect before the passed string.
+ * tests/dd/bytes.sh: Add test cases.
+ * doc/coreutils.texi (dd invocation): Note the support for specifying
+ many multipliers in a number.
+ * NEWS: Mention the bug fix.
+ Fixes https://bugs.debian.org/1037275
+
+2023-06-09 Pádraig Brady <P@draigBrady.com>
+
+ build: update gnulib submodule to latest
+ * gnulib: Update to latest.
+ * po/POTFILES.in: Remove recent sc_po_check workaround.
+ * tests/misc/date-debug.sh: Adjust as per spelling fix.
+
+2023-06-08 Pádraig Brady <P@draigBrady.com>
+
+ doc: od --strings: clarify operation
+ * doc/coreutils.texi (od invocation): Remove mention of ASCII,
+ as all printable characters in unibyte locales are output.
+ * src/od.c (usage): Clarify that only NUL terminated strings
+ are displayed, and that it's printable chars, not only graphic chars
+ that are output. I.e., spaces are output also if part of the string.
+ Reported at https://bugs.ddebian.org/1037217
+
+2023-06-07 Pádraig Brady <P@draigBrady.com>
+
+ maint: ls.c: update stale comment for previous commit
+ * src/ls.c (gobble_file): Update comment to correspond with
+ the changes in the previous commit.
+
+ ls: display command line symlinks that return ELOOP
+ * src/ls.c (gobble_file): Ensure we lstat() a symlink
+ specified on the command line, if we receive ELOOP from stat().
+ * tests/ls/symlink-loop.sh: Add a new test.
+ * tests/local.mk: Reference the new test.
+ * NEWS: Mention the bug fix.
+ Fixes https://bugs.gnu.org/63931
+
+ ls: use more standard symlink traversal
+ * src/ls.c (gobble_file): stat() symlinks directly,
+ rather than their targets. This will be more consistent
+ with how symlinks are generally accessed.
+ (make_link_name): Remove no longer used function.
+ Addresses https://bugs.gnu.org/63931
+
+ doc: reference COPYING from README
+ * README: Reference COPYING as per the GNU coding standards,
+ and soon to be enforced with a syntax-check from gnulib.
+
+2023-06-06 Pádraig Brady <P@draigBrady.com>
+
+ maint: avoid syntax-check failure
+ * po/POTFILES.in: Add lib/propername.h due to new comments
+ that trigger sc_po_check.
+
+ doc: NEWS: mention the more defensive copy_file_range avoidance
+ * NEWS: Mention the improvement in reinstating runtime avoidance
+ of copy_file_range(), that came with the last gnulib update,
+ picking up gnulib commit fb034b35.
+
+2023-06-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+
+2023-06-01 Pádraig Brady <P@draigBrady.com>
+
+ maint: use consistent make variable interpolation syntax
+ * cfg.mk: Prefer $() interpolation over ${}
+ lest the reader is confused as to whether shell interpolation,
+ i.e. $${} was intended.
+
+2023-05-31 Pádraig Brady <P@draigBrady.com>
+
+ split: --additional-suffix: disallow trailing '/'
+ Note mktemp --suffix has the same inconsistency,
+ but mktemp -d does support creating dirs
+ so probably best to leave that as is.
+
+ * src/split.c (main): Check for trailing /.
+ * tests/split/additional-suffix.sh: Augment the test.
+ Reported in https://bugs.debian.org/1036827
+
+2023-05-31 Pádraig Brady <P@draigBrady.com>
+
+ maint: adjust code to handle "error" syntax-check changes
+ * src/dd.c: Don't include no longer used error.h.
+ Use quoteaf() rather than quote() to quote appropriate for the shell
+ and to avoid the syntax-check failure,
+ * src/stty.c: Use quoteaf() rather than quotef()
+ to have more consistent quoting of the invalid arg.
+
+ maint: augment syntax checks to cater for more "error" functions
+ src/cfg.mk (sc_error_quotes, sc_error_shell_quotes,
+ sc_error_shell_always_quotes): Include "die" and "diagnose"
+ in the class of error functions to check arguments for.
+
+2023-05-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ dd: fix ‘error’ name issue without macros
+ * src/dd.c (_GL_NO_INLINE_ERROR): Remove; no longer needed.
+ (diagnose): Rename from nl_error and omit first arg since it is
+ always zero. All uses changed.
+ (error): Remove macro.
+
+2023-05-28 Pádraig Brady <P@draigBrady.com>
+
+ build: update gnulib submodule to latest
+ * gnulib: Update to latest.
+ * src/dd.c: Avoid error macro redefinition.
+
+2023-05-19 Pádraig Brady <P@draigBrady.com>
+
+ build: modernize bootstrap prerequsite tools
+ Following on from commit v9.0-15-gaa31b919c
+ which updated README-prereq...
+
+ * bootstrap.conf: Add an explicit requirement on m4.
+ Add an explicit requirement on texi2pdf which is often
+ packaged separately to makeinfo and induces a failure
+ far down the distribution phase if not present.
+ Replace the rsync dependency with wget,
+ which gnulib changed to in 2018.
+
+2023-05-19 Pádraig Brady <P@draigBrady.com>
+
+ build: update gnulib submodule to latest
+ * gnulib: Update to latest.
+ * configure.ac: Remove gnulib reference, as that specific issue
+ is now explicitly avoided in gnulib itself.
+
+ build: pacify GCC 13 with -flto
+ * src/cut.c (cut_file): Explicitly mark STREAM as nonnull to avoid
+ -Werror=null-dereference.
+ * src/nl.c (nl_file): Likewise.
+
+ build: revert -Wmaybe-uninitialized warnings avoidance
+ This reverts commit 800c86d5, as that was deemed too invasive.
+ We do keep the change to tee.c to allow using -O3 without warnings.
+ For other optimization options like -O0, -Og, -O1, -Os,
+ one can use WERROR_CFLAGS= to stop warnings inducing a build failure.
+
+2023-05-18 Pádraig Brady <P@draigBrady.com>
+
+ build: avoid false -Wmaybe-uninitialized warnings
+ Allow easily building a debug build for example with:
+ make CFLAGS='-O0 -ggdb'
+
+ False -Wmaybe-uninitialized warnings hit in different
+ places depending on the compiler passes used.
+ These changes were tested with gcc 10.2.1, 12.2.1, and 13.1.1 like:
+ for o in g s z fast 0 1 2 3; do
+ make clean && make -j$(nproc) CFLAGS="-O$o" || break
+ done
+
+ * src/digest.c: Disable -Wmaybe-uninitialized that gives
+ false positive here at -O0.
+ * src/ln.c: Avoid -Wmaybe-uninitialized that gives
+ false positive here at -O1.
+ * src/pr.c: Likewise.
+ * src/sort.c: Likewise.
+ * src/tee.c: Avoid -Wmaybe-uninitialized that gives
+ false positive here at -O3 on gcc 13.1.1 at least.
+ * src/cp.c: Avoid -Wmaybe-uninitialized that gives
+ false positive here at -Os on gcc 13.1.1 at least.
+ * src/copy.c: Avoid -Wmaybe-uninitialized that gives
+ false positive here at -Og on gcc 13.1.1 at least.
+ * src/head.c: Likewise.
+ * src/paste.c: Likewise.
+
+2023-05-18 Pádraig Brady <P@draigBrady.com>
+
+ build: gnulib: avoid false -Wstringop-overflow warning
+ Tested on gcc 13.1.1 with: make CFLAGS='-O0 -ggdb'
+
+ * configure.ac: Disable -Wstringop-overflow for gnulib.
+ This warning is far too problematic in my experience:
+ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88443
+ and triggers with gcc -O0 with versions 12,13 at least.
+
+2023-05-13 Pádraig Brady <P@draigBrady.com>
+
+ maint: cleanups to NEWS
+ * NEWS: Use more consistent wording, ordering, and formatting
+ for recent entries.
+
+2023-05-08 Pádraig Brady <P@draigBrady.com>
+
+ split: advise the kernel of sequential access pattern
+ As split is often dealing with large files,
+ ensure we indicate to the kernel our sequential access pattern.
+ This was seen to operate 5% faster when reading from SSD,
+ as tested with:
+
+ dd bs=1M count=2K if=/dev/urandom of=big.in
+
+ for split in split.orig split; do
+ # Ensure big file is not cached
+ dd of=big.in oflag=nocache conv=notrunc,fdatasync count=0 status=none
+ # Test read efficiency
+ CWD=$PWD; (cd /dev/shm && time $CWD/src/$split -n2 $CWD/big.in)
+ done
+
+ real 0m9.039s
+ user 0m0.055s
+ sys 0m3.510s
+
+ real 0m8.568s
+ user 0m0.056s
+ sys 0m3.752s
+
+ * src/split.c (main): Use fdadvise to help the kernel
+ choose a more appropriate readahead buffer.
+ * NEWS: Mention the improvement.
+
+2023-05-08 Pádraig Brady <P@draigBrady.com>
+
+ doc: adjust build instructions for disabling year 2038 support
+ * README-install: Adjust the instructions as per recent gnulib updates.
+
+2023-05-07 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ build: update gnulib submodule to latest
+ This fixes failures in "very-expensive" tests on FTS with many
+ directory entries:
+ FAIL: tests/rm/ext3-perf
+ FAIL: tests/rm/many-dir-entries-vs-OOM
+
+ The following shows the problem in the former of the above tests:
+ $ mkdir d && seq 400000 | env -C d xargs touch )
+ $ rm -rf d
+ rm: traversal failed: d: Operation not supported
+
+ Gnulib commit 3f0950f65abb (2023-04-26) introduced this regression
+ which was fixed again with gnulib commit d4d8abb39eb0.
+
+ See discussion in
+ <https://lists.gnu.org/r/bug-gnulib/2023-05/msg00040.html>
+
+ * bootstrap.conf (gnulib_modules): Change "year2038-required" to
+ "year2038-recommended"; the module has been replaced.
+ * gnulib: Update to latest.
+ * tests/init.sh: Likewise.
+
+2023-05-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: time zone conversion example
+ * doc/coreutils.texi (Examples of date):
+ Give time zone conversion example.
+
+ doc: new subsection for date format specs
+ * doc/coreutils.texi (Date format specifiers): New subsection,
+ which groups the date format specifiers without otherwise
+ changing contents.
+
+2023-05-06 Pádraig Brady <P@draigBrady.com>
+
+ pr: fix parsing of empty arguments
+ Before:
+ $ pr --expand-tabs=
+ pr: '-e' extra characters or invalid number in the argument:
+ ‘SHELL=/bin/bash’: Value too large for defined data type
+
+ After:
+ $ pr --expand-tabs=
+ pr: '-e': Invalid argument: ‘’
+
+ * src/pr.c (getoptarg): Ensure we don't parse beyond the
+ end of an empty argument, thus outputting arbitrary stack
+ info in subsequent error messages.
+
+ Addresses https://bugs.debian.org/1035596
+
+2023-05-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ cp: -p --parents: minor cleanup of previous patch
+ This doesn’t change behavior; it just clarifies the code a bit.
+ * src/cp.c (re_protect): New arg DST_SRC_NAME, for clarity, and so
+ that we need to skip '/'s only once. Caller changed.
+ Rename a couple of local variables to try to make things clearer.
+
+2023-05-03 Pádraig Brady <P@draigBrady.com>
+
+ cp: -p --parents: fix failure to preserve permissions for absolute paths
+ * src/cp.c (re_protect): Ensure copy_acl() is passed an absolute path.
+ * tests/cp/cp-parents.sh: Add a test case.
+ * NEWS: Mention the bug.
+ Fixes https://bugs.gnu.org/63245
+
+2023-05-02 Pádraig Brady <P@draigBrady.com>
+
+ tests: provide more info on DEBUG=yes
+ * README: State that DEBUG=yes is particularly useful with perl tests.
+ * tests/split/l-chunk.sh: Use the more standard $DEBUG variable
+ rather than an internal $DEBUGGING variable.
+
+2023-04-30 Pádraig Brady <P@draigBrady.com>
+
+ doc: provide more info on the default 32-bit cksum digest
+ * doc/coreutils.texi (cksum invocation): Say that the default
+ digest format is 32-bit and based on the Ethernet standard CRC.
+
+ maint: remove redundant exit status handling
+ * src/numfmt.c: Remove redundant / confusing
+ use of TIMEOUT_FAILURE.
+
+2023-04-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: simplify --enable-gcc-warnings='expensive'
+ * configure.ac (WERROR_CFLAGS): Omit mention of
+ -Wno-analyzer-double-free, -Wno-analyzer-null-dereference, and
+ -Wno-analyzer-use-after-free as manywarnings no longer uses them.
+
+ maint: suppress GCC 13 false alarms
+ * src/csplit.c, src/fmt.c, src/make-prime-list.c, src/nohup.c:
+ Add pragmas to pacify GCC 13 when coreutils is configured
+ with --enable-gcc-warnings='expensive'.
+
+ chmod: pacify GCC 13
+ * src/chmod.c (main): Use xpalloc instead of X2REALLOC,
+ and make the corresponding variables signed instead of unsigned.
+ When reallocating the buffer, this grows it by a factor of 1.5, not 2.
+ This also pacifies gcc -Wanalyzer-null-dereference.
+
+ csplit: pacify GCC 13
+ * src/csplit.c (load_buffer): Refactor for clarity.
+ This also xpacifies gcc -Wanalyzer-use-of-uninitialized-value.
+ When reallocating the buffer, grow it by a factor of 1.5, not 2.
+
+ build: update gnulib submodule to latest
+
+2023-04-26 Pádraig Brady <P@draigBrady.com>
+
+ tests: more cases for read input diagnostics
+ * tests/misc/read-errors.sh: Exercise more modes of
+ various utilities for better read error coverage.
+ * tests/split/fail.sh: Remove part refactored into the above test.
+
+ uniq: be more specific when diagnosing read errors
+ * src/uniq.c (check_file): Use the errno when diagnosing read errors.
+
+2023-04-26 Jaroslav Skarvada <jskarvad@redhat.com>
+
+ build: fix build with -mno-ssse3
+ Avoid the following error with -mno-ssse3:
+ inlining failed in call to 'always_inline' '_mm_shuffle_epi8':
+ target specific option mismatch
+
+ * configure.ac: Ensure we use ssse3 specific code when
+ checking whether to enable the pclmul cksum implementation.
+
+2023-04-25 Pádraig Brady <P@draigBrady.com>
+
+ pr: fix infinite loop when double spacing
+ * src/pr.c (init_parameters): Ensure we avoid a 0 lines_per_body
+ which was possible when adjusting for double spacing.
+ That caused print_page() to always return true,
+ causing an infinite loop.
+ * tests/pr/pr-tests.pl: Add a test case.
+ * NEWS: Mention the fix.
+ Fixes https://bugs.debian.org/1034808
+
+2023-04-25 Pádraig Brady <P@draigBrady.com>
+
+ copy: reduce verbosity of -i and -u with --verbose
+ Since skipping of files is central to the operation of -i and -u,
+ and with -u one may be updating few files out of many,
+ reinstate the verbosity of this functionality as it was before 9.3.
+
+ * src/copy.c (copy_internal): Only output "skipped" message
+ with --debug. Also adjust so message never changes with --debug.
+ * tests/cp/cp-i.sh: Adjust accordingly.
+ * tests/mv/mv-n.sh: Likewise.
+ * tests/cp/debug.sh: Add explicit test case for message.
+ * NEWS: Mention the change in behavior.
+
+2023-04-24 Pádraig Brady <P@draigBrady.com>
+
+ tests: ensure all utilities that read input diagnose errors
+ * tests/misc/read-errors.sh: Add a new test.
+ * tests/misc/date-f.sh: Remove unneeded test.
+ * tests/misc/dircolors.sh: Likewise.
+ * tests/local.mk: Reference new test, and dereference removed ones.
+
+ factor: diagnose errors reading the input
+ * src/factor.c (do_stdin): Exit with failure upon read errors.
+ * NEWS: Mention the bug fix.
+
+ numfmt: diagnose errors reading the input
+ * src/numfmt.c (main): Exit with failure upon read errors.
+ * NEWS: Mention the bug fix.
+
+ tsort: diagnose errors reading the input
+ * src/tsort.c (tsort): Check for errors after readtoken().
+ * NEWS: Mention the bug fix.
+
+2023-04-24 Pádraig Brady <P@draigBrady.com>
+
+ cksum: fix failure to diagnose read errors with crc32
+ The default crc32 mode fails to diagnose read errors.
+
+ * src/cksum.c (cksum_slice8): Fix the check for read errors.
+ (cksum_pclmul): Likewise.
+ * NEWS: Mention the bug fix.
+
+2023-04-24 Andreas Schwab <schwab@linux-m68k.org>
+
+ tests: avoid failure when cp fails for proc files
+ When run under QEmu emulation emulated /proc files have
+ unstable inode numbers.
+
+ * tests/cp/proc-short-read.sh: Skip if unstable inode numbers detected.
+
+2023-04-21 Pádraig Brady <P@draigBrady.com>
+
+ install: support stripping files with a leading hyphen
+ * src/install.c (strip): Prepend "./" to file names with a leading "-".
+ * tests/install/strip-program.sh: Add a test case.
+ * NEWS: Mention the bug fix.
+ Reported in https://bugs.debian.org/1034429
+
+2023-04-18 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 9.3
+ * NEWS: Record release date.
+
+2023-04-16 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid allocation checks on ZFS
+ * tests/du/basic.sh: Allocation of files was seen to change
+ asynchronously on ZFS, so avoid allocation comparisons there.
+
+2023-04-14 Pádraig Brady <P@draigBrady.com>
+
+ tests: tty-eof: fix various issues
+ * tests/misc/tty-eof.pl: Ensure we don't erroneously
+ skip commands with parameters.
+ Comment as to why cut(1) is treated differently.
+ Adjust expect calls to not wait needlessly for cut output.
+
+2023-04-13 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid dependence on file layout for cp sparse check
+ * tests/cp/sparse-2.sh: Don't depend on the copy taking
+ <= allocation of the source. Instead leverage --debug
+ to check that zero detection is being enabled.
+
+ copy: --debug: indicate if NUL detection is used with SEEK_HOLE
+ * src/copy.c (sparse_copy): With --sparse=always we also detect
+ NULs in extents we're copying, so indicate this with --debug.
+
+2023-04-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: update re 32-bit builds
+ * README-install: Mention how to build on 32-bit-only hosts.
+ This builds on a previous patch by Pádraig Brady.
+
+2023-04-10 Pádraig Brady <P@draigBrady.com>
+
+ build: fix _Noreturn compilation failure
+ Fix a build failure seen on gcc 3.4 on Solaris 10 at least.
+
+ * src/crctab.c: Ensure we include config.h for all compilation units.
+ This is now required for new _Noreturn usage in gnulib for stdint.h.
+ * src/cksum.c: Update generation code to ensure config.h included.
+ * cfg.mk: Remove crctab.c exclusion from the config.h check.
+
+2023-04-10 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid non portable brace expansion
+ * tests/cp/backup-dir.sh: Avoid non portable brace expansion
+ which is not supported by FreeBSD or Solaris shells at least.
+
+2023-04-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: require support for post-2038 timestamps
+ * bootstrap.conf (gnulib_modules): Replace year2038 with
+ year2038-required.
+
+ build: update gnulib submodule to latest
+
+2023-04-08 Pádraig Brady <P@draigBrady.com>
+
+ wc: ensure we update file offset
+ * src/wc.c (wc): Update the offset when not reading,
+ and do read if we can't update the offset.
+ * tests/misc/wc-proc.sh: Add a test case.
+ * NEWS: Mention the bug fix.
+ Fixes https://bugs.gnu.org/61300
+
+ cp,mv: issue "skipped" messages when skipping files
+ * NEWS: Mention the change in behavior to issue a "not replaced"
+ error diagnostic with -n, and the "skipped" message with -v.
+ * src/copy.c (copy_internal): Adjust to output the "skipped" messages
+ depending on -i, -n, -u.
+ * tests/cp/cp-i.sh: Adjust accordingly.
+ * tests/mv/mv-n.sh: Likewise.
+
+2023-04-08 Pádraig Brady <P@draigBrady.com>
+
+ cp,mv: add --update=none to always skip existing files
+ Add --update=none which is equivalent to the --no-clobber behavior
+ from before coreutils 9.2. I.e. existing files are unconditionally
+ skipped, and them not being replaced does not affect the exit status.
+
+ * src/copy.h [enum Update_type]: A new type to support parameters
+ to the --update command line option.
+ [enum Interactive]: Add I_ALWAYS_SKIP.
+ * src/copy.c: Treat I_ALWAYS_SKIP like I_ALWAYS_NO (-n),
+ except that we don't fail when skipping.
+ * src/system.h (emit_update_parameters_note): A new function
+ to output the description of the new --update parameters.
+ * src/cp.c (main): Parse --update arguments, ensuring that
+ -n takes precedence if specified.
+ (usage): Describe the new option. Also allude that
+ -u is related in the -n description.
+ * src/mv.c: Accept the new --update parameters and
+ update usage() accordingly.
+ * doc/coreutils.texi (cp invocation): Describe the new --update
+ parameters. Also reference --update from the --no-clobber description.
+ (mv invocation): Likewise.
+ * tests/mv/update.sh: Test the new parameters.
+ * NEWS: Mention the new feature.
+ Addresses https://bugs.gnu.org/62572
+
+2023-04-04 Pádraig Brady <P@draigBrady.com>
+
+ cp: fix --backup with subdirectories
+ * gnulib: Reference the latest gnulib including the
+ fix to the backupfile module in commit 94496522.
+ * tests/cp/backup-dir.sh: Add a test to ensure
+ we rename appropriately when backing up through subdirs.
+ * NEWS: Mention the bug fix.
+ Fixes https://bugs.gnu.org/62607
+
+2023-03-31 Pádraig Brady <P@draigBrady.com>
+
+ tests: tee: avoid false failure due to fifo usage
+ * tests/misc/tee.sh: Call cleanup_ in all cases to ensure
+ there are no overlapping interactions on the fifo that
+ might impact later parts of the test. This was seen to
+ cause issue with dash on musl libc.
+ Addresses https://bugs.gnu.org/62542
+
+ tests: adjust csplit VM limit
+ * tests/misc/csplit-heap.sh: More memory is required to avoid
+ a false failure on some systems. Noticed with musl libc
+ with bash as the shell. This is confirmed to still easily
+ trigger with the original memory leak being tested.
+ Addresses https://bugs.gnu.org/62542
+
+ wc: diagnose overflow of total counts
+ * src/wc.c (wc): Use INT_ADD_WRAPV() to detect overflow.
+ (main): Upon overflow, saturate the total, print a diagnostic,
+ and set exit status.
+ * tests/misc/wc-total.sh: Add a test case, which operates
+ on BTRFS and 64 bit systems at least.
+ Reported at https://bugs.debian.org/1027100
+
+2023-03-28 Pádraig Brady <P@draigBrady.com>
+
+ dircolors: diagnose read errors
+ * NEWS: Mention the fix.
+ * src/dircolors.c: Fail upon read error from getline().
+ * tests/misc/dircolors.sh: Add a new test.
+ * tests/local.mk: Reference the new test.
+
+ tests: add a test case for the previous date fix
+ * NEWS: Also mention this bug fix.
+ * tests/misc/date-f.sh: Add a new test.
+ * tests/local.mk: Reference the new test.
+
+2023-03-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ date: diagnose -f read errors
+ * src/date.c (batch_convert): Diagnose read errors, fixing Bug#62497.
+
+2023-03-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ cp: clarify commentary
+ * src/copy.c: Make comments a bit clearer.
+
+2023-03-24 Pádraig Brady <P@draigBrady.com>
+
+ copy: fix --reflink=auto to fallback in more cases
+ On restricted systems like android or some containers,
+ FICLONE could return EPERM, EACCES, or ENOTTY,
+ which would have induced the command to fail to copy
+ rather than falling back to a more standard copy.
+
+ * src/copy.c (is_terminal_failure): A new function refactored
+ from handle_clone_fail().
+ (is_CLONENOTSUP): Merge in the handling of EACCES, ENOTTY, EPERM
+ as they also pertain to determination of whether cloning is supported
+ if we ever use this function in that context.
+ (handle_clone_fail): Use is_terminal_failure() in all cases,
+ so that we assume a terminal failure in less errno cases.
+ * NEWS: Mention the bug fix.
+ Addresses https://bugs.gnu.org/62404
+
+2023-03-24 Pádraig Brady <P@draigBrady.com>
+
+ doc: add a NEWS entry for the previous fix
+ * NEWS: Mention the previous cksum --check fix.
+
+2023-03-23 Pádraig Brady <P@draigBrady.com>
+
+ cksum: fix reporting of failed checks
+ This applies to all checksumming utilities,
+ where we incorrectly report all subsequent files as checking 'OK'
+ once any file has passed a digest check.
+ The exit status was not impacted, only the printed status.
+
+ * src/digest.c (digest_check): Use the correct state variable
+ to determine if the _current_ file has passed or not.
+ * tests/misc/md5sum.pl: Add a test case.
+ Fixes https://bugs.gnu.org/62403
+
+2023-03-21 Nick Alcock <nick.alcock@oracle.com>
+
+ tests: skip some parts of tests/misc/tee.sh if run as root
+ Similarly to the fix to tests/rmdir/ignore.sh in c0e5f8c59,
+ tee should not be expected to fail when run with read-only outputs
+ when run as root.
+
+ * tests/misc/tee.sh: Add uid_is_privileged_ guard around test for
+ read-only outputs.
+
+2023-03-20 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 9.2
+ * NEWS: Record release date.
+
+2023-03-19 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid false failure on systems without statx
+ * tests/ls/stat-free-symlinks.sh: Filter out syscalls that
+ return ENOSYS, as that was seen with statx() on Debian 10.13
+ on mips64, and resulted in overcounting of stat calls.
+
+ stty: ensure arbitrary data is not displayed
+ * src/stty.c (main): Use static structures to ensure
+ they're initialized (to zero), so that random data is
+ not displayed, or compared resulting in a inaccurate
+ failure reported to users. This was seen on musl libc
+ where some parts of the termios c_cc array were
+ not initialized by tcgetattr().
+ Reported by Bruno Haible.
+
+ tests: df: avoid false failure on systems with multiple roots
+ * tests/df/df-symlink.sh: Skip the test on systems
+ with multiple file system roots.
+
+2023-03-18 Pádraig Brady <P@draigBrady.com>
+
+ doc: uniq: revert previous man page adjustment
+ * src/uniq.c (usage): -D doesn't take an argument
+ so should be separated in the description.
+
+ doc: uniq: use more standard description of -D long option
+ * src/uniq.c: Describe -D and --all-repeated together,
+ as with all other long options.
+ Fixes https://bugs.gnu.org/62249
+
+ tests: aix: avoid unsupported functionality
+ * tests/misc/tee.sh: AIX doesn't support detecting
+ closed outputs either with poll() or select() so avoid
+ testing that functionality.
+ * tests/tail-2/pipe-f.sh: Likewise.
+
+2023-03-16 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: avoid discarded-qualifiers warnings with SELinux 3.5
+ Since SELinux version 3.5, the return value of context_str(3) is
+ declared as const; see:
+ https://github.com/SELinuxProject/selinux/commit/dd98fa322766
+ Therefore, GCC complains (here with -Werror):
+ src/selinux.c: In function 'defaultcon':
+ src/selinux.c:152:16: error: assignment discards 'const' qualifier \
+ from pointer target type [-Werror=discarded-qualifiers]
+ 152 | if (!(constr = context_str (tcontext)))
+ | ^
+ src/selinux.c: In function 'restorecon_private':
+ src/selinux.c:252:16: error: assignment discards 'const' qualifier \
+ from pointer target type [-Werror=discarded-qualifiers]
+ 252 | if (!(constr = context_str (tcontext)))
+ | ^
+
+ * src/selinux.c (defaultcon): Define CONSTR as const.
+ (restorecon_private): Likewise.
+
+2023-03-15 Pádraig Brady <P@draigBrady.com>
+
+ test: avoid a test hang on Hurd
+ * tests/cp/sparse-to-pipe.sh: Protect the cp call seen to
+ hang on Hurd/i686 with a timeout.
+ Reported By: Bruno Haible
+
+ cksum: fix --raw on 64 bit big endian systems
+ * src/sum.c (output_bsd): On sparc64 for example,
+ a crc of 0 was output due to casting an int variable
+ to uint16_t and thus operating on the wrong end of the variable.
+ Instead use explicit assignment to the narrower type
+ to ensure we get the appropriate data.
+ (output_sysv): Likewise.
+ Reported by Bruno Haible.
+
+2023-03-15 Bruno Haible <bruno@clisp.org>
+
+ build: avoid -Wsometimes-uninitialized on macOS 12
+ * src/pr.c (integer_overflow): Mark as _Noreturn.
+ * src/test.c (beyond): Likewise.
+
+2023-03-13 Pádraig Brady <P@draigBrady.com>
+
+ doc: remove older ChangeLog items
+ * Makefile.am: Update the oldest documented version
+ to 8.29 which is now about 5 years old.
+
+ tee: avoid undefined behavior after fclose()
+ * iopoll.c (fclose_wait): Rename from confusing fclose_nonblock name.
+ Also adjust to do no operations on the stream after fclose()
+ as this is undefined. Instead use fflush() to determine EAGAIN status.
+ (fwrite_wait): Renamed from confusing fwrite_nonblock name.
+
+ doc: dircolors: better separate the sections in the database
+ * src/dircolors.hin: Make the separate sections of the self
+ documenting dircolors database more apparent,
+ by adding heading comments, and appropriate separation.
+
+2023-03-13 Pádraig Brady <P@draigBrady.com>
+
+ ls: --color: honor separate sequences for extension cases
+ Following on from commit v8.29-45-g24053fbd8 which unconditionally
+ used case insensitive extension matching, support selective
+ case sensitive matching when there are separate extension cases
+ defined with different display sequences.
+
+ * src/dircolors.hin: Document how file name suffixes are matched.
+ Note this is displayed with `dircolors --print-database` which
+ the texi info recommends to use for details.
+ * src/ls.c (parse_ls_color): Postprocess the list to
+ mark entries for case sensitive matching,
+ and also adjust so that unmatchable entries are more quickly ignored.
+ (get_color_indicator): Use exact matching rather than
+ case insensitive matching if so marked.
+ * tests/ls/color-ext.sh: Add test cases.
+ * NEWS: Mention the change in behavior.
+ Addresses https://bugs.gnu.org/33123
+
+2023-03-13 Pádraig Brady <P@draigBrady.com>
+
+ tests: adjust du test for recent apparent size change
+ * tests/du/threshold.sh: Directories are assumed to be
+ of size 0 with --apparent since commit v9.1-187-g110bcd283
+ so remove --apparent cases from this test.
+
+2023-03-08 Pádraig Brady <P@draigBrady.com>
+
+ tee: support non blocking outputs
+ Non blocking outputs can be seen for example
+ when piping telnet through tee to a terminal.
+ In that case telnet sets its input to nonblocking mode,
+ which results in tee's output being nonblocking,
+ in which case in may receive an EAGAIN error upon write().
+ The same issue was seen with mpirun.
+ The following can be used to reproduce this
+ locally at a terminal (in most invocations):
+
+ $ { dd iflag=nonblock count=0 status=none;
+ dd bs=10K count=10 if=/dev/zero status=none; } |
+ tee || echo fail >/dev/tty
+
+ * src/iopoll.c (iopoll_internal): A new function refactored from
+ iopoll(), to also support a mode where we check the output
+ descriptor is writeable.
+ (iopoll): Now refactored to just call iopoll_internal().
+ (fwait_for_nonblocking_write): A new internal function which
+ uses iopoll_internal() to wait for writeable output
+ if an EAGAIN or EWOULDBLOCK was received.
+ (fwrite_nonblock): An fwrite() wrapper which uses
+ fwait_for_nonblocking_write() to handle EAGAIN.
+ (fclose_nonblock): Likewise.
+ src/iopoll.h: Add fclose_nonblock, fwrite_nonblock.
+ src/tee.c: Call fclose_nonblock() and fwrite_nonblock wrappers,
+ instead of the standard functions.
+ * tests/misc/tee.sh: Add a test case.
+ * NEWS: Mention the improvement.
+
+ The idea was suggested by Kamil Dudka in
+ https://bugzilla.redhat.com/1615467
+
+2023-03-08 Pádraig Brady <P@draigBrady.com>
+
+ doc: remove redundant NEWS entry
+ * NEWS: There was no bug on macOS,
+ and the split -n new feature is documented already.
+
+2023-03-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ split: support split -n on larger pipe input
+ * bootstrap.conf (gnulib_modules): Add free-posix, tmpfile.
+ * src/split.c (copy_to_tmpfile): New function.
+ (input_file_size): Use it to split larger files when sizes cannot
+ easily be determined via fstat or lseek. See Bug#61386#235.
+ * tests/split/l-chunk.sh: Mark tests of /dev/zero as
+ very expensive since they exhaust /tmp.
+
+2023-03-07 Pádraig Brady <P@draigBrady.com>
+
+ tee: fix a crash with unwriteable files
+ This was introduced recently with commit v9.1-166-g6b12e62d9
+
+ * src/tee.c (tee_files): Check the return from fopen()
+ before passing to fileno() etc.
+ * tests/misc/tee.sh: Add a test case.
+
+2023-03-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: pacify ‘make syntax-check’
+ Problem reported by Pádraig Brady (Bug#61386#226).
+ * src/split.c (parse_chunk): Use die instead of error.
+ (main): Quote a string.
+ * tests/local.mk (all_root_tests): Move du/apparent.sh from here ...
+ (all_tests): ... to here.
+
+2023-03-06 Pádraig Brady <P@draigBrady.com>
+
+ tail,tee: avoid issues with many files on systems without poll
+ * src/iopoll.c (iopoll): Protect the call to select against
+ passing in a descriptor larger than FD_SETSIZE.
+
+2023-03-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ du: --apparent counts only symlinks and regular
+ Problem reported by Christoph Anton Mitterer (Bug#61884).
+ * src/du.c (process_file): When counting apparent sizes, count
+ only usable st_size members.
+ * tests/du/apparent.sh: New file.
+ * tests/local.mk (all_root_tests): Add it.
+
+2023-03-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ split: tune for when creating output files
+ * src/split.c (create): Avoid fstat + ftruncate in the usual case
+ where the output file does not already exist, by trying
+ to create it with O_EXCL first. This costs a failed open
+ in the unusual case where the output file already exists,
+ but that’s OK.
+
+ split: style fix
+ * src/split.c (ofile_open): Avoid ‘if (! (a = b))’ style.
+
+ split: prefer signed integers to size_t
+ This allows for better runtime checking with gcc
+ -fsanitize=undefined.
+ * src/split.c: Include idx.h.
+ (open_pipes_alloc, n_open_pipes, suffix_length)
+ (set_suffix_length, input_file_size, sufindex, outbase_length)
+ (outfile_length, addsuf_length, create, cwrite, bytes_split)
+ (lines_split, line_bytes_split, lines_chunk_split)
+ (bytes_chunk_extract, ofile_open, lines_rr, main):
+ Prefer signed integers (typically idx_t) to size_t.
+
+ split: handle large numbers better
+ Prefer signed types to uintmax_t, as this allows for better
+ runtime checking with gcc -fsanitize=undefined.
+ Also, when an integer overflows just use the maximal value
+ when the code will do the right thing anyway.
+ * src/split.c (set_suffix_length, bytes_split, lines_split)
+ (line_bytes_split, lines_chunk_split, bytes_chunk_extract)
+ (lines_rr, parse_chunk, main):
+ Prefer a signed type (typically intmax_t) to uintmax_t.
+ (strtoint_die): New function.
+ (OVERFLOW_OK): New macro. Use it elsewhere, where we now allow
+ LONGINT_OVERFLOW because the code then does the right thing on all
+ practical platforms (they have int wide enough so that it cannot
+ be practically exhausted). We can do this now that we can safely
+ assume intmax_t has at least 64 bits.
+ (parse_n_units): New function.
+ (parse_chunk, main): Use it.
+ (main): Do not worry about integer overflow when the code
+ will do the right thing anyway with the extreme value.
+ Just use the extreme value.
+ * tests/split/fail.sh: Adjust to match new behavior.
+
+ split: prefer ssize_t for read result
+ * src/split.c (bytes_split, lines_chunk_split)
+ (bytes_chunk_extract, main): Prefer ssize_t to size_t when
+ representing the return value of ‘read’. Use a negative value
+ instead of SIZE_MAX to indicate a missing value.
+
+ split: be more careful about buffer sizes
+ * src/split.c: Include sys-limits.h, not safe-read.h.
+ (input_file_size, bytes_split, lines_split, line_bytes_split)
+ (lines_chunk_split, bytes_chunk_extract, lines_rr): Call read, not
+ safe_read, since safe_read no longer buys us anything.
+ (main): Reject outlandish buffer sizes right away,
+ rather than allocating huge buffers and never using them.
+
+ split: minor -1 / 0 refactor
+ * src/split.c (create, bytes_split, ofile_open):
+ Prefer comparing to 0 to comparing to -1.
+
+ split: don’t worry about ECHILD
+ * src/split.c (closeout): There should be no need for a special
+ case for ECHILD, since we never wait for the same child twice.
+ Simplify with this in mind.
+
+ split: don’t assume pid_t fits in int
+ * src/split.c (filter_pid): Now pid_t, not int.
+ (of_t): opid member is now pid_t, not int.
+
+ split: simplify SIGPIPE handling
+ Ignore and default SIGPIPE, rather than blocking and unblocking it.
+ * src/split.c (default_SIGPIPE):
+ New static var, replacing oldblocked and newblocked.
+ (create): Use it.
+ (main): Set it.
+
+ split: port ‘split -n N /dev/null’ better to macOS
+ * src/split.c (input_file_size): Do not bother with lseek if the
+ initial read probe reaches EOF, since the file size is known then.
+ This works better on macOS, which doesn’t allow lseek on /dev/null.
+ Do not special-case size-zero files, as the issue can occur
+ with any size file (though /proc files are the most common).
+ If the current position is past end of file, treat this as
+ size zero regardless of whether the file has a usable st_size.
+ Pass through lseek -1 return values rather than using ‘return -1’;
+ this makes the code a bit easier to analyze (and a bit faster).
+ Avoid undefined behavior if the size calculation overflows.
+ (lines_chunk_split): Do not bother with lseek if it would have
+ no effect if successful. This works better on macOS, which
+ doesn’t allow lseek on /dev/null.
+ * tests/split/l-chunk.sh: Adjust to match fixed behavior.
+
+ maint: fix NEWS quoting
+ * NEWS: Use English-language quoting in recent news.
+
+ split: split more evenly with -n
+ * src/split.c (bytes_split): New arg REM_BYTES.
+ Use this to split more evenly. All callers changed.
+ (lines_chunk_split, bytes_chunk_extract):
+ Be consistent with new byte_split.
+ * tests/split/b-chunk.sh, tests/split/l-chunk.sh: Test new behavior.
+
+ split: small -n lines simplification
+ * src/split.c (lines_chunk_split):
+ Rewrite while as if-while for clarity.
+
+ split: refactor lines_chunk_split
+ * src/split.c (lines_chunk_split): Simplify by having chunk_end
+ point to the first byte after the chunk, rather than to the last
+ byte of the chunk. This will reduce confusion once we allow
+ chunks to be empty.
+
+ tee: tune when later -p overrides earlier
+ * src/tee.c (pipe_check): Make this a local var instead
+ of a static var. This suppresses a -Wmaybe-uninitialized
+ diagnostic with gcc 12.2.1 20221121 (Red Hat 12.2.1-4).
+ (main): Don’t set pipe_check unnecessarily if a later
+ -p option overrides an earlier one that wants pipe_check.
+ Problem discovered when I investigated the GCC warning.
+
+2023-03-01 Pádraig Brady <P@draigBrady.com>
+
+ maint: refactor tail.c to use iopoll
+ * src/tail.c (check_output_alive): Reuse iopoll()
+ rather than directly calling poll() or select().
+ * src/iopoll.c (iopoll): Refactor to support non blocking operation,
+ or ignoring descriptors by passing a negative value.
+ * src/iopoll.h (iopoll): Adjust to support a BLOCK parameter.
+ * src/tee.c (tee_files): Adjust iopoll() call to explicitly block.
+ * src/local.mk: Have tail depend on iopoll.c.
+
+2023-02-28 Pádraig Brady <P@draigBrady.com>
+
+ tail: avoid undefined behavior when polling outputs
+ * src/tail.c (check_output_alive): Only check the returned
+ events from poll() when it indicates there are events to check.
+
+ doc: tee -p: clarify operation
+ * src/tee.c (usage): Change from describing one (non pipe) aspect
+ to the more general point of being the option to use if working with
+ pipes, and referencing the more detailed info below.
+ * doc/coreutils.texi (tee invocation): s/standard/appropriate/ since
+ the standard operation with pipes is to exit immediately upon write
+ error. s/early/immediately/ as it's ambiguous as to what "early"
+ is in relation to.
+
+ tests: tee -p: add test for early exit with closed pipes
+ * tests/misc/tee.sh: Add a test for the new iopoll logic
+ to detect closed outputs and exit early without needing
+ further input.
+
+2023-02-28 Carl Edquist <edquist@cs.wisc.edu>
+
+ tee: enhance -p mode using iopoll() to detect broken pipe outputs
+ If input is intermittent (a tty, pipe, or socket), and all remaining
+ outputs are pipes (eg, >(cmd) process substitutions), exit early when
+ they have all become broken pipes (and thus future writes will fail),
+ without waiting for more input to become available, as future write
+ attempts to these outputs will fail (SIGPIPE/EPIPE).
+
+ Only provide this enhancement when pipe errors are ignored (-p mode).
+
+ Note that only one output needs to be monitored at a time with iopoll(),
+ as we only want to exit early if _all_ outputs have been removed.
+
+ * src/tee.c (pipe_check): New global for iopoll mode.
+ (main): enable pipe_check for -p, as long as output_error ignores EPIPE,
+ and input is suitable for iopoll().
+ (get_next_out): Helper function for finding next valid output.
+ (fail_output, tee_files): Break out write failure/output removal logic
+ to helper function.
+ (tee_files): Add out_pollable array to track which outputs are suitable
+ for iopoll() (ie, that are pipes); track first output index that is
+ still valid; add iopoll() broken pipe detection before calling read(),
+ removing an output that becomes a broken pipe.
+ * src/local.mk (src_tee_SOURCES): include src/iopoll.c.
+ * NEWS: Mention tee -p enhancement in Improvements.
+ * doc/coreutils.texi: Mention the new early exit behavior in the nopipe
+ modes for the tee -p option.
+
+ Suggested-by: Arsen Arsenović <arsen@aarsen.me>
+
+2023-02-28 Carl Edquist <edquist@cs.wisc.edu>
+
+ all: add broken pipe detection while waiting for input
+ When a program's output becomes a broken pipe, future attempts to write
+ to that ouput will fail (SIGPIPE/EPIPE). Once it is known that all
+ future write attepts will fail (due to broken pipes), in many cases it
+ becomes pointless to wait for further input for slow devices like ttys.
+ Ideally, a program could use this information to exit early once it is
+ known that future writes will fail.
+
+ Introduce iopoll() to wait on a pair of fds (input & output) for input
+ to become ready or output to become a broken pipe.
+
+ This is relevant when input is intermittent (a tty, pipe, or socket);
+ but if input is always ready (a regular file or block device), then
+ a read() will not block, and write failures for a broken pipe will
+ happen normally.
+
+ Introduce iopoll_input_ok() to check whether an input fd is relevant
+ for iopoll().
+
+ Experimentally, broken pipes are only detectable immediately for pipes,
+ but not sockets. Errors for other file types will be detected in the
+ usual way, on write failure.
+
+ Introduce iopoll_output_ok() to check whether an output fd is suitable
+ for iopoll() -- namely, whether it is a pipe.
+
+ iopoll() is best implemented with a native poll(2) where possible, but
+ fall back to a select(2)-based implementation platforms where there are
+ portability issues. See also discussion in tail.c.
+
+ In general, adding a call to iopoll() before a read() in filter programs
+ also allows broken pipes to "propagate" backwards in a shell pipeline.
+
+ * src/iopoll.c, src/iopoll.h (iopoll): New function implementing broken
+ pipe detection on output while waiting for input.
+ (IOPOLL_BROKEN_OUTPUT, IOPOLL_ERROR): Return codes for iopoll().
+ (IOPOLL_USES_POLL): Macro for poll() vs select() implementation.
+ (iopoll_input_ok): New function to check whether an input fd is relevant
+ for iopoll().
+ (iopoll_output_ok): New function to check whether an input fd is
+ suitable for iopoll().
+ * src/local.mk (noinst_HEADERS): add src/iopoll.h.
+
+2023-02-27 Pádraig Brady <P@draigBrady.com>
+
+ build: update to latest gnulib
+ * NEWS: Mention the fts fix to avoid the following assert
+ in rm on mem pressure:
+ Program terminated with signal SIGSEGV, Segmentation fault.
+ at ../lib/cycle-check.c:60
+ assure (state->magic == CC_MAGIC);
+ * gnulib: Update to the latest to pick up fts commit f17d3977.
+
+2023-02-26 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid hang in new test
+ * tests/rm/empty-inacc.sh: Ensure we're not reading from stdin
+ when we're relying on no prompt to proceed. Also change the
+ file being tested so that a failure in one test doesn't impact
+ following tests causing a framework failure.
+
+2023-02-26 Pádraig Brady <P@draigBrady.com>
+
+ tests: avoid gdb on macOS
+ gdb was seen to hang intermittently on macOS 12.
+ Also gdb requires signing on newer macOS systems:
+ https://sourceware.org/gdb/wiki/PermissionsDarwin
+ So restrict its use on macOS systems for now.
+
+ * tests/rm/r-root.sh: Skip on darwin systems.
+ * tests/tail-2/inotify-race.sh: Restrict the test to
+ inotify capable systems to avoid the hang with some gdbs.
+ * tests/tail-2/inotify-race.sh: Likewise.
+
+2023-02-24 Pádraig Brady <P@draigBrady.com>
+
+ cp,install,mv: --debug: output debug info when reflinking
+ * src/copy.c (copy_reg): Always check whether to output debug info.
+ (emit_debug): Restrict output with `cp --attributes-only`.
+
+2023-02-24 Pádraig Brady <P@draigBrady.com>
+
+ tests: determine if SEEK_HOLE is enabled
+ Upcomming gnulib changes may disable SEEK_HOLE
+ even if the system supports it, so dynamically
+ check if we've SEEK_HOLE enabled.
+
+ * init.cfg (seek_data_capable_): SEEK_DATA may be disabled in the build
+ if the system support is deemed insufficient, so also use `cp --debug`
+ to determine if it's enabled.
+ * tests/cp/sparse-2.sh: Adjust to a more general diagnostic.
+ * tests/cp/sparse-extents-2.sh: Likewise.
+ * tests/cp/sparse-extents.sh: Likewise.
+ * tests/cp/sparse-perf.sh: Likewise.
+
+2023-02-24 Pádraig Brady <P@draigBrady.com>
+
+ cp,install,mv: add --debug to explain how a file is copied
+ How a file is copied is dependent on the sparseness of the file,
+ what file system it is on, what file system the destination is on,
+ the attributes of the file, and whether they're being copied or not.
+ Also the --reflink and --sparse options directly impact the operation.
+
+ Given it's hard to reason about the combination of all of the above,
+ the --debug option is useful for users to directly identify if
+ copy offloading, reflinking, or sparse detection are being used.
+
+ It will also be useful for tests to directly query if
+ these operations are supported.
+
+ The new output looks as follows:
+
+ $ src/cp --debug src/cp file.sparse
+ 'src/cp' -> 'file.sparse'
+ copy offload: yes, reflink: unsupported, sparse detection: no
+
+ $ truncate -s+1M file.sparse
+
+ $ src/cp --debug file.sparse file.sparse.cp
+ 'file.sparse' -> 'file.sparse.cp'
+ copy offload: yes, reflink: unsupported, sparse detection: SEEK_HOLE
+
+ $ src/cp --reflink=never --debug file.sparse file.sparse.cp
+ 'file.sparse' -> 'file.sparse.cp'
+ copy offload: avoided, reflink: no, sparse detection: SEEK_HOLE
+
+ * doc/coreutils.texi (cp invocation): Describe the --debug option.
+ (mv invocation): Likewise.
+ (install invocation): Likewise.
+ * src/copy.h: Add a new DEBUG member to cp_options, to control
+ whether to output debug info or not.
+ * src/copy.c (copy_debug): A new global structure to
+ unconditionally store debug into from the last copy_reg operations.
+ (copy_debug_string, emit_debug): New functions to print debug info.
+ * src/cp.c: if ("--debug") x->debug=true;
+ * src/install.c: Likewise.
+ * src/mv.c: Likewise.
+ * tests/cp/debug.sh: Add a new test.
+ * tests/local.mk: Reference the new test.
+ * NEWS: Mention the new feature.
+
+2023-02-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+
+2023-02-23 Pádraig Brady <P@draigBrady.com>
+
+ doc: chgrp,chmod,chown: state --reference always dereferences
+ * src/chgrp.c (usage): State that --reference always
+ dereferences symbolic links.
+ * src/chmod.c (usage): Likewise.
+ * src/chown.c (usage): Likewise.
+ Fixes https://bugs.gnu.org/61720
+
+2023-02-21 ChuanGang Jiang <jiangchuanganghw@outlook.com>
+
+ doc: fix some spelling mistakes
+ * doc/coreutils.texi: s/functionalty/functionality/,
+ s/sychronize/synchronize/, s/millsecond/millisecond/
+ s/paramter/parameters/
+ * init.cfg: s/parmeters/parameters/
+ * scripts/build-older-versions/README.older-versions: s/vesion/version/
+ * tests/misc/env-S-script.sh: s/paramaters/parameters/
+ Fixes https://bugs.gnu.org/61681
+
+2023-02-21 Pádraig Brady <P@draigBrady.com>
+
+ maint: avoid -Wmaybe-uninitialized warning from GCC13
+ * src/copy.c (infer_scantype): Always set scan_inference.ext_start,
+ as per commit 6c03e8fb which was inadvertently reverted by d374d32c.
+
+2023-02-21 Jim Meyering <meyering@fb.com>
+
+ tests: initialize a variable
+ * tests/rm/interactive-once.sh (write_prot_msg1): Initialize it,
+ so an envvar setting cannot perturb the test.
+
+2023-02-21 Jim Meyering <meyering@meta.com>
+
+ rm: --dir (-d): fix bugs in handling of empty, inaccessible directories
+ * src/remove.c (prompt, rm_fts): In the dir-handling code of both of
+ these functions, relax a "get_dir_status (...) == DS_EMPTY" condition
+ to instead test only "get_dir_status (...) != 0", enabling flow control
+ to reach the prompt function also for unreadable directories. However,
+ that function itself also needed special handling for this case:
+ (prompt): Handle empty, inaccessible directories properly,
+ deleting them with -d (--dir), and prompting about whether to delete
+ with -i (--interactive).
+ * tests/rm/empty-inacc.sh: Add tests for the new code.
+ Reported by наб <nabijaczleweli@nabijaczleweli.xyz> in
+ bugs.debian.org/1015273
+ * NEWS (Bug fixes): Mention this.
+
+2023-02-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ tests: port chmod/setgid.sh to macOS 12
+ * tests/chmod/setgid.sh: Try all the groups you’re a member of,
+ in case id -g returns 4294967295 (nogroup) which is special
+ and does not let you chgrp a file to it.
+
+ tests: port better to macOS group numbers
+ * init.cfg (groups): Port better to macOS 12, where
+ group 4294967295 (nogroup) is special: you can be a member
+ without being able to chgrp files to the group.
+
+ build: update gnulib submodule to latest
+
+2023-02-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ cp: fclonefileat security fix + CLONE_ACL + fixups
+ * src/copy.c: Some changes if HAVE_FCLONEFILEAT && !USE_XATTR.
+ (fd_has_acl): New function.
+ (CLONE_ACL): Default to 0.
+ (copy_reg): Use CLONE_NOFOLLOW to avoid races like CVE-2021-30995
+ <https://www.trendmicro.com/en_us/research/22/a/
+ analyzing-an-old-bug-and-discovering-cve-2021-30995-.html>.
+ Use CLONE_ACL if available and working, falling back to cloning
+ without it if it fails due to EINVAL.
+ If the only problem with fclonefileat is that it would create the
+ file with the wrong timestamp, or with too few permissions,
+ do that but fix the timestamp and permissions afterwards,
+ rather than falling back on a traditional copy.
+
+2023-02-10 ChuanGang Jiang <jiangchuanganghw@outlook.com>
+
+ maint: fix some typos in comments
+ * NEWS: s/commmand/command/
+ * cfg.mk: Adjust old_NEWS_hash with `make update-NEWS-hash`.
+ * src/expand-common.c: s/specifed/specified/
+ * src/pr.c: s/e.g/e.g./
+ * tests/misc/comm.pl: s/ouput/output/
+ Fixes https://bugs.gnu.org/61405
+
+2023-02-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ cp: simplify infer_scantype
+ * src/copy.c (infer_scantype): Do not set *SCAN_INFERENCE
+ when returning a value other than LSEEK_SCANTYPE.
+ This is just minor refactoring; it simplifies the code a bit.
+ Callers are uneffected.
+
+ doc: document --preserve=mode better
+
+2023-02-06 Pádraig Brady <P@draigBrady.com>
+
+ tail: improve --follow=name with single non regular files
+ * src/tail (tail_forever): Attempt to read() from non blocking
+ single non regular file, which shouldn't block, but also
+ read data even when the mtime doesn't change.
+ * NEWS: Mention the improvement.
+ * THANKS.in: Thanks for detailed testing.
+
+2023-02-06 Pádraig Brady <P@draigBrady.com>
+
+ tail: fix support for -F with non seekable files
+ This was seen to be an issue when following a
+ symlink that was being updated to point to
+ different underlying devices.
+
+ * src/tail.c (recheck): Guard the lseek() call to only
+ be performed for regular files.
+ * NEWS: Mention the bug fix.
+
+2023-02-06 Pádraig Brady <P@draigBrady.com>
+
+ cksum: add --raw option to output a binary digest
+ --raw output is the most composable format, and also is a
+ robust way to discard the file name without parsing (escaped) output.
+
+ Examples:
+
+ $ cksum --raw -a crc "$afile" | basenc --base16
+ 4ACFC4F0
+
+ $ cksum --raw -a crc "$afile" | basenc --base2msbf
+ 01001010110011111100010011110000
+
+ $ cksum --raw -a sha256 "$bfile" | basenc --base32
+ AAAAAAAADHLGRHAILLQWLAY6SNH7OY5OI2RKNQLSWPY3MCUM4JXQ====
+
+ * doc/coreutils.texi (cksum invocation): Describe the new feature.
+ * src/digest.c (output_file): Inspect the new RAW_DIGEST global,
+ and output the bytes directly if set.
+ * src/cksum.c (output_crc): Likewise.
+ * src/sum.c (output_bsd, output_sysv): Likewise.
+ * tests/misc/cksum-raw.sh: A new test.
+ * tests/local.mk: Reference the new test.
+ * NEWS: Mention the new feature.
+
+2023-02-05 Pádraig Brady <P@draigBrady.com>
+
+ build: uptime: avoid issues on systems without utmp.h
+ * src/uptime.c (print_uptime): Following gnulib commit 9041103
+ HAVE_UTMP_H will always be defined. Therefore key on whether
+ the utmp.ut_type member is present.
+ * boottime.m4 (GNULIB_BOOT_TIME): Assume utmp.h is present.
+
+2023-02-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: use alignasof, not stdalign
+ * .gitignore: Update accordingly.
+ * bootstrap.conf (gnulib_modules): Replace obsolescent stdalign
+ with alignasof.
+ * gl/modules/randread (Depends-on): Depend on alignasof, not stdalign.
+
+ maint: prefer https: to git:
+ The idea is to defend against some adversary-in-the-middle attacks.
+
+ build: update gnulib submodule to latest
+
+2023-02-03 Pádraig Brady <P@draigBrady.com>
+
+ maint: avoid line length syntax check failure
+ * src/cp.c: Adjust source line to be <= 80 chars.
+
+ tests: fix exit status check in cp -u test
+ * tests/cp/preserve-link.sh: This should have been part
+ of commit v9.1-134-g01503ce73.
+
+2023-02-01 Jim Meyering <meyering@fb.com>
+
+ cksum: accept new option: --base64 (-b)
+ * src/digest.c [HASH_ALGO_CKSUM]: Include "base64.h"
+ [HASH_ALGO_CKSUM] (base64_digest): New global.
+ [HASH_ALGO_CKSUM] (enum BASE64_DIGEST_OPTION): New enum.
+ [HASH_ALGO_CKSUM] (long_options): Add "base64".
+ (valid_digits): Rename from hex_digits, now taking an input length argument.
+ Adjust callers.
+ (bsd_split_3): Rename arg from hex_digits to digest.
+ Add new *d_len parameter for length of extracted digest.
+ Move "i" declaration down to first use.
+ (split_3): Rename arg from hex_digits to digest.
+ Add new *d_len parameter for length of extracted digest.
+ Instead of relying on "known" length of digest to find the following
+ must-be-whitespace byte, search for the first whitespace byte.
+ [HASH_ALGO_CKSUM] (output_file): Handle base64_digest.
+ [HASH_ALGO_CKSUM] (main): Set base64_digest.
+ [HASH_ALGO_CKSUM] (b64_equal): New function.
+ (hex_equal): New function, factored out of digest_check.
+ (digest_check) Factored part into b64_equal and hex_equal.
+ Rename local hex_digest to digest.
+ * tests/misc/cksum-base64.pl: Add tests.
+ * tests/local.mk (all_tests): Add to the list.
+ * cfg.mk (_cksum): Define.
+ (exclude_file_name_regexp--sc_prohibit_test_backticks): Exempt new test.
+ (exclude_file_name_regexp--sc_long_lines): Likewise.
+ * doc/coreutils.texi (cksum invocation): Document it.
+ (md5sum invocation) [--check]: Mention digest encoding auto-detect.
+ * NEWS (New Features): Mention this.
+
+2023-01-31 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: document --preserve=mode better
+ * doc/coreutils.texi: Spruce up cp --preserve=mode doc.
+
+ cp: improve --preserve usage doc
+ * src/cp.c (usage): Improve description of --preserve.
+
+ cp,mv: skipping due to -u is success, not failure
+ This reverts the previous change, so that when a file
+ is skipped due to -u, this is not considered a failure.
+ * doc/coreutils.texi: Document this.
+ * src/copy.c (copy_internal): If --update says to skip,
+ treat this as success instead of failure.
+ * tests/mv/update.sh, tests/cp/slink-2-slink.sh:
+ Revert previous change, to match reverted behavior.
+
+ cp,ln,mv: when skipping exit with nonzero status
+ * NEWS, doc/coreutils.texi: Document this.
+ * src/copy.c (copy_internal):
+ * src/ln.c (do_link): Return false when skipping action due to
+ --interactive or --no-clobber.
+ * tests/cp/cp-i.sh, tests/cp/preserve-link.sh:
+ * tests/cp/slink-2-slink.sh, tests/mv/i-1.pl, tests/mv/i-5.sh:
+ * tests/mv/mv-n.sh, tests/mv/update.sh:
+ Adjust expectations of exit status to match revised behavior.
+
+2023-01-30 Pádraig Brady <P@draigBrady.com>
+
+ tests: cksum: fix test to include more cases
+ * tests/misc/cksum-c.sh: Fix typo which caused part
+ of the test data to be ignored.
+
+2023-01-30 Jim Meyering <meyering@fb.com>
+
+ digest.c: remove a duplicate variable
+ * src/digest.c (digest_check): Locals n_misformatted_lines and
+ n_improperly_formatted_lines were declared and set/incremented
+ identically. Remove declaration of the latter. Use the other instead.
+
+ build: avoid spurious failures due to lack of EGREP definition
+ * configure.ac: Use AC_PROG_EGREP, since many doc and test rules
+ use $EGREP.
+ * cfg.mk (sc_tests_list_consistency): Use grep -E, not $(EGREP) here.
+
+2023-01-27 Pádraig Brady <P@draigBrady.com>
+
+ tests: ensure we fail if mv --no-copy crashes
+ * tests/mv/no-copy.sh: Honor `make syntax` check
+ and use the `returns_ 1 ...` pattern.
+
+2023-01-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ mv: new option --no-copy
+ Wishlist item from Mike Frysinger (Bug#61050).
+ * src/copy.c (copy_internal):
+ Do not fall back on copying if x->no_copy.
+ * src/copy.h (struct cp_options): New member no_copy.
+ * src/mv.c (NO_COPY_OPTION): New constant.
+ (long_options, usage, main): Support --no-copy.
+ * tests/mv/no-copy.sh: New test.
+ * tests/local.mk (all_tests): Add it.
+
+2023-01-17 Pádraig Brady <P@draigBrady.com>
+
+ maint: add lib/error.h to .gitignore
+ * .gitignore: Add /lib/error.h as suggested by sc_gitignore_missing
+ as a result of gnulib change 2886cca8.
+
+ doc: csplit: more accurate --elide-empty-files help
+ * src/csplit.c (usage): Use "suppress" rather than "remove"
+ when describing -z so it's more apparent that the effect
+ is a particular numbered file is not created, rather than
+ being removed later. I.e., don't suggest -z may induce
+ gaps in file numbering.
+ Reported at https://bugs.debian.org/1029103
+
+2023-01-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+ * m4/xattr.m4: Remove. This file is now autogenerated by 'bootstrap',
+ since it's now in Gnulib. (I did this part by hand.)
+
+2023-01-08 Pádraig Brady <P@draigBrady.com>
+
+ copy: copy_file_range: handle ENOENT for CIFS
+ * src/copy.c (sparse_copy): Fallback to standard copy upon ENOENT,
+ which was seen intermittently across CIFS file systems.
+ * NEWS: Mention the bug fix, though qualify it as an "issue"
+ rather than a bug, as coreutils is likely only highlighting
+ a CIFS bug in this case.
+ Fixes https://bugs.gnu.org/60455
+
+2023-01-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: update .gitignore
+ * .gitignore: Add confdefs*, conftest* (temporaries built
+ by ‘configure’).
+
+ maint: adjust to Gnulib macro renaming
+ * src/local.mk (LDADD, copy_ldadd, remove_ldadd, src_sort_LDADD)
+ (src_test_LDADD, copy_ldadd, src_date_LDADD, src_ginstall_LDADD)
+ (src_ln_LDADD, src_ls_LDADD, src_mktemp_LDADD, src_pr_LDADD)
+ (src_tac_LDADD, src_touch_LDADD, src_dd_LDADD, src_sleep_LDADD)
+ (src_sort_LDADD, src_tail_LDADD, src_sort_LDADD, LDADD):
+ Adjust to recent Gnulib changes.
+
+ build: update gnulib submodule to latest
+
+2023-01-06 Pádraig Brady <P@draigBrady.com>
+
+ copy: immediately fail with transient reflink errors
+ * src/copy.c (handle_clone_fail): A new function refactored
+ from copy_reg() to handle failures from FICLONE or fclonefileat().
+ Fail with all errors from FICLONE, unless they're from the set
+ indicating the file system or file do not support the clone operation.
+ Also fail with errors from fclonefileat() (dest_dest < 0)
+ if they're from the set indicating a transient failure for the file.
+ (copy_ref): Call handle_clone_fail() after fclonefileat() and FICLONE.
+ (sparse_copy): Call the refactored is_CLONENOTSUP()
+ which is now also used by the new handle_clone_fail() function.
+ * NEWS: Mention the bug fix. Also mention explicitly
+ the older --reflink=auto default change to aid searching.
+ * cfg.mk: Adjust old_NEWS_hash with `make update-NEWS-hash`.
+ Fixes https://bugs.gnu.org/60489
+
+ all: further adjustments for new Ronna, Quetta SI prefixes
+ * src/dd.c (parse_integer): Support Q,R suffixes.
+ * src/od.c (main): Likewise.
+ * src/split.c (main): Likewise.
+ * src/stdbuf.c (parse_size): Likewise.
+ * src/truncate.c (main): Likewise.
+ * src/sort.c (specify_size_size): Likewise.
+ Also line length syntax check fix.
+ * tests/misc/numfmt.pl: Adust top end large number checks
+ to the new largest values.
+ * doc/coreutils.texi (numfmt invocation): Add a numfmt example.
+ * NEWS: Tweak to aid searchability.
+
+2023-01-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ numfmt: add support for new SI prefixes
+ * src/dd, src/head.c, src/od.c, src/sort.c, src/stdbuf.c, src/tail.c:
+ (usage):
+ * src/system.h (emit_size_note):
+ Mention new SI prefixes.
+ * src/du.c (main):
+ * src/head.c (head_file):
+ * src/numfmt.c (suffix_power, suffix_power_char, prepare_padded_number):
+ * src/shred.c (main):
+ * src/sort.c (unit_order):
+ * src/tail.c (parse_options):
+ Support new SI prefixes.
+ * src/numfmt.c (MAX_ACCEPTABLE_DIGITS): Increase to 33.
+ (zero_and_valid_suffixes, valid_suffixes): New constants,
+ with new SI prefixes.
+ (valid_suffix, unit_to_umax): Use them.
+ (prepare_padded_number): Diagnose "999Q" instead of "999Y".
+ * tests/misc/numfmt.pl, tests/misc/sort.pl:
+ Adjust tests to match new max.
+
+ ls: adjust to Gnulib renaming
+ * src/local.mk (src_ls_LDADD): In Gnulib,
+ LIB_HAS_ACL was renamed to FILE_HAS_ACL_LIB.
+
+ build: update gnulib submodule to latest
+
+2023-01-03 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: avoid grep warning in sc_prohibit_test_minus_ao
+ Newer grep(1) complains:
+ $ make sc_prohibit_test_minus_ao
+ /usr/bin/grep: warning: * at start of expression
+ prohibit_test_minus_ao
+
+ * cfg.mk (exclude_file_name_regexp--sc_prohibit_test_minus_ao): Fix
+ expression inroduced in v8.24-120-g3205bb178, and narrow down the file
+ pattern to the 'doc/' directory.
+
+2023-01-02 Pádraig Brady <P@draigBrady.com>
+
+ doc: copy: mention the reinstated I/O size constraints
+ * NEWS: Mention the change in behavior re block size multiples
+ to support unusual devices with this constraint.
+ * src/copy.c (copy_reg): Likewise.
+
+2023-01-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ copy: fix possible over allocation for regular files
+ * bootstrap.conf (gnulib_modules): Add count-leading-zeros,
+ which was already an indirect dependency, since ioblksize.h
+ now uses it directly.
+ * src/ioblksize.h: Include count-leading-zeros.h.
+ (io_blksize): Treat impossible blocksizes as IO_BUFSIZE.
+ When growing a blocksize to IO_BUFSIZE, keep it a multiple of the
+ stated blocksize. Work around the ZFS performance bug.
+ * NEWS: Mention the bug fix.
+ Problem reported by Korn Andras at https://bugs.gnu.org/59382
+
+2023-01-01 Pádraig Brady <P@draigBrady.com>
+
+ maint: update all copyright year number ranges
+ Update to latest gnulib with new copyright year.
+ Run "make update-copyright" and then...
+
+ * tests/init.sh: Sync with gnulib to pick up copyright year.
+ * bootstrap: Manually update copyright year,
+ until we fully sync with gnulib at a later stage.
+ * tests/sample-test: Adjust to use the single most recent year.
+
+2023-01-01 Pádraig Brady <P@draigBrady.com>
+
+ build: update gnulib submodule to latest
+ mainly to get updated copyright year
+
+ * tests/init.sh: Sync with gnulib
+
+2022-12-31 Pádraig Brady <P@draigBrady.com>
+
+ stty: fix off by one column wrapping on output
+ * src/stty.c (wrapf): Adjust the comparison by 1,
+ to account for the space we're adding.
+ * tests/misc/stty.sh: Add a test case.
+ * NEWS: Mention the fix.
+ Reported in https://bugs.debian.org/1027442
+
+2022-12-31 Pádraig Brady <P@draigBrady.com>
+
+ copy: attempt copy offload with sparse files by default
+ This was seen to vastly improve performance
+ on NFS 4.2 systems by allowing server side copies,
+ with partially sparse files (avidemux generated mp4 files).
+
+ * src/copy.c (lseek_copy): Also set hole_size to 0,
+ i.e. enable copy_file_range(), with --sparse=auto (the default),
+ to enable copy offload in this case, as we've strong signal
+ from SEEK_DATA that we're operating on actual data and not holes here.
+ * NEWS: Mention the improvement.
+ Fixes https://bugs.gnu.org/60416
+
+2022-12-29 Pádraig Brady <P@draigBrady.com>
+
+ wc: fix regression determining file size
+ * src/wc.c (wc): Use off_t rather than size_t
+ when calculating where to seek to, so that
+ we don't seek to a too low offset on systems
+ where size_t < off_t, which would result in
+ many read() calls to determine the file size.
+ * tests/misc/wc-proc.sh: Add a test case
+ sufficient for 32 bit systems at least.
+ * NEWS: Mention the bug fix.
+ Reported at https://bugs.debian.org/1027101
+
+ maint: avoid recent syntax check failure
+ * tests/cp/proc-short-read.sh: Adjust so shorter lines.
+
+2022-12-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: improve doc of du with CoW etc
+ Problem reported by Krzysztof Żelechowski (Bug#60335).
+ * doc/coreutils.texi (du invocation): Reword.
+
+ doc: improve du --threshold wording
+ * doc/coreutils.texi (du invocation): Reword.
+
+ tests: accommodate bogomips capitalizations
+ * tests/cp/proc-short-read.sh: Kernel on ARMv7 Processor rev 3 (v7l)
+ spells it "BogoMIPS", so allow any capitalization. Patch from
+ Zach van Rijn in <https://bugs.gnu.org/60339>.
+
+2022-12-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+
+ doc: timezone -> time zone
+
+ doc: improve date -I doc
+ Suggested by Marc Chantreux (bug#59827).
+ * doc/coreutils.texi (Options for date):
+ Give formats for -I, like we already do for --rfc-3339.
+
+2022-12-05 Dennis Williamson <dennis@netstrata.com>
+
+ build: fix missing inclusion of poll.h on macOS
+ * src/tail.c: Following on from commit v9.1-55-g324c188cf
+ also include poll.h for __APPLE__, which was seen to be required
+ on macOS 11.6
+
+2022-11-29 Pádraig Brady <P@draigBrady.com>
+
+ doc: tee: make -p decription more complete
+ * doc/coreutils.texi (tee invocation): Give a more
+ cohesive description of the -p option, and how
+ it differs from the default operation.
+
+2022-11-20 Arsen Arsenović <arsen@aarsen.me>
+
+ scripts: commit-msg: recognize Git cut_lines
+ This prevents spurious failures from happening when someone sets
+ commit.verbose or passes -v to commit.
+
+2022-11-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: more dash fixes
+ * doc/coreutils.texi, doc/sort-version.texi: Prefer on "x -- y" to
+ "x---y" in prose, as the result is more readable in Emacs.
+ Fix some instances of unescaped ‘-’ that should be minus, not
+ hyphen. Fix some other instances that should be en dash. No
+ spaces around en dash when it’s a range.
+
+ maint: fix cfg.mk comment
+ * cfg.mk (sc_texi_long_option_escaped): Fix comment.
+
+2022-11-15 Pádraig Brady <P@draigBrady.com>
+
+ tests: make SIGPIPE trap checking more robust
+ * init.cfg (trap_sigpipe_or_skip_): A subshell with ignored SIGPIPE
+ was seen to not terminate, on Solaris 11 at least.
+ So protect with a timeout(1).
+
+ maint: avoid new grep -q syntax-check failures
+ * cfg.mk: Exclude NEWS from the check.
+ * init.cfg: s/grep -q/grep >/dev/null/.
+ * tests/ls/hyperlink.sh: Likewise.
+ * tests/ls/symlink-quote.sh: Likewise.
+
+ maint: avoid misquoting of some --long-options in texi
+ * cfg.mk (sc_texi_long_option_escaped): A new check to
+ avoid future instances of this.
+ * doc/coreutils.texi (Common options): Rearrange this menu
+ to be less repetitive in each description, and avoid long lines.
+ Addresses https://bugs.gnu.org/59262
+
+2022-11-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: fix markup
+ Problem reported by Antonio Diaz Diaz (bug#59262).
+ * doc/coreutils.texi: Use markup in menus to prevent
+ ‘--’ from turning into an em dash, and to be more
+ consistent.
+
+ build: update gnulib submodule to latest
+
+2022-10-28 Pádraig Brady <P@draigBrady.com>
+
+ doc: printf: make "java" encoding example more standard
+ Note using iconv(1) rather than recode(1) is not appropriate
+ for this example, as the required functionality is only
+ available on libiconv's iconv implementation, which is
+ not installed on most systems.
+
+ * doc/coreutils.texi (printf invocation): Use env rather than
+ /usr/local/bin for the printf command. Escape '%' so more robust.
+ Also use a locale that exists on modern systems.
+
+2022-10-28 Pádraig Brady <P@draigBrady.com>
+
+ doc: move description of printf options to better location
+ * doc/coreutils.texi (printf invocation): Move the description
+ of accepted options from the middle of the unicode discussion.
+
+2022-10-28 Pádraig Brady <P@draigBrady.com>
+
+ printf: with \U, support all valid unicode points
+ Previously this was restricted to the C99 universal character subset,
+ which restricted most values <= 0x9F, as that simplifies the C lexer.
+ However printf(1) doesn't need this restriction.
+ Note also the bash builtin printf already supports all values <= 0x9F.
+
+ * src/printf.c (main): Relax the restriction on points <= 0x9F.
+ * doc/coreutils.texi (printf invocation): Adjust description.
+ * tests/misc/printf-cov.pl: Adjust accordingly. Add new cases.
+ * NEWS: Mention the change in behavior.
+ Reported at https://bugs.debian.org/1022857
+
+2022-10-26 Pádraig Brady <P@draigBrady.com>
+
+ doc: basenc: reference from base{32,64} docs
+ * doc/coreutils.texi (base32 invocation): Reference basenc
+ to improve discoverability.
+ (base64 invocation): Likewise.
+ * man/base32.x: Likewise.
+ * man/base64.x: Likewise.
+
+2022-09-30 Pádraig Brady <P@draigBrady.com>
+
+ doc: sort: mention --version useful for IPv4 addresses
+ * doc/coreutils.texi (sort invocation): Mention in the
+ multi invocation sort example that the -V GNU extension
+ could be used to sort IPv4 addresses, and thus simplify
+ to a single invocation.
+
+2022-09-28 Pádraig Brady <P@draigBrady.com>
+
+ maint: NEWS: use consistent quoting
+ * NEWS: Change unmatched curly quote to more consistent single quote.
+
+ doc: be more consistent when documenting exit status
+ * src/system.h (emit_exec_status): A new function to
+ output standard "Exit status:" info for commands that exec others.
+ * doc/coreutils.texi (Exit status): Add "ls" and "runcon"
+ to the list of commands with non standard exit status.
+ * src/numfmt.c (main): Call initialize_exit_failure() explicitly
+ to better indicate this utility may exit with something other than
+ EXIT_FAILURE.
+ * src/timeout.c (usage): Use more consistent capitalization.
+ * src/chroot.c: Call emit_exec_status().
+ * src/env.c: Likewise.
+ * src/nice.c: Likewise.
+ * src/nohup.c: Likewise.
+ * src/runcon.c: Likewise.
+ * src/stdbuf.c: Likewise.
+
+ runcon: fix inconsistent exit status upon write error
+ * src/runcon.c (main): Call initialize_exit_failure(),
+ so we use an appropriate exit status upon failure to close stdout.
+ This should have been part of recent commit ea3ee6df.
+ * tests/misc/help-version.sh: Adjust test case accordingly.
+
+ maint: getlimits: diagnose invalid options
+ * src/getlimits.c: Don't call initialize_exit_failure()
+ as it's not needed for standard EXIT_FAILURE returns.
+ Also use the function variant that diagnoses invalid options.
+
+ maint: rmdir: also use DS_... constants here
+ * src/rmdir.c: As with commit 627c9a97,
+ use DS_NONEMPTY constant to improve readability.
+
+2022-09-26 Pádraig Brady <P@draigBrady.com>
+
+ wc: add --total={auto,never,always,only} option
+ without this option, control of when the total is output
+ is quite awkward. Consider trying to suppress the total line,
+ which could be achieved with something like:
+
+ wc-no-total() { wc "$@" /dev/null | head -n-2; }
+
+ As well as being non obvious, it's also non general.
+ It would give a non failure, but zero count if passed a file on stdin.
+ Also it doesn't work in conjunction with the --files0-from option,
+ which would need to be handled differently with something like:
+
+ { find files -print0; printf '%s\0' /dev/null; } |
+ wc --files0-from=- |
+ head -n2
+
+ Also getting just the total can be awkward as file names
+ are only suppressed when processing stdin, and
+ also a total line is only printed if processing more than one file.
+ For completness this might be achieved currently with:
+
+ wc-only-total() {
+ wc "$@" |
+ tail -n1 |
+ sed 's/^ *//; s/ [^ 0-9]*$//'
+ }
+
+ * src/wc.c: Add new --total option.
+ * tests/misc/wc-total.sh: New test suite for the new option.
+ * tests/local.mk: Reference the new test.
+ * doc/coreutils.texi (wc invocation): Document the new option.
+ * THANKS.in: Add suggestor.
+ * NEWS: Mention the new feature.
+
+2022-09-25 Pádraig Brady <P@draigBrady.com>
+
+ maint: use enums to make dir_status code easier to read
+ * src/system.h: Add DS_EMPTY, and DS_NONEMPTY enums.
+ * src/remove.c: Use the new enums to make code easier to understand.
+
+ doc: mention the recent rm improvement
+ * NEWS: Mention the improvement re handling of directory errnos.
+
+ maint: fix recent syntax-check failures
+ * .gitignore: Add new headers from gnulib.
+ * src/basenc.c: Adjust line length due to replacement
+ of 'verify' with 'static_assert'.
+ * src/od.c: Likewise.
+
+2022-09-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ rm: fix diagnostics on I/O error
+ I ran into this problem when attempting to recursively
+ remove a directory in a filesystem on flaky hardware.
+ Although the underlying readdir syscall failed with errno == EIO,
+ rm issued no diagnostic about the I/O error.
+
+ Without this patch I see this behavior:
+
+ $ rm -fr baddir
+ rm: cannot remove 'baddir': Directory not empty
+ $ rm -ir baddir
+ rm: descend into directory 'baddir'? y
+ rm: remove directory 'baddir'? y
+ rm: cannot remove 'baddir': Directory not empty
+
+ With this patch I see the following behavior, which
+ lets the user know about the I/O error when rm tries
+ to read baddir's directory entries:
+
+ $ rm -fr baddir
+ rm: cannot remove 'baddir': Input/output error
+ $ rm -ir baddir
+ rm: cannot remove 'baddir': Input/output error
+
+ * src/remove.c (Ternary): Remove. All uses removed.
+ (get_dir_status): New static function.
+ (prompt): Last arg is now directory status, not ternary.
+ Return RM_USER_ACCEPTED if user explicitly accepted.
+ All uses changed.
+ Report any significant error in directory status right away.
+ (prompt, rm_fts): Use get_dir_status to get directory status lazily.
+ (excise): Treat any FTS_DNR errno as being more descriptive, not
+ just EPERM and EACCESS. For example, EIO is more descriptive.
+ (rm_fts): Distinguish more clearly between explicit and implied
+ user OK.
+ * src/remove.h (RM_USER_ACCEPTED): New constant.
+ (VALID_STATUS): Treat it as valid.
+ * src/system.h (is_empty_dir): Remove, replacing with ...
+ (directory_status): ... this more-general function.
+ All uses changed. Avoid undefined behavior of looking at
+ a non-null readdir pointer after corresponding closedir.
+ * tests/rm/rm-readdir-fail.sh: Adjust test of internals
+ to match current behavior.
+
+2022-09-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ rm: fix readdir test
+ * tests/rm/rm-readdir-fail.sh [_DIRENT_HAVE_D_NAMELEN]:
+ Fix off-by-1 bug in directory entry length.
+
+2022-09-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: fix typo in previous change
+
+ doc: warn about tabs command (bug#57946)
+
+2022-09-18 Stefan Kangas <stefankangas@gmail.com> (tiny change)
+
+ all: prefer HTTPS to HTTP
+ * README-hacking:
+ * README-prereq:
+ * THANKS.in:
+ * doc/sort-version.texi (Other version/natural sort implementations):
+ * gl/lib/rand-isaac.c:
+ * gl/tests/test-rand-isaac.c:
+ * src/operand2sig.c (operand2sig):
+ * src/remove.c (nonexistent_file_errno):
+ * tests/misc/env-signal-handler.sh:
+ * tests/misc/sort-debug-warn.sh (LC_ALL): Prefer HTTPS to HTTP.
+ Addresses https://bugs.gnu.org/56512
+
+2022-09-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ kill: port to picky-conversion hosts
+ * src/kill.c (send_signals): Don’t rely on conversion overflow
+ being silent.
+
+2022-09-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: fix bootstrap module lists for alignof
+ * bootstrap.conf (gnulib_modules): Remove alignof, which isn’t
+ needed since coreutils source modules don’t include alignof.h.
+ Add stdalign, since they depend on alignof working without
+ stdalign.h.
+
+ maint: prefer static_assert to verify
+ * bootstrap.conf: Add assert-h.
+ * gl/lib/randperm.c: Do not include verify.h.
+ * gl/lib/randperm.c, src/basenc.c, src/dd.c, src/digest.c:
+ * src/dircolors.c, src/expr.c, src/factor.c, src/ls.c, src/numfmt.c:
+ * src/od.c, src/seq.c, src/shred.c, src/sort.c, src/stat.c:
+ Prefer C23’s static_assert to nonstandard verify.
+ * gl/modules/randperm (Depends-on): Add assert-h.
+
+ maint: assume C23 alignof
+ * gl/lib/randread.c, src/stat.c (print_statfs):
+ No need to include stdalign.h, now that alignof is a keyword
+ in C23 and Gnulib arranges for this.
+
+ maint: don’t include config.h twice
+ * gl/lib/fadvise.h, gl/lib/smack.h, src/blake2/blake2-impl.h:
+ Do not include config.h from a .h file. config.h is supposed
+ to be included once, at the start of compilation and before
+ any other file.
+
+ build: update gnulib submodule to latest
+
+2022-09-13 Álvar Ibeas <a.ibeas@gmx.com> (tiny change)
+
+ doc: shred: minor fix
+ * doc/coreutils.texi: Fix wording.
+
+2022-09-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: adjust to Gnulib stdbool C23 change
+ * gl/lib/mbsalign.c, gl/lib/randread.c, gl/lib/targetdir.h:
+ * gl/lib/xdectoint.c, gl/lib/xfts.c, gl/lib/xfts.h:
+ * src/blake2/b2sum.c, src/copy.h, src/die.h, src/system.h:
+ Don’t include <stdbool.h>, since Gnulib now emulates C23.
+
+ build: update gnulib submodule to latest
+
+2022-09-11 Pádraig Brady <P@draigBrady.com>
+
+ stty: give explicit error for unsupported asymmetric speeds
+ * src/stty.c (check_speed): If difference input and output speeds
+ are specified, then validate the system supports that, before
+ interacting with the device.
+
+ stty: fix false warnings from [io]speed settings
+ * src/stty.c (eq_mode): A new function to compare
+ equivalence of two modes.
+ (main): Use eq_mode() rather than memcmp() to compare
+ two modes. Also use stack variables rather than implicitly
+ initialized static variables. Also remove all uses of
+ the SPEED_WAS_SET hack since we now more robustly compare modes.
+ * NEWS: Update the [io]speed fix entry.
+ Reported at https://bugs.debian.org/1019468
+
+2022-09-02 Pádraig Brady <P@draigBrady.com>
+
+ maint: add lib/gmp.h to .gitignore
+ * .gitignore: Add generated file. Tested with:
+ ./configure --without-libgmp && make && git status
+
+2022-08-31 Pádraig Brady <P@draigBrady.com>
+
+ stty: add an undocumented ---debug option for more info
+ * src/stty.c (main): Move internal TESTING code that showed
+ the new and old mode, upon failure to apply the new mode,
+ to being runtime controlled with the ---debug option.
+ Also augment the display to show which items were not
+ set as expected.
+
+ doc: stty: clarify that [-]drain is treated as an option
+ * doc/coreutils.texi (stty invocation): Say that "drain"
+ is treated as an option, rather than a line setting,
+ and so option processing rules apply to it.
+ Reported in https://bugs.debian.org/1018803
+
+ stty: validate ispeed and ospeed arguments
+ * src/stty.c (apply_settings): Validate [io]speed arguments
+ against the internal accepted set.
+ (set_speed): Check the cfset[io]speed() return value so
+ that we validate against the system supported set.
+ * tests/misc/stty-invalid.sh: Add a test case.
+ * NEWS: Mention the bug fix.
+ Reported in https://bugs.debian.org/1018790
+
+2022-08-29 Pádraig Brady <P@draigBrady.com>
+
+ maint: be defensive in avoiding gnulib's poll module
+ * src/tail.c (check_output_alive): Add a guard that would
+ trigger on most platforms, to detect if we're using the
+ gnulib poll module. That's currently problematic in the
+ way it emulates poll() using select() and would cause
+ issues on macOS and AIX at least as poll() is replaced there.
+
+ tail: use poll() on macOS
+ * src/tail.c (check_output_alive): poll() is the most commonly used
+ interface, so use this on macOS also to minimize divergence.
+
+2022-08-27 Pádraig Brady <P@draigBrady.com>
+
+ tests: runcon: fix new test to skip on non SELinux systems
+ * tests/misc/runcon-compute.sh: Use our new internal error
+ 125 status to detect SELinux errors, and skip in this case.
+
+ doc: NEWS: document recent comm fix, and runcon change
+ * NEWS: Mention comm bug fix, and runcon change in behavior.
+
+2022-08-27 Pádraig Brady <P@draigBrady.com>
+
+ tests: fix tests after recent runcon change
+ Following commit v9.1-49-gea3ee6df2
+
+ * tests/misc/invalid-opt.pl: Map runcon failure status to 125.
+ * tests/misc/usage_vs_getopt.sh: Likewise.
+
+2022-08-27 Pádraig Brady <P@draigBrady.com>
+
+ comm: fix NUL --output-delimiter with --total
+ * src/comm.c (compare_files): Handle the single character
+ --output-delimeter case separately so that NUL is appropriately
+ handled.
+ * doc/coreutils.texi (comm invocation): Fix the description
+ of --output-delimiter to say an empty delimeter is treated
+ as a NUL separator, rather than being disallowed.
+ * tests/misc/comm.pl: Add a test case.
+ Reported at https://bugs.debian.org/1014008
+
+ maint: remove FIXME comment from timeout.c
+ * src/timeout.c: We shouldn't hardcode `sh -c` as users
+ can specify that if needed, so remove the comment.
+
+ runcon: distinguish runcon specific errors in exit status
+ * src/runcon.c: Use EXIT_CANCELED (125) instead of EXIT_FAILURE (1),
+ so that errors specific to runcon can be distinguished,
+ from those of the invoked program.
+ * doc/coreutils.texi (runcon invocation): Fix the Exit status
+ description to say we return 125 (not 127) for internal errors.
+ * tests/misc/runcon-no-reorder.sh: Add a test case.
+
+2022-08-13 Pádraig Brady <P@draigBrady.com>
+
+ doc: README: split out ancillary information
+ The README was becoming too long and contained
+ quite a bit of info only pertaining to rarely used systems, so...
+
+ * README: Split out install specific info to README-install.
+ Also remove a few stale lines, and reorder a few items.
+ * README-install: A new file split from README.
+ * Makefile.am [EXTRA_DIST]: Explicitly reference new README-install
+ file for distribution, since automake only auto adds README.
+ * TODO: Reference the HPUX info now in README-install.
+
+2022-08-13 Pádraig Brady <P@draigBrady.com>
+
+ ls: support explicit --time=modification selection
+ * src/ls.c [time_args]: Add support for explicit
+ 'mtime' or 'modification' arguments to --time.
+ * tests/misc/ls-time.sh: Add explicit --time=mtime usage.
+ * doc/coreutils.texi (ls invocation): Describe --time=mtime.
+ * NEWS: Mention the new feature.
+
+2022-08-12 Pádraig Brady <P@draigBrady.com>
+
+ doc: ls: clarify description of timestamps
+ * src/ls.c (usage): Don't mention "modification" in the
+ description of ctime (-c), as it's confusing with mtime.
+ Mention "metadata" when discussing "change" time to
+ disambiguate from data change time.
+ * doc/coreutils.texi (ls invocation): State that --time=creation
+ falls back to using mtime where not available.
+
+2022-08-01 Pierre Marsais <pierre.marsais@lse.epita.fr>
+
+ doc: cp: fix --reflink=when typo in texinfo
+ This behaviour is correctly documented when doing `cp --help`.
+ There is no `--reflink=when` option.
+
+ * doc/coreutils.texi (cp invocation): Fix document stating
+ that `--reflink` is equivalent to `--reflink=always`.
+
+2022-08-01 Pádraig Brady <P@draigBrady.com>
+
+ doc: uniq: clarify -f operation
+ * doc/coreutils.texi (uniq invocation): State that leading blanks
+ are part of the field, and also that -f is one based.
+
+2022-07-30 Pádraig Brady <P@draigBrady.com>
+
+ doc: reference fmt(1) from fold(1)
+ * man/fold.x: fold and fmt have overlapping functionality,
+ so reference fmt(1) from the lower level fold(1) utility.
+
+2022-07-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ touch: fix aliasing bug
+ Problem reported by Tim Lange in:
+ https://lists.gnu.org/r/coreutils/2022-07/msg00008.html
+ * src/touch.c (date_relative): Rename from get_reldate,
+ and use a functional style to fix the aliasing bug.
+
+2022-07-26 Pádraig Brady <P@draigBrady.com>
+
+ doc: env: clarify that empty signal args are ignored
+ It's useful to treat empty and missing arguments differently.
+ Missing means all signals, while empty means no signals and
+ so is a no-op. It's useful to treat empty arguments like
+ this, so that dynamically specified arguments like the following
+ are supported
+
+ env --ignore-signals "$SIGS_TO_IGNORE"
+
+ Note `env --ignore-signals=` is treated as an empty argument.
+
+ * doc/coreutils.texi (env invocation): Empty args are treated
+ differently to missing arguments, so call that out explicitly.
+ * src/env.c (usage): Likewise.
+ Addresses https://bugs.debian.org/1016049
+
+2022-07-24 Pádraig Brady <P@draigBrady.com>
+
+ doc: date: clarify which options are mutually exclusive
+ * src/date.c (usage): Specify that --date, --file, --reference,
+ and --resolution are mutually exclusive. This is also useful
+ documentation to group similar options.
+ * doc/coreutils.texi (Options for date): Likewise.
+ Addresses https://bugs.gnu.org/55401
+
+ date: --debug: diagnose discarded -d or -s options
+ * src/date.c: (main): Track and diagnose whether any
+ -d or -s options are dropped, as users may think
+ multiple options are supported, given they can be relative.
+ * tests/misc/date-debug.sh: Add a test case.
+ * NEWS: Mention the improvement.
+
+ runcon: ensure --compute runs the file it inspects
+ * src/runcon.c (main): With -c avoid searching the path
+ to ensure the file specified to --compute is executed.
+ * tests/misc/runcon-compute.sh: Add a new test.
+ * tests/local.mk: Reference the new test.
+ * NEWS: Mention the bug fix.
+ Reported in https://bugs.debian.org/1013924
+
+ doc: tr: clarify that -t is ignored unless translating
+ * src/tr.c (usage): Don't say that -t is disallowed unless translating.
+ Reported in https://bugs.debian.org/1012447
+
+2022-07-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ rm: don’t assume st_size is nonnegative
+ * src/remove.c: Include stat-time.h.
+ (cache_fstatat, cache_stat_init): Use negative st->st_atim.tv_sec to
+ determine whether the stat is cached, not negative st->st_size.
+ On non-POSIX platforms that lack st_atim.tv_sec, don’t bother to cache.
+
+2022-07-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ stat: -c %s now prints unsigned
+ * src/stat.c (unsigned_file_size): New static function,
+ copied from src/ls.c.
+ (print_stat): %s prints an unsigned value now (Bug#56710).
+
+2022-07-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ dd: doc improvement (Bug#54586)
+ * doc/coreutils.texi (dd invocation): Explain
+ fdatasync and fsync better.
+
+2022-07-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ cp: don’t remove nonempty cloned dest
+ This follows up on comments by Pádraig Brady (bug#56391).
+ * src/copy.c (copy_reg): When --reflink=always removes a file
+ due to an FICLONE failure, do not remove a nonempty file.
+
+2022-07-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ cp: don’t create empty file if cannot clone
+ * src/copy.c (copy_reg): With --reflink=always, if FICLONE fails
+ on a file we just created, clean up by removing the file (Bug#56391).
+
+2022-07-04 Ivan Radić <ivan-radic@users.noreply.github.com>
+
+ maint: fix comment typo
+ * src/uniq.c: s/preceges/precedes/
+
+2022-06-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ shuf: better diagnostic for ‘shuf -i -10-10’
+ * src/shuf.c: Do not include xdectoint.h.
+ (main): Improve diagnostic for ‘shuf -i -10-10’. Without this
+ patch, the diagnostic was “shuf: invalid input range: ‘’” which is
+ not helpful. Now it is “shuf: invalid input range: ‘-10-10’”.
+
+2022-06-23 Jim Meyering <meyering@fb.com>
+
+ cp: avoid -Wmaybe-uninitialized warning from GCC13
+ * src/copy.c (infer_scantype): Always set scan_inference.ext_start,
+ to make the code match the comment.
+
+ maint: remove unnecessary inclusion of hash.h
+ * src/cut.c: Don't include hash.h. The implementation was
+ changed not to need that in v8.21-43-g3e466ad05.
+
+2022-06-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: prefer POSIX-compatible EREs
+ * cfg.mk (begword, endword): New macros.
+ (sc_prohibit_stat_macro_address, sc_prohibit_fail_0)
+ (sc_prohibit_short_facl_mode_spec, sc_require_stdio_safer)
+ (sc_prohibit_sleep, sc_prohibit_framework_failure)
+ (sc_marked_devdiagnostics):
+ * build-aux/gen-single-binary.sh:
+ Prefer POSIX-compatible EREs to GNU extensions like \w and \<.
+
+2022-06-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ cp: fix ‘cp -rx / /mnt’
+ Problem reported by pkoraou@gmail.com (Bug#55910).
+ * src/copy.c (copy_internal): Treat a relative destination name ""
+ as if it were "." for the purpose of directory-relative syscalls
+ like fstatat that might might refer to the destination directory.
+
+2022-06-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: avoid \] in REs
+ * cfg.mk (sc_dd_max_sym_length, sc_prohibit_man_see_also_period):
+ Do not rely on undefined interpretation of \] in regular expressions.
+
+ build: update gnulib submodule to latest
+ * bootstrap: Copy from latest Gnulib.
+ * tests/misc/ls-misc.pl (v_files): Adjust to new Gnulib behavior.
+
+2022-05-26 Bernhard Voelker <mail@bernhard-voelker.de>
+
+ maint: fix spelling in NEWS entry
+ * NEWS: s/x86-64/x86_64/
+
+2022-05-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ maint: spelling fix
+
+ sort: tune diff_reversed
+ * src/sort.c (diff_reversed): Tune. On x86-64 with GCC, this
+ saves a conditional branch and shortens the generated machine code.
+
+ sort: refactor tricky diff reversal
+ * src/sort.c (diff_reversed): New function, to make the intent clearer.
+ (keycompare, compare): Use it.
+
+2022-05-25 Pádraig Brady <P@draigBrady.com>
+
+ maint: sort.c: fix syntax-check issue in recent commit
+ * src/sort.c (keycompare): Avoid useless if before free()
+ as detected with sc_avoid_if_before_free.
+
+ sort: fix issue with -rk in previous commit
+ * src/sort.c (keycompare): Fix typo causing -r to be
+ effectively ignored with -k.
+ Fixes https://bugs.gnu.org/55622
+
+2022-05-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ sort: fix unlikely int overflow with -r
+ * src/sort.c (keycompare, compare): Don’t overflow if -r is
+ specified and a comparison function returns INT_MIN, as this
+ causes the comparison to have undefined behavior (typically the
+ reverse of correct). glibc memcmp on s390x reportedly returns
+ INT_MIN in some cases, so this is not a purely academic issue.
+
+ maint: simplify comparisons
+ * src/comm.c (compare_files):
+ * src/join.c (keycmp):
+ * src/ls.c (off_cmp):
+ * src/ptx.c (compare_words, compare_occurs):
+ * src/set-fields.c (compare_ranges):
+ Prefer ((a > b) - (a < b)) to variants like (a < b ? -1 : a > b)
+ as it’s typically faster these days.
+
+ sort: remove some gotos
+ * src/sort.c (keycompare): Rework to avoid gotos.
+ This also shrinks the machine code a bit (112 bytes)
+ with GCC 12 x86-64 -O2. Nowadays compilers are smart
+ enough to coalesce jumps so we need not do it by hand.
+
+ sort: pacify GCC 12 false positive
+ * src/sort.c (keycompare): Rework to pacify a GCC 12
+ -Wmaybe-uninitialized false positive, by coalescing some minor
+ duplicate code and eliminating a branch. This should execute an
+ insn or two less in the usual case.
+
+ build: update gnulib submodule to latest
+
+2022-05-09 Rasmus Villemoes <rasmus.villemoes@prevas.dk>
+
+ factor: --exponents: new option for printing in p^e format
+ When factoring numbers that have a large 2^n factor, it can be hard to
+ eyeball just how many 2's there are. Add an option to print each prime
+ power factor in the p^e format (omitting the exponent when it is 1).
+
+ * src/factor.c: Add -h, --exponents option for printing in p^e format.
+ * doc/coreutils.texi (factor invocation): Document the new option.
+ * tests/misc/factor.pl: Add test case.
+ * THANKS.in: Add previous suggester
+ (https://lists.gnu.org/r/coreutils/2017-11/msg00015.html).
+
+ Suggested-by: Emanuel Landeholm <emanuel.landeholm@gmail.com>
+
+2022-05-02 Pádraig Brady <P@draigBrady.com>
+
+ tests: sort-NaN-infloop: augment testing for recent fix
+ * tests/misc/sort-NaN-infloop.sh: Add test case from
+ https://unix.stackexchange.com/a/700967/37127
+ * src/sort.c: Avoid syntax-check failure.
+
+2022-05-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ build: update gnulib submodule to latest
+
+ sort: fix sort -g infloop again
+ Problem reported by Giulio Genovese (Bug#55212).
+ * src/sort.c (nan_compare): To compare NaNs, simply printf+strcmp.
+ This avoids the problem of padding bits and unspecified behavior.
+ Args are now long double instead of char *; caller changed.
+
+2022-04-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ mv: test Bug#55029
+ * tests/mv/backup-dir.sh: New test for Bug#55029,
+ reported by Steve Ward.
+
+ build: update gnulib submodule to latest
+
+2022-04-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ pr: don’t use uninitialized var
+ Found with -flto and --enable-gcc-warnings.
+ * src/pr.c (getoptarg): Fix misuse of xstrtol, which does not
+ necessarily set tmp_long on errror, and does not set errno in any
+ reliable way. The previous code might access uninitialized
+ storage; on typical platforms this merely causes it to possibly
+ print the wrong diagnostic.
+
+2022-04-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ doc: fix ' and ` in PDF output of code
+ * doc/coreutils.texi: Set txicodequoteundirected and
+ txicodequotebacktick so that ' and ` in code examples appear
+ as-is, rather than being transliterated to ’ and ‘. E.g., prefer
+ “... this is equivalent to ‘tr '\303\266' '\305\201'’ and ...” to
+ “... this is equivalent to ‘tr ’\303\266’ ’\305\201’’ and ...”
+ in PDF output.
+
+ doc: fix footnote formats
+ * doc/coreutils.texi: Reword footnote, or put it right next
+ to previous punctuation.
+
+ doc: prefer ö to $'\u7530'
+ * doc/coreutils.texi (Character arrays): Avoid using shell
+ notation like $'\u7530' since this isn’t in POSIX yet. Instead,
+ use ö and Ł which should work in all texinfo output formats.
+
+2022-04-17 Pádraig Brady <P@draigBrady.com>
+
+ doc: rmdir: clarify --ignore-fail-on-non-empty operation
+ This option has changed from ignoring only ENOTEMPTY|EEXIST
+ (i.e. ignore errors _solely_ due to dir not empty),
+ to ignoring some other errors from more protected dirs
+ that are not empty. That adjustment was made to better
+ support use with --parents, to essentially remove as much of
+ a hierarchy as possible, without erroring as we hit more
+ protected non empty parent dirs.
+ That functionality adjustment was originally discussed at:
+ https://lists.gnu.org/r/bug-coreutils/2008-01/msg00283.html
+
+ * src/rmdir.c (usage): Adjust to be more accurate to current behavior.
+ Also adjust --parents option to be easier to read.
+ * doc/coreutils.texi (rmdir invocation): Likewise.
+ Reported at https://github.com/coreutils/coreutils/issues/40
+
+2022-04-15 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 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.
+
+
+See the source repo for older entries