diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 16:58:41 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 16:58:41 +0000 |
commit | e1908ae95dd4c9d19ee4dfabfc8bf8a7f85943fe (patch) | |
tree | f5cc731bedcac0fb7fe14d952e4581e749f8bb87 /ChangeLog | |
parent | Initial commit. (diff) | |
download | coreutils-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-- | ChangeLog | 9173 |
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 |