From 758f820bcc0f68aeebac1717e537ca13a320b909 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 18:11:47 +0200 Subject: Adding upstream version 9.1. Signed-off-by: Daniel Baumann --- ChangeLog | 8058 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 8058 insertions(+) create mode 100644 ChangeLog (limited to 'ChangeLog') diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..20767ae --- /dev/null +++ b/ChangeLog @@ -0,0 +1,8058 @@ +2022-04-15 Pádraig Brady + + version 9.1 + * NEWS: Record release date. + +2022-04-15 Pádraig Brady + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + maint: remove obsolete statat gnulib module + * bootstrap.conf (gnulib_modules): Remove statat. + +2022-04-07 Pádraig Brady + + 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 + + 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 + + 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 + + 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ä + + 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 + + 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 + + maint: sync latest bootstrap from gnulib + * bootstrap: Should have updated this with the last gnulib update. + +2022-03-20 Pádraig Brady + + 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 + + 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 + + maint: move build-related NEWS item to its own section + * NEWS: Follow other Build-related patterns in NEWS. + +2022-03-12 Pádraig Brady + + 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 + + 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 + + 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 + + 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 + + build: ensure AT_NO_AUTOMOUNT is defined + update gnulib submodule to latest, + where this is the only change + +2022-03-05 Paul Eggert + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + build: update gnulib submodule to latest + +2022-02-15 Pádraig Brady + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + sort: fix several version-sort problems + This also affects ls -v in some corner cases. + Problems reported by Michael Debertol . + 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 + + 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 + + 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 + + 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 + + date: test against bug#50115 + * tests/misc/date.pl: Add test. + + build: update gnulib submodule to latest + +2022-02-05 Pádraig Brady + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + df: tiny simplification + * src/df.c (LOG_EQ): Remove. All callers replaced by ==. + +2022-01-02 Pádraig Brady + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + id: improve doc for when USER is omitted + * src/id.c (usage): “current user” → “current process” (Bug#52656). + +2021-12-18 Paul Eggert + + maint: use GNU style for spacing + +2021-12-16 Bruno Haible + + 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 + + build: update bootstrap to latest + + build: update gnulib submodule to latest + +2021-12-15 Jim Meyering + + 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 + + build: update gnulib submodule to latest + * NEWS: Mention the bugfix. + +2021-12-10 Paul Eggert + + 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 + + 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 + + cp: clone on macOS + * configure.ac: Check for fclonefileat. + * src/copy.c [HAVE_FCLONEFILEAT && !USE_XATTR]: + Include . + (copy_reg): If possible, use fclonefileat to clone. + +2021-11-21 Paul Eggert + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + build: update gnulib submodule to latest + +2021-11-13 Pádraig Brady + + 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 + + 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 + + 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 + + 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 + + maint: modernize README-{hacking,prereq} + +2021-10-30 Paul Eggert + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + maint: remove duplicate from THANKS.in + * THANKS.in: Now that Tianjia Zhang has a commit in the repo. + +2021-09-17 Tianjia Zhang + + tests: fix typo in cksum-a.sh + * tests/misc/cksum-a.sh: fix typo md5um to md5sum. + +2021-09-17 Pádraig Brady + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + doc: improve --help indenting in checksum utils + * src/digest.c (usage): Indent multi-line descriptions for clarity. + +2021-09-15 Pádraig Brady + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + +2021-09-15 Pádraig Brady + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + doc: can “can can” + Problem reported by Akbarkhon Variskhanov (Bug#50484). + +2021-09-08 Paul Eggert + + doc: add missing "as" (thanks to Nelson H.F. Beebe) + +2021-09-05 Justin Tracey + + 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 + + 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 + + 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 + + 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 + + basenc: fix bug49741: using wrong decoding buffer length + Emil Lundberg 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 + + 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 + + maint: avoid new syntax-check failure + find-mount-point.h rightly includes 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + df: fix duplicated remote entries due to bind mounts + As originally reported in , + 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 + + 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 . + [!_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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 , 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 + + 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 + + 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 + + stdbuf: port lib to macOS + * src/libstdbuf.c (fprintf, free, strtoumax): Undef these too, + since Gnulib might replace them. + +2021-03-24 Paul Eggert + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + doc: rmdir --recursive substitutes + * doc/coreutils.texi (rmdir invocation): Add note on how to remove + empty subdirectories recursively. + +2021-01-15 Paul Eggert + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + build: update gnulib submodule to latest + +2020-12-08 Arman Absalan + + 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 + + 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 + + maint: fix typo, characteres -> characters + * src/expr.c: Fix typo in comment. + +2020-11-26 Nishant Nayan + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 in + https://bugs.gnu.org/42633 + +2020-07-28 Bernhard Voelker + + 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 in + https://lists.gnu.org/r/bug-coreutils/2020-07/msg00021.html + +2020-07-28 Paul Eggert + + 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 + + doc: fix typo in env --split-string documentation + * doc/coreutils.texi: Fix grammar. + +2020-07-24 Paul Eggert + + 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 + + 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 . + +2020-07-19 Paul Eggert + + 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 + + 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 + + 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 + + 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 + + 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 + + doc: add timeout examples + * doc/coreutils.texi (timeout invocation): Add examples. + + Suggested by Jonny Grant in + https://lists.gnu.org/r/bug-coreutils/2020-06/msg00018.html + +2020-06-30 Andreas Schwab + + tests: avoid spurious testsuite failure + * tests/dd/stats.sh: Increase timeout. + Fixes https://bugs.gnu.org/42135 + +2020-06-26 Pádraig Brady + + 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 + + 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 + + chmod: man page fixes + * man/chmod.x: Mention -6000 too. Use .BR to fix trailing period. + +2020-06-21 Pádraig Brady + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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: + + +2020-04-02 Pádraig Brady + + 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 + + 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 + + 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 + + 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 + (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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + tests: fix test for symlink + * tests/cp/preserve-gid.sh: s/-l/-L/. + Reported by Kamil Dudka + +2020-02-09 Kamil Dudka + + 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 + + maint: avoid syntax-check failure in previous commit + * configure.ac: Restrict lines to 80 chars. + +2020-02-09 Jim Meyering + + 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 + + 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 + + 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 + + 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 + + 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 + + maint: add lib/iconv_open-zos.h to .gitignore + * .gitignore: Add file newly generated by gnulib commit 49e78fc + +2020-01-01 Pádraig Brady + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + build: update gnulib submodule to latest + +2019-08-15 Assaf Gordon + + 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 + + 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 + + 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 + + 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 + + gnulib: update to latest + +2019-08-08 Pádraig Brady + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + b2sum: port blake2b-ref.c to HP-UX aCC + Continue the fix for Bug#35650. + * src/blake2/blake2b-ref.c [HAVE_CONFIG_H]: Include . + +2019-05-15 Paul Eggert + + 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 . + * src/local.mk (src_b2sum_CPPFLAGS): Add -DHAVE_CONFIG_H. + Do not use -include or a substitute. + +2019-05-14 Paul Eggert + + 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 + + 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 + + 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 + + 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 + + maint: fix syntax check failure + * src/ln.c: Remove leading TAB. + +2019-03-30 Martin Castillo + + 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 + + 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 + + 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 + + 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 + + doc: add a NEWS entry for the ln O_DIRECTORY fix + * NEWS: Mention the bugfix. + +2019-03-16 Paul Eggert + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 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 + + gnulib: update to the latest + update to a version with parse_gnu_standard_options_only() + +2019-02-20 Martin Castillo + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + gnulib: update to the latest + * gnulib: Update to a version supporting GNULIB_NO_VLA + * bootstrap: Sync with latest + +2019-01-16 Bernhard Voelker + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 + + doc: add chmod examples + Discussed in https://bugs.gnu.org/11043 . + + * doc/coreutils.texi (chmod invocation): Add examples. + +2018-10-02 Bjarni Ingi Gislason + + 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 + + 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 + + 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 + + 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 + + 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 + + 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 (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 + + 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 + + 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 + + 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 + + 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 + + maint: post-release administrivia + * NEWS: Add header line for next release. + * .prev-version: Record previous version. + * cfg.mk (old_NEWS_hash): Auto-update. + + version 8.30 + * NEWS: Record release date. + +2018-07-01 Pádraig Brady + + tests: standardize perl usage in tests + * tests/cp/fiemap-FMR.sh: Ensure perl is parameterized to $PERL, + and ensure require_perl_ is used, so tests are skipped appropriately. + * tests/cp/preserve-gid.sh: Likewise. + * tests/du/long-from-unreadable.sh: Likewise. + * tests/misc/env-S-script.sh: Likewise. + * tests/misc/sort-benchmark-random.sh: Likewise. + * tests/rm/deep-2.sh: Likewise. + + maint: copy: avoid new static analyzer warnings + * src/copy.c (copy_internal): Use the lint protected src_mode, + rather than accessing the src_sb again. Also unconditionally + populate src_sb when !x->move_mode and in lint mode. + Reported by Kamil Dudka with coverity and clang analyzer. + + maint: fix recent stale comments and spelling mistakes + * doc/coreutils.texi: s/seperator/separator/. + * tests/misc/env-S.pl: Likewise. + * src/env.c: Fix stale comment. + +2018-06-27 Pádraig Brady + + maint: disable overly agressive sc_gitignore_redundant + * cfg.mk (sc_gitignore_redundant): Disabled for now as too + aggressive flagging entries like /lib/arg-nonnull.h in + a newly checked out repo. + + env: adjust diagnostics provided for shebang usage + * src/env.c (main): Don't process '-' specially since + that causes an issue on the openbsd getopt implementation + where a lone '-' is now processed as an option, and anyway + it doesn't particuarly help diagnosing common shebang + usage issues. Also don't restrict the extra diagnostics + for shebang usage to the case with 3 arguments, as + further arguments can be passed to a script. + * tests/misc/env-S.pl: Adjust accordingly. + +2018-06-27 Assaf Gordon + + tests: accept getopt errors without single-quotes + On OpenBSD 6.2, invalid single options produce error messages + without single quotes: + + $ ./src/chroot -/ + chroot: unknown option -- / + + As opposed to other systems: + + ./src/chroot: invalid option -- '/' + + Modify the grep search to accept this. + + * tests/misc/usage_vs_getopt.sh (checkprg): Change the grep pattern + to accomodate no-single-quotes cases. + +2018-06-27 Pádraig Brady + + tests: fix false failures when perl not available + * tests/local.mk: Reference the stub that skips perl tests, + with the correct path. + + tests: fix false failure with limited shebang lines + * tests/misc/env-S-script.sh: Provide a wrapper to + emulate shebang processing, but without length limits, + which are 127 on Linux for example. + + maint: update gnulib to latest + * gnulib: Update to latest, which incorporates + a thread linking fix from Bruno Haible, + which was seen on newer Ubuntu systems. + +2018-06-27 Assaf Gordon + + tests: remove unused Data::Dumper perl module + The module is not needed anymore (was used during development). + Despite being a Perl core module, platforms like CentOS don't install + it by default. Reported by Bruno Haible at + https://lists.gnu.org/r/coreutils/2018-06/msg00093.html. + + * tests/misc/csplit-suppress-matched.pl: Remove Data::Dumper. + +2018-06-25 Carlos Santos + + maint: fix -Werror=suggest-attribute=malloc in expr.c + Add attribute 'malloc' to mpz_get_str to prevent + the following on GCC 8.1.1 + + src/expr.c:117:1: error: function might be candidate for attribute + 'malloc' if it is known to return normally + [-Werror=suggest-attribute=malloc] + mpz_get_str (char const *str, int base, mpz_t z) + ^~~~~~~~~~~ + cc1: all warnings being treated as errors + + * src/expr.c (mpz_get_str): Add _GL_ATTRIBUTE_MALLOC. + +2018-06-25 Pádraig Brady + + maint: update gnulib to latest + * gnulib: Update to latest. + * .gitignore: Add new entries. + * bootstrap.conf: Enable wchar-single, which will enable more + efficient replacements of wcwidth and mbrtowc, as we indicate + that the charset will no change between invocations of these functions. + + maint: sync longlong.h from gmp repo + * src/longlong.h: Sync changes. No functional change. + + maint: avoid false positive in src/fs-magic-compare + * src/local.mk (fs_normalize_perl_subst): `make src/fs-magic-compare` + was reporting incorrectly that AFS was not being handled. + Add a mapping to our KAFS identifier. + * .gitignore: Add intermediate files from `make src/fs-magic-compare` + +2018-06-23 Bernhard Voelker + + tests: initialize fail=0 to avoid "unary operator expected" errors + With an uninitialized variable 'fail', the unquoted use like + test $fail = 1 + lead to the shell error + "unary operator expected". + + The uninitialized 'fail' variable was a side effect of + https://git.sv.gnu.org/cgit/gnulib.git/commit/?id=e91c0d4f9 + which was pulled into coreutils-v8.26 with + https://git.sv.gnu.org/cgit/coreutils.git/commit/?id=ef9650170 + Coreutils test code relied and relies on 'fail' to be initialized, + so initialize that variable here. + + * tests/local.mk (TESTS_ENVIRONMENT): Initialize fail=0. + +2018-06-21 Jim Meyering + + maint: do not depend directly on gnulib's now-unused ftello module + * bootstrap.conf (gnulib_modules): Remove ftello, since it is + no longer used directly, since v8.9-11-geab97b307. + +2018-06-21 Pádraig Brady + + tests: provide an option to relax the need for gdb + * tests/rm/r-root.sh: gdb provides extra protection, + but is not strictly necessary. So provide an option + for maintainers to relax the requirements. + + rm: add --preserve-root=all to protect mounts + * src/remove.c (rm_fts): With the --preserve-root=all extension, + reject command line arguments that are mount points. + * src/remove.h (rm_options): Add preserve_all_root to store config. + * src/mv.c (rm_option_init): Init preserve_all_root to false. + * src/rm.c (main): Init preserve_all_root as per option. + (usage): Describe the new option. + * src/remove.c (rm_fts): Lookup the parent device id, + and reject the cli argument if a separate file system. + * tests/rm/one-file-system.sh: Add a test case. + * NEWS: Mention the new feature. + +2018-06-21 Adam Borowski + + cp: add --reflink=never to force standard copy mode + This mode is currently the default, but most if not all users of + reflink-capable filesystems want --reflink=auto, which is often + encapsulated into an alias. Adding --reflink=never allows overriding + such an alias. + + * doc/coreutils.texi (cp invocation): Describe the new option. + * src/cp.c: Support --reflink=never. + * tests/cp/reflink-auto.sh: Add a test case. + * NEWS: Mention the new feature. + +2018-06-21 Assaf Gordon + + env: add -S/--split-string option + Adopted from FreeBSD's env(1), useful for specifing multiple + parameters on a shebang (#!) script line, e.g: + + #!/usr/bin/env -S perl -w -T + + Discussed in https://lists.gnu.org/r/coreutils/2018-04/msg00011.html + + * src/env.c (valid_escape_sequence,escape_char,scan_varname, + extract_varname,validate_split_str,build_argv, + parse_split_string): New functions. + (main): Process new option and call parse_split_string. + (usage): Mention new option. + * tests/misc/env-S.pl: Test new option from the command line. + * tests/misc/env-S-script.sh: Test new option from shebang scripts. + * tests/local.mk (all_tests): Add new tests. + * man/env.x (OPTIONS): Show a brief example of -S usage and point to + the full documentation for more information. + * doc/coreutils.texi (env invocation): Detail usage of -S/--split-string + option. + * NEWS: Mention new option. + +2018-06-21 Assaf Gordon + + env: add -v/--debug option + Prints verbose information about each step: + + $ env -v -uFOO -C /tmp BAR=BAZ date -u + env: unset: FOO + env: setenv: BAR=BAZ + env: chdir: '/tmp' + env: executing: date + env: arg[0]= ‘date’ + env: arg[1]= ‘-u’ + Sun Apr 22 08:52:30 UTC 2018 + + Inspired by FreeBSD's env(1). + + * src/env.c (usage): Mention new option. + (main): Print debug information if requested. + * NEWS: Mention new option. + * doc/coreutils.texi (env invocation): Mention -v/--debug. + +2018-06-21 Assaf Gordon + + maint: refactor unsetenv call in env + Keep unset envvars (-uFOO) in an array for later deletion, + instead of reiterating over argv. Done in preparation for + '-S string' feature. Related to '-u' discussion in + https://lists.gnu.org/r/coreutils/2018-04/msg00013.html + + * src/env.c (append_unset_var,unset_envvars): New functions. + (main): Use new functions. + +2018-06-21 Kaxandra Labat + + ls: ignore case when coloring file extensions + * src/ls.c (get_color_indicator): s/STREQ_LEN/c_strncasecmp/ + * src/dircolors.hin: Remove a now redundant entry. + * tests/ls/color-ext.sh: Add a new test. + * tests/local.mk: Reference the new test. + * NEWS: Mention the change in behavior. + +2018-06-21 Pádraig Brady + + md5sum,b2sum,sha*sum: support -z,--zero option + * doc/coreutils.texi (md5sum invocation): Describe the new option, + and how it's not supported by --check, and how it disables escaping. + * src/md5sum.c (delim): A new global to parmeterize the out delimiter. + (main): Don't enable file name escaping with -z, and output '\0'. + * tests/misc/md5sum-newline.pl: Add a test case. + * NEWS: Mention the new feature. + +2018-06-21 Pádraig Brady + + wc: optimize processing of ASCII in multi byte locales + ===== Benchmark setup (on GNU/Linux) ==== + $ yes áááááááááááááááááááá | head -n100000 > mbc.txt + $ yes 12345678901234567890 | head -n100000 > num.txt + + ===== Before ==== + $ time src/wc -Lm < mbc.txt + real 0m0.186s + $ time src/wc -m < mbc.txt + real 0m0.186s + $ time src/wc -Lm < num.txt + real 0m0.055s + $ time src/wc -m < num.txt + real 0m0.056s + + ==== After ==== + $ time src/wc -Lm < mbc.txt + real 0m0.196s + $ time src/wc -m < mbc.txt + real 0m0.173s + $ time src/wc -Lm < num.txt + real 0m0.031s + $ time src/wc -m < num.txt + real 0m0.028s + + * src/wc.c (wc): Only call wide variant functions like + iswprint() and wcwidth() for non is_basic() characters. + I.E. non ISO C "basic character set" characters. + This is especially significant on OSX where wcwidth() + is very expensive (about 10x in tests). + * NEWS: Mention the improvement. + Suggested by Eric Fischer. + +2018-06-14 Paul Eggert + + doc: port test.1 to doclifter + * man/test.x: Use \& instead of quoting (Bug#31803). + + doc: port man pages to doclifter + Problem reported by Eric S. Raymond (Bug#31803). + * man/test.x: Add SYNOPSIS section, since help2man + understandably gets confused by the square brackets. + * src/ln.c (usage): Omit parenthetical "(Nth form)" in usage, + as it confuses doclifter. + +2018-06-04 Pádraig Brady + + cp: preserve existing permissions with --no-preserve=mode + This issue was introduced in commit v8.19-145-g24ebca6 + + * src/copy.c (copy_internal): With --no-preserve=mode, + only reset permissions for newly created files. + (copy_reg): Likewise. + * NEWS: Mention the fix. + * tests/cp/preserve-mode.sh: Add a test case. + Fixes https://bugs.gnu.org/31675 + +2018-05-29 Pádraig Brady + + tests: fix periodic false failure in month alignment + * tests/ls/abmon-align.sh: Base relative month adjustment + from the middle of the month, to avoid failures due + to months being repeated. + Fixes https://bugs.gnu.org/31644 + +2018-05-26 Bjarni Ingi Gislason + + doc: formatting fixes in "du.x" and "rm.x" + Avoid warnings from: groff -b -e -mandoc -T utf8 -rF0 -t -w w -z + + * man/du.x: Change ".BR" to ".B" if there is only one argument. + Protect an end-of-sentence indicator (.?!) with '\&' + if it does not mean an end of a sentence. + Change '--' to '\-\-' if it indicates an option. + * man/rm.x: Change '\=' to '='. + +2018-05-18 Pádraig Brady + + cp: with --force; replace self referential symlinks + * src/copy.c (copy_internal): Don't fail immediately upon + getting ELOOP when running stat() on the destination, + rather proceeding if -f specified, allowing the link + to be removed. If the loop is not in the final component + of the destination path, we still fail but at the + subsequent unlink() stage. + * doc/coreutils.texi (cp invocation): Adjust wording to say + that --force doesn't work with dangling links, rather than + all links that can't be traversed. + * tests/cp/thru-dangling.sh: Add a test case. + * NEWS: Mention the change in behavior. + Discussed in https://bugs.gnu.org/31335 + +2018-05-15 Pádraig Brady + + cp: fix symlink checks when overwriting files + Ensure this _does_ recreate the symlink + Given "path1" and "path2" are on different devices. + $ touch "path1/file" + $ cd path2/; ln -s path1/file + $ cp -dsf path1/file . + + Ensure this does _not_ overwrite file + $ touch file + $ ln -s file l1 + $ cp -sf l1 file + + * src/copy.c (same_file_ok): Remove device ids from consideration, + instead deferring to future EXDEV with --link or allowing + the first case above to work. + Also ensure that we do not exist this function too early, + when the destination file is not a symlink, which protects + against the second case. + * tests/cp/cross-dev-symlink.sh: Add a test for the first case. + * tests/cp/same-file.sh: Add a test for the second case above. + * NEWS: Mention the bug fixes. + * THANKS.in: Mention the reporters who also analyzed the code. + Fixes https://bugs.gnu.org/31364 + +2018-05-15 Pádraig Brady + + cp: ensure --remove-destination doesn't traverse symlinks + * src/cp.c (target_directory_operand): Allow through inaccessible + arguments with -f or --remove. + * doc/coreutils.texi (cp invocation): Clarify that -f doesn't directly + impact the removal of non-traversable symlinks. + * tests/cp/dir-rm-dest.sh: Test the new behavior. + * tests/cp/thru-dangling.sh: Enforce -f behavior wrt symlinks. + * NEWS: Mention the bug fix. + Fixes https://bugs.gnu.org/31335 + + maint: make chmod/chgrp/chown leak free under valgrind + * src/chmod.c: Deallocate the mode change array in dev mode. + * src/chown.c: Make chopt_free() actually deallocate, but + only call in dev mode. + * src/chgrp.c: Likewise. + + doc: improve formatting of nl --help + * src/nl.c (usage): Better delineate the information. + +2018-05-14 Paul Eggert + + who: simplify port to GCC 8 + * src/who.c (make_id_equals_comment): Use simpler workaround + for GCC bug 85602. Suggested by Martin Sebor in: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85602#c3 + +2018-05-04 Pádraig Brady + + build: make GCC 8 adjustments more portable + * src/chown-core.h (chopt_free): Just define away this noop. + * src/chown-core.c (chopt_free): Remove the empty implementation. + +2018-05-04 Paul Eggert + + build: update gnulib submodule to latest + +2018-05-03 Paul Eggert + + maint: port to GCC 8 + * src/chown-core.h (chopt_free, gid_to_name, uid_to_name): + No longer const. + * src/make-prime-list.c (xalloc): Add malloc attribute. + * src/who.c (make_id_equals_comment): Work around GCC bug 85602 + by using mempcpy rather than strncat. Although the old code + was correct, strncat raises so many hackles that it’s not + worth maintaining its use here. + + maint: remove strpbrk module + * bootstrap.conf (gnulib_modules): Remove obsolete module strpbrk. + + build: update gnulib submodule to latest + +2018-04-21 Pádraig Brady + + doc: retroactively adjust info about tail and closed output + * NEWS: Expand on the 8.28 description of how tail more + responsively reacts to closed output, and move from "Improvements" + to "Changed behavior". + * cfg.mk (old_NEWS_hash): Regenerate. + Fixes https://bugs.gnu.org/31225 + +2018-04-19 Pádraig Brady + + doc: timeout --help: mention 0 DURATION disables timeout + * src/timeout.c (usage): Mention that a duration of 0 disables + the associated timeout, which is both concise info and useful + functionality as timeouts are frequently configured. + +2018-04-06 Eric Blake + + doc: retroactively document -e/-u addition in NEWS + Prompted by https://bugs.gnu.org/31045 + + * NEWS: Update 8.8 blurb to mention other split additions. + * cfg.mk (old_NEWS_hash): Regenerate. + +2018-04-03 Paul Eggert + + doc: Clarify octal bits in permissions + * doc/perm.texi (Numeric Modes): Briefly explain octal. + Reorder description to make it more intuitive (Bug#29069). + +2018-03-28 Tobias Stoeckmann + + cut: improve large file support on 32 bit + Increase max range from SIZE_MAX to UINTMAX_MAX, which will + allow cut to support line lengths up to the max file size + on all systems. The inherent SIZE_MAX limitation in cut was + removed with the enhancements in https://bugs.gnu.org/13127. + Also numfmt gets similarly increased --field ranges due to + shared code. + + * src/cut.c: s/size_t/uintmax_t/. + * src/numfmt.c: Likewise. + * src/set-fields.c: Likewise. + * src/set-fields.h: Likewise. + * tests/misc/cut-huge-range.sh: Adjust accordingly. + * tests/misc/numfmt.pl: Likewise. + * NEWS: Mention the improvement. + +2018-03-28 Pádraig Brady + + tests: avoid a recent syntax-check failure + * tests/ls/a-option.sh: s/framework_failure/&_/. + +2018-03-27 Paul Eggert + + ls: -A now overrides -a + Problem reported by Karl Berry (Bug#30963). + * NEWS: Mention this. + * src/ls.c (decode_switches): Implement this. + * tests/ls/a-option.sh: New file. + * tests/local.mk (all_tests): Add it. + +2018-03-24 Roland Hieber + + doc: fix two typos in github templates + * .github/ISSUE_TEMPLATE.txt: Fix typo "coreitils" in the URL to the bug + tracker. + * .github/PULL_REQUEST_TEMPLATE.txt: Likewise. + +2018-03-16 Pádraig Brady + + ls: increase the allowed abmon width from 5 to 12 + This will impact relatively few languages, + and will make Arabic or Catalan etc. + output unambiguous abbreviated month names. + + * src/ls.c (MAX_MON_WIDTH): Increase from 5 to 12. + * NEWS: Mention the bug fix. + * tests/ls/abmon-align.sh: Augment to check for ambiguous output. + Fixes https://bugs.gnu.org/30814 + +2018-03-14 Brent Petit + + stat,tail: add support for the EXFS file system + Enhanced XFS (EXFS) is a version of XFS maintained by HPE. + EXFS uses a unique magic number to allow the use of community + XFS, and EXFS filesystems at the same time. + + * src/stat.c (human_fstype): Add file system ID definition, + and use "exfs" as the name. + * NEWS: Mention the Improvement. + +2018-03-06 Paul Eggert + + build: update gnulib submodule to latest + +2018-03-05 Paul Eggert + + stat: work around IBM xlC bug + Problem reported by John Wiersba (Bug#30718) + * src/stat.c (human_time): Avoid giving an integer constant + expression a name, as it runs afoul of a bug in IBM XL C/C++ for + AIX 12.01.0000.0002. + +2018-03-04 Bernhard Voelker + + maint: adjust email address of Keith Thompson in THANKS.in + * THANKS.in (Keith Thompson): Update email address as requested by + himself at https://lists.gnu.org/r/coreutils/2018-03/msg00004.html + +2018-02-25 Pádraig Brady + + cp: set appropriate default permissions for special files + This issue was introduced in commit v8.19-145-g24ebca6 + + * src/copy.c (copy_internal): When setting default permissions + to use with --no-preserve=mode, only set executable bits for + directories or sockets. + * NEWS: Mention the fix. + * tests/cp/preserve-mode.sh: Add a test case. + Fixes https://bugs.gnu.org/30534 + +2018-01-21 Pádraig Brady + + doc: use consistent example format in manual + * doc/coreutils.texi: Use @example consistently + as we don't need the smaller or fixed width representation. + This is especially true for the synopsis of commands. + @smallexample is rendered left aligned for HTML + which is awkward to read with the center aligned main content. + +2018-01-10 Paul Eggert + + mv: clarify ‘mv -n A A’ change + + mv: fewer syscalls for ‘mv a b’ + This builds on a previous patch for mv atomicity (Bug#29961). + It merely improves performance; it does not fix bugs. + * src/copy.h (struct cp_options): New members last_file, rename_errno. + * src/copy.c (copy_internal): Support new rename_errno member + for the copy options. Avoid calling stat when new members + suggest it’s not needed. + (cp_options_default): Initialize new members. + * src/mv.c: Include renameat2.h. + (main): With two arguments, first call ‘renamat2 (AT_FDCWD, "a", + AT_FDCWD, "b", RENAME_NOREPLACE)’. Use its results to skip + remaining processing if possible; for example, if it succeeds + there is no need to stat either "a" or "b". Also, set + x.last_file when it is the last file to rename. + + mv: improve -n atomicity + Problem reported by Kamil Dudka (Bug#29961). + * NEWS: Mention this. + * src/copy.c: Include renameat2.h. + (copy_internal): If mv, try renameat2 first thing, with + RENAME_NOREPLACE. If this works, skip most of the remaining code. + Also, fail quickly if it fails with EEXIST, and we are using -n. + +2018-01-10 Michael Orlitzky + + doc: warn about following symlinks recursively in chown/chgrp + In both chown and chgrp (which shares its code with chown), operating + on symlinks recursively has a window of vulnerability where the + destination user or group can change the target of the operation. + Warn about combining the --dereference, --recursive, and -L flags. + + * doc/coreutils.texi (warnOptDerefWithRec): Add macro. + (node chown invocation): Add it to --dereference and -L. + (node chgrp invocation): Likewise. + + See also: CVE-2017-18018 + +2018-01-06 Paul Eggert + + cp: remove ASSIGN_BASENAME_STRDUPA + * src/cp.c (do_copy): Just use ASSIGN_STRDUPA, as this simplifies + the code and uses less memory. + +2018-01-04 Paul Eggert + + mv: -n overrides -u + * NEWS: Mention these fixes. + * doc/coreutils.texi (cp invocation, mv invocation): + Mention that -n is silent, and that it overrides -u. + * src/cp.c, src/mv.c (main): -n overrides -u. + +2018-01-03 Paul Eggert + + tr: add -A, for compatibility with AIX tr + Problem reported by Michael (Bug#29946). + * src/tr.c (main): Add undocumented -A option. + +2018-01-03 Michael Orlitzky + + doc: clarify chown/chgrp --dereference defaults + * doc/coreutils.texi: the documentation for the --dereference + flag of chown/chgrp states that it is the default mode of + operation. Document that this is only the case when operating + non-recursively. + +2018-01-02 Pádraig Brady + + tests: avoid false failure with xargs on AIX + * tests/misc/shred-remove.sh: AIX xargs defaults to using + '_' to indicate end of input, thus ignoring it. + Rather than specifying -E to avoid this behavior, simplify + by removing sed and xargs usage. + +2018-01-01 Pádraig Brady + + maint: update all copyright year number ranges + Run "make update-copyright" and then... + + * gnulib: Update to latest with copyright year adjusted. + * tests/init.sh: Sync with gnulib to pick up copyright year. + * bootstrap: Likewise. + * tests/sample-test: Adjust to use the single most recent year. + +2017-12-27 Pádraig Brady + + maint: post-release administrivia + * NEWS: Add header line for next release. + * .prev-version: Record previous version. + * cfg.mk (old_NEWS_hash): Auto-update. + + version 8.29 + * NEWS: Record release date. + +2017-12-23 Pádraig Brady + + tests: avoid false failure on AIX 7.2 + * tests/tail-2/pipe-f.sh: Close stdout in a subshell + to ensure the current shell isn't impacted. Subsequent + piped commands like `echo foo | blah` were seen to fail + due to the previous closing of stdout. + Reported by Assaf Gordon. + + doc: describe recent build checks for 32 bit time_t + * README: Document the new handling of 32 bit time_t, + with examples of how to build in 64 bit mode on AIX. + Also mention that GNU make is desired on AIX + due to its mishandling of the "[" target. + Suggested by Assaf Gordon. + +2017-12-21 Pádraig Brady + + tests: fix recent portability issues on solaris 10 + * tests/misc/ptx.pl: Escape the '^' character which is + otherwise considered as a line continuation character. + * tests/misc/shred-remove.sh: sed doesn't support \n. + + maint: remove reference to excluded changelog item + * build-aux/git-log-fix: Remove old entry. + +2017-12-20 Pádraig Brady + + maint: add doc/coverage to .gitignore + * .gitignore: Ignore the generated coverage report. + + doc: remove older ChangeLog items + * Makefile.am: Update the oldest documented version + to 8.20 which is now about 5 years old. + +2017-12-18 Bernhard Voelker + + doc: mention which privileges are needed to chmod + POSIX specification for chmod(1): + https://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html + + * doc/coreutils.texi (chmod invocation): Add a sentence about who can + change the file mode bits of a file - (almost) a copy from what POSIX + requires. + + Fixes https://bugs.gnu.org/29207. + +2017-12-16 Pádraig Brady + + tests: fix recent regressions with dash + * tests/misc/timeout.sh: dash outputs the "Killed" + message to stderr rather than the terminal. + * tests/misc/usage_vs_getopt.sh: dash doesn't yet + support the POSIX proposed $'...' shell quoting syntax. + + build: avoid a signed overflow warning in ptx + * src/ptx.c (fix_output_parameters): GCC 6.3.1 with + ./configure --enable-single-binary would give: + error: assuming signed overflow does not occur + when simplifying conditional to constant [-Werror=strict-overflow] + if (file_index > 0) + So change the type of file_index to signed (size_t). + +2017-12-11 Bernhard Voelker + + maint: adjust for the renamed nstrfime gnulib module + * bootstrap.conf: s/strftime/nstrfrime/. + +2017-12-11 Pádraig Brady + + build: update gnulib submodule to latest + * gnulib: Update with various build/test fixes. + + tests: fix false failure in new dd/nocache_eof test + * test/dd/nocache_eof.sh: Also handle fadvise64_64 which is + used on 32 bit x86. Note strace internally maps fadvise64_64 + to {arm,xtensa}_fadvise64_64. + + tail: fix tailing non seekable files on certain systems + * src/tail.c (tail_bytes): On systems were blksize_t is unsigned + and the same size or wider than off_t (android for example), + our initialized (off_t) -1 would be promoted to unsigned before + comparison, and thus fail to follow the appropriate path. + * tests/tail-2/tail-c.sh: Add a test case. + * NEWS: Mention the fix. + This issue was introduced in commit v8.23-47-g2662702 + Reported at https://github.com/termux/termux-app/issues/233 + + build: avoid build failure without sys/mtio.h + * m4/jm-macros.m4: Check for the header. + * src/dd.c: Avoid the workaround where the header + is not available (on non glibc systems). + * src/shred.c: Likewise. + + doc: reorganize ls -k and --time-style help + * src/ls.c (usage): Clarify -k only applies to -s usage + and directory 'total' lines. Move the description + of TIME_STYLE out of the option section as it was awkward + to read and write there within 80 columns. + +2017-12-10 Pádraig Brady + + doc: clarify numeric setuid handling in chmod man page + * man/chmod.x: Update the information to state one can + clear the setuid and setgid bits for directories numerically + using an additional leading '0' or a leading '='. + That has been supported since v8.15-64-g8931cdb. + Fixes https://bugs.gnu.org/29390 + + doc: shred: change 'truncate' to the more descriptive 'deallocate' + * doc/coreutils.texi (shred invocation): s/truncate/deallocate/. + * src/shred.c (usage): Likewise. + Fixes https://bugs.gnu.org/29317 + + doc: clarify that cp --force may recreate files + * doc/coreutils.texi (cp invocation): The language used + to describe recreating the file was a little confusing + as it mentioned opening a removed file. + Fixes https://bugs.gnu.org/29315 + +2017-12-04 Kamil Dudka + + doc: fix default QUOTING_STYLE for %N format of stat(1) + * doc/coreutils.texi (stat invocation): The default value + of QUOTING_STYLE for the %N format of 'stat --printf' is + 'shell-escape-always'. + Fixes https://bugs.gnu.org/29563 + Reported by Christian Groessler at + https://bugzilla.redhat.com/1520399#c3 + +2017-12-02 Jean Delvare + + tests: make ls/block-size more readable + * tests/ls/block-size.sh: The output of the test was hard to read. Add + comments saying what we are testing to make it easier to understand. + +2017-11-29 Bernhard Voelker + Pádraig Brady + + tests: verify usage vs. getopt + Verify that all options mentioned in usage are actually recognized + by the program. + + * tests/misc/usage_vs_getopt.sh: Add test. + * tests/local.mk (all_tests): Reference it. + +2017-11-29 Pádraig Brady + + readlink: remove superfluous comma from usage output + * src/readlink.c (usage): Remove ',' after --quiet option. + +2017-11-29 Bernhard Voelker + + all: use consistent diagnostics for unknown long options + Previously, e.g. cksum failed to output the offending unknown long + option: + $ cksum --unknown-opt + cksum: invalid option -- '-' + Try 'cksum --help' for more information. + i.e., it tried to diagnose '-' as short option. + Instead, it should diagnose the unknown long option: + $ cksum --unknown-opt + cksum: unrecognized option '--unknown-opt' + Try 'cksum --help' for more information. + + * src/cksum.c (long_options): Add struct with null entry only. + (main): Use it in the getopt_long call. + * src/dd.c: Likewise. + * src/hostid.c: Likewise. + * src/hostname.c: Likewise. + * src/link.c: Likewise. + * src/logname.c: Likewise. + * src/nohup.c: Likewise. + * src/sleep.c: Likewise. + * src/tsort.c: Likewise. + * src/unlink.c: Likewise. + * src/uptime.c: Likewise. + * src/users.c: Likewise. + * src/whoami.c: Likewise. + * src/yes.c: Likewise. + * NEWS (Improvements): Mention the fix. + +2017-11-29 Pádraig Brady + + test: fix issues with tests/cp/preserve-mode.sh + * tests/cp/preserve-mode.sh: This was the only use of awk, + which may not be available on the system resulting + in an ineffective test. Also the permissions bits for + directories were not being checked at all. + + build: update gnulib submodule to latest + * gnulib: Update with various build/test fixes. + +2017-11-28 Pádraig Brady + + build: update gnulib submodule to latest + * gnulib: Update including various build fixes. + +2017-11-27 Bernhard Voelker + + timeout: also support short -v option + * src/timeout.c (main): Add short option character 'v' to getopt_long + call. + * tests/misc/timeout.sh: Run the test both for the long and the short + option. + +2017-11-25 Pádraig Brady + + dd: support iflag=direct with arbitrary sized files + * src/dd.c (iread): Handle read error with a non-aligned + file offset in the O_DIRECT case. This is not an issue + on XFS at least, but on EXT4 the final read will return + EINVAL rather than the expected 0 to indicate EOF. + * tests/dd/direct.sh: Test the iflag=direct case also. + * NEWS: Mention the improvement. + +2017-11-24 Pádraig Brady + + timeout: add --verbose to diagnose timeouts + This is useful as handling in shell is complicated + with the varying exit status in the --kill-after case. + + * src/timeout.c (main): Handle '-v' and store + COMMAND for the diagnostic. + (cleanup): Diagnose the signal name before sending. + (usage): Document -v, --verbose. + * doc/coreutils.texi (timeout invocation): Likewise. + * tests/misc/timeout.sh: Add a test case. + * NEWS: Mention the new feature + Fixes https://bugs.gnu.org/21760 + +2017-11-19 Pádraig Brady + + tail: seek to the end of block devices + * src/tail.c (tail_bytes): Try lseek(..., SEEK_END) when + we can't determine the file size. + * tests/tail-2/end-of-device.sh: Add a new root only test. + * tests/local.mk: Reference the new test. + * NEWS: Mention the improvement. + Paul Eggert suggested using lseek() (rather than ioctl(BLKGETSIZE64)). + Fixes https://bugs.gnu.org/29259 + +2017-11-14 Bernhard Voelker + + maint: include the module year2038 from gnulib + * bootstrap.conf (gnulib_modules): Add 'year2038' to ensure that time_t + is 64-bit (and thus works after 2038). + + Suggested by Bruno Haible in + https://lists.gnu.org/r/bug-gnulib/2017-11/msg00022.html + +2017-11-14 Bernhard Voelker + + maint: update gnulib to latest + * gnulib: Update - mainly for the recent year2038 changes. + * tests/init.sh: Update from gnulib/tests/init.sh. + +2017-11-09 Assaf Gordon + + doc: add github issue/pull-request templates + These templates instruct contributors not to use github, and instead + use the upstream GNU development resources. Discussed in + http://lists.gnu.org/archive/html/coreutils/2017-11/msg00007.html . + + * .github/ISSUE_TEMPLATE.txt, + .github/PULL_REQUEST_TEMPLATE.txt: New files. + +2017-11-08 Jim Meyering + + maint: make hook script reject "/archive/html" in lists.gnu.org URLS + * scripts/git-hooks/commit-msg: Require the abbreviated "/r/" + form in any log message URL. + + maint: shorten https://lists.gnu.org/archive/html/... links + Each /archive/html/ part can be replace with /r/. + Run this to induce the change: + git grep -l archive/html|xargs perl -pi -e 's,/archive/html/,/r/,g' + * TODO: Perform that substitution. + * bootstrap: Likewise. + * src/sort.c (sequential_sort): Likewise. + * src/tail.c (tail_file): Likewise. + * tests/misc/sort-merge-fdlimit.sh: Likewise. + * tests/misc/stty-row-col.sh: Likewise. + * tests/misc/unexpand.pl: Likewise. + * tests/rm/readdir-bug.sh: Likewise. + * tests/tail-2/inotify-rotate.sh: Likewise. + +2017-11-07 Thomas Deutschmann + + tests: avoid false failure with inaccessible mount points + * tests/ls/readdir-mountpoint-inode.sh: Skip the test + if any mount points are inaccessible by the current user. + Fixes https://bugs.gnu.org/29167 + Reported at: https://bugs.gentoo.org/353164 + +2017-11-06 Bernhard Voelker + + doc: fix "Up" field of realpath usage examples + Older versions of 'makeinfo' choke on a missing reference: + + ./doc/coreutils.texi:14177: `Realpath usage examples' has no Up field\ + (perhaps incorrect sectioning?). + makeinfo: Removing output file `doc/coreutils.info' due to errors; \ + use --force to preserve. + + * doc/coreutils.texi (realpath invocation): Add a menu referencing + the usage examples - introduced in v8.27-91-g7449f0d. + +2017-11-06 Pádraig Brady + + maint: ensure https:// URLs are used in --help and man pages + * configure.ac(AC_INIT): Specify the URL explicitly, so we're + not dependent on unreleased autoconf. + +2017-10-31 Assaf Gordon + + stat: output default formats for --terse in usage + Suggested by L A Walsh in https://bugs.gnu.org/28763 . + + * src/stat.c (fmt_terse_fs): Define format for --terse -f here. + (fmt_terse_regular): Define format for --terse here. + (fmt_terse_selinux): Likewise for when SELinux is enabled. + (default_format): Use the above constants. + (usage): Output the formats for the terse modes. + +2017-10-30 Pádraig Brady + + df: fix hang with fifo argument + * src/df.c (main): stat() before open(), and avoid + the optional open when given a fifo argument. + * tests/df/unreadable.sh: Add a test case. + * NEWS: Mention the fix. + Fixes https://bugs.gnu.org/29038 + +2017-10-28 Jim Meyering + + build: ls.c: apply _GL_ATTRIBUTE_PURE to more functions + * src/ls.c (DEFINE_SORT_FUNCTIONS): Apply _GL_ATTRIBUTE_PURE + to each strcmp-derived function definition, since GCC8 with + -Wsuggest-attribute=pure now warns it is needed. + +2017-10-26 Vincent Lefevre + + doc: reference statfs(2) in the stat(1) man page + * man/stat.x (SEE ALSO): Mention statfs(2) in addition to stat(2). + Note statfs() is generally used rather than statvfs(), + so we'll defer that reference to the SEE ALSO section of statfs(2). + Fixes https://bugs.gnu.org/28989 + +2017-10-25 Pádraig Brady + + tests: avoid false failure when O_DIRECT isn't supported + * tests/dd/nocache_eof.sh: Only run the O_DIRECT tests + when 512 byte alignment is supported. Otherwise with older + XFS on systems with > 1MiB pages, or on file systems not + supporting O_DIRECT, there would have been false failures. + * tests/dd/direct.sh: Clarify the skip message. + +2017-10-25 Pádraig Brady + + dd: fix nocache regions passed to posix_fadvise() + Previously with oflag=direct the call to invalidate_cache() + was not passed to the kernel, as it was less than a page size, + and a subsequent call was not made to invalidate the pending space. + Similarly with oflag=nocache the pending space at EOF was + not invalidated. Even though these amount to only a single page + in the page cache it can be significant. For example on + XFS before kernel patch v4.9-rc1-4-g0ee7a3f, O_DIRECT files + would have been read inefficiently if any pages were cached, + even if they were already synced to storage. + + * src/dd.c (i_nocache_eof, o_nocache_eof): New bools used + to control when we want invalidate_cache(,0) to clear to EOF. + (cache_round): Use IO_BUFSIZE (currently 132KiB) to minimize + calls to the relatively expensive advise function, rather + than page_size. This also makes it clear that while the + kernel function operates on pages, this size is chosen for + performance reasons. + (invalidate_cache): Refactor to share more code between + input and output paths. Use i_nocache_eof and o_nocache_eof + rather than proxying off max_records. Ensure we + invalidate full pages when clearing to EOF as the kernel + will ignore any non complete pages. Fix the offset used + for the output path. + (dd_copy): Invalidate the cache of the input after the + offset is updated, for consistency and so we don't try to + invalidate before the start of the file. When we read + EOF on input, set flags so that we invalidate to EOF. + (main): Invalidate to EOF in more cases, by depending + on the i_nocache_eof and o_nocache_eof flags. + * doc/coreutils.texi (dd invocation): Clarify the alignment + and persisted caveats on the example applying "nocache" + to part of a file. + * tests/dd/nocache_eof.sh: A new test. + * tests/local.mk: Reference the new test. + * NEWS: Mention the bug fix. + Issue reported by Eric Bergen. + +2017-10-24 Michael Stone + + doc: mention QUOTING_STYLE env var in ls man page + * src/ls.c (usage): Mention QUOTING_STYLE with the --quoting-style + option, and indicate it has lower precedence than that option. + +2017-10-24 Pádraig Brady + + maint: apply suggested cleanup to recent stty.c change + This should have been part of commit v8.28-17-gf926f7c + * src/stty.c (check_argument): Align line continuation chars, + and ensure the function macro is immune to usage with if/else. + Suggested by Jim Meyering and Paul Eggert. + + b2sum: fix crash with --check and truncated input + * src/md5sum.c (split_3): Ensure we don't walk off + the end of the string. + * tests/misc/b2sum.sh: Add test cases. + Fixes https://bugs.gnu.org/28860 + +2017-10-24 Pádraig Brady + + stty: fix processing of options when -F is specified + This was a latent issue that became significant with + the addition of the -F option in FILEUTILS-3_16n-56-ge46a424 + + * src/stty.c (apply_settings): Refactor argument checking + to a function macro. Augment the argument check to ignore + NULLed out arguments (already processed -F). + * NEWS: Mention the fix. + * tests/misc/stty-invalid.sh: Add a test case. + Fixes https://bugs.gnu.org/28859 + +2017-10-24 Pádraig Brady + + timeout: fix a small race that would ignore command exit + This fixes a regression from commit v8.26-39-g2f69dba + + * src/timeout.c (block_cleanup_and_chld): Rename from block_cleanup + to indicate we also block SIGCHLD to avoid the race where SIGCHLD + fires between waitpid() polling and sigsuspend() waiting for a signal. + * NEWS: Mention the fix. + +2017-10-24 Thomas Jarosch + + timeout: fix regression when invoked with blocked SIGCHLD + We inherit the signal mask from our parent process, + therefore ensure SIGCHLD is not blocked. + + If SIGCHLD is blocked, sigsuspend() won't be interrupted + when the child process exits and we hang until the timeout (SIGALRM). + + This fixes a regression from commit v8.26-39-g2f69dba + + * src/timeout.c (install_sigchld): Ensure SIGCHLD is unblocked. + * NEWS: Mention the issue. + +2017-10-02 Pádraig Brady + + build: reinstate distribution of man pages + man pages change little between systems, + so falling back to distributed pages make sense + when cross compiling or lacking perl. + + * man/local.mk: Add all man pages to EXTRA_DIST + so that they're distributed in the generated tarball. + Use the dummy-man page generator if cross compiling. + Set TZ to avoid a distcheck failure where man pages + used a diffent month than those rebuilt (with a .timestamp). + * man/dummy-man: Only fall back to generating a stub + if copying an existing man page fails. + * man/help2man: Sync portable TZ=UTC0 specification + from upstream help2man. + * NEWS: Mention the build-related change. + Fixes https://bugs.gnu.org/28574 + +2017-10-02 Pádraig Brady + + maint: remove a duplicate entry from THANKS + * .mailmap: Prefer Colin Watson's last used email address. + +2017-09-25 Paul Eggert + + copy: revert recent patch for vulnerable dirs + I plan to propose a better patch to catch vulnerable parent + directories. + * NEWS, doc/coreutils.texi (Target directory): Document this. + * src/cp.c, src/install.c, src/ln.c, src/mv.c: + Do not include targetdir.h. + (target_directory_operand): Remove test for vulnerable parents. + * src/cp.c (stat_target_operand): Remove. All uses removed. + * src/local.mk (noinst_HEADERS): Remove src/targetdir.h. + (src_ginstall_SOURCES, src_cp_SOURCES, src_ln_SOURCES) + (src_mv_SOURCES): Remove src/targetdir.c. + * src/targetdir.c, src/targetdir.h: Remove. + * tests/mv/vulnerable-target.sh: Remove. + * tests/local.mk (all_root_tests): Remove it. + +2017-09-24 Pádraig Brady + + tests: fix test hang on case insenitive file systems + * tests/split/filter.sh: Due to an invalid 'FILE = zero.in' + construct trying to initialize a FILE variable, it would + instead try to run the FILE command which is present on + macOS 10.13 with APFS. + We also remove a redundant duplicate test clause introduced + during a rebase, and simplify the piped timeout command, + to avoid requiring a subshell and associated quoting. + * THANKS.in: Add the reporter Jack Howarth. + Fixes https://bugs.gnu.org/28506 + +2017-09-21 Pádraig Brady + + tests: avoid a false failure in expr test with UTF8 + * tests/misc/expr.pl: Skip the quote varying tests in + the multi-byte locales as these tests aren't that interesting + in those locales. Also ERR_SUBST is already defined for + some tests so awkward to redefine to munge UTF8 quotes to ASCII. + +2017-09-20 Assaf Gordon + + expr: add detailed syntax error messages + Show offending argument instead of a generic 'syntax error' message. + Suggested by Bernhard Voelker in https://bugs.gnu.org/28461#13 . + + * src/expr.c (syntax_error): Remove. + (required_more_args): New function. + (eval7, main): Replace syntax_error call with detailed die message. + * tests/misc/expr.pl: Add tests for new messages. + +2017-09-20 Pádraig Brady + + maint: fix new syntax-check failures from HTTPS adjustments + * cfg.mk [old_NEWS_hash]: update with `make update-NEWS-hash`. + [sc_long_lines]: Avoid flagging (long) URLs in NEWS. + * src/sort.c: Tweak to a shorter line. + * src/tail.c: Likewise. + Introduced in v8.28-4-gbe87d61 + + maint: fix new syntax check failures from copy restrictions + * doc/coreutils.texi: Remove doubled word. + * src/targetdir.c: Explicitly mark exported function. + * tests/local.mk: This is not a root only test. + * tests/mv/vulnerable-target.sh: Use returns_. + Introduced in v8.28-3-g44ccd1c + + shred: reinstate --remove file name length obfuscation + This was unintentionally removed in v8.27-60-g2ae1460 + * src/shred.c (wipename): Interate through all name lengths. + * tests/misc/shred-remove.sh: Add test cases. + * NEWS: Mention the bug fix. + Fixes https://bugs.gnu.org/28507 + +2017-09-19 Paul Eggert + + maint: copy bootstrap from Gnulib + + all: prefer HTTPS in URLs + + copy: check for vulnerable target dirs + * NEWS, doc/coreutils.texi (Target directory): Document this. + * src/cp.c, src/install.c, src/ln.c, src/mv.c: Include targetdir.h. + (target_directory_operand): Use the new targetdir_operand_type + function to check for vulnerable target directories. + * src/cp.c (stat_target_operand): New function. + (target_directory_operand, do_copy): Use it. + * src/local.mk (noinst_HEADERS): Add src/targetdir.h. + (src_ginstall_SOURCES, src_cp_SOURCES, src_ln_SOURCES) + (src_mv_SOURCES): Add src/targetdir.c. + * src/targetdir.c, src/targetdir.h: New files. + * tests/mv/vulnerable-target.sh: New test. + * tests/local.mk (all_root_tests): Add it. + +2017-09-14 Bernhard Voelker + + ptx: avoid infloop due to zero-length matches with -S regex + * src/ptx.c (find_occurs_in_text): Die with an appropriate error + diagnostic when the given regular expression returns a match of + length 0. + * tests/misc/ptx.pl (S-infloop): Add a test. + * NEWS (Bug fixes): Mention the fix. + + Fixes https://bugs.gnu.org/28417 which was detected using + Symbolic Execution techniques developed in the course of the + SYMBIOSYS research project at COMSYS, RWTH Aachen University. + +2017-09-02 Pádraig Brady + + maint: post-release administrivia + * NEWS: Add header line for next release. + * .prev-version: Record previous version. + * cfg.mk (old_NEWS_hash): Auto-update. + + version 8.28 + * NEWS: Record release date. + +2017-09-01 Pádraig Brady + + tests: fix false failure in recent ls --hyperlink test + * tests/ls/hyperlink.sh: If the hostname or any part of + the absolute path would be changed due to URL encoding, + the test would fail. Therefore simplify to remove + these components of the URL from consideration. + + maint: avoid a syntax-check failure + * .gitignore: Remove lines indicated by sc_gitignore_redundant + in a freshly checked out repo. + +2017-08-31 Pádraig Brady + + tests: exclude the expensive gnulib fts-tests + * gnulib: The only change in this gnulib update + is the tagging of the fts-tests module as longrunning, + which gnulib-tool currently implicitly excludes. + This test was seen to take about 20s and 285MB. + Reported by Assaf Gordon on space restricted VMs. + + tty: don't distinguish input errors + * src/tty.c (main): Don't distinguish ENOTTY from other errors, + because isatty() doesn't portably distinguish errors. + Solaris returns ENOENT for all input errors for example. + Musl also returns ENOENT, and ENODEV may be returned as disscussed at: + http://openwall.com/lists/musl/2017/04/06/6 + * tests/misc/tty.sh: Adjust accordingly. + + tests: avoid printf '0*d' construct unsupported by ash + * tests/ln/sf-1.sh: Generate specific length with space padding + which is supported. + Reported by Assaf Gordon on Alpine Linux. + +2017-08-31 Pádraig Brady + + tests: skip tests upon failure to set SELinux context + On some setups the root:object_r:tmp_t context is invalid. + This does indicate a limitation in the test framework, + but for now we'll relax this to skipping the tests. + The tests still run on a Fedora 25 system for example. + + * tests/cp/cp-a-selinux.sh: Upon chcon error, skip rather than ERROR. + * tests/install/install-Z-selinux.sh: Likewise. + * tests/misc/chcon.sh: Likewise. + * tests/misc/runcon-no-reorder.sh: Likewise. + * tests/misc/selinux.sh: Likewise. + * tests/mkdir/restorecon.sh: Likewise. + +2017-08-30 Kamil Dudka + + expr: fix a recently introduced memory leak + * src/expr.c (eval6): Free memory allocated by mbs_logical_substr(). + + Introduced in v8.27-47-ga9f2be5. Detected by Coverity Analysis: + + Error: RESOURCE_LEAK: + src/expr.c:851: leaked_storage: Variable "s" going out of scope + leaks the storage it points to. + 849| char *s = mbs_logical_substr (l->u.s, pos, len); + 850| v = str_value (s); + 851|-> } + 852| freev (l); + 853| freev (i1); + +2017-08-30 Pádraig Brady + + build: fix build of renameat2 on Alpine Linux + * gnulib: The only change included in this update + it the added check for the presence of + which is not present on Alpine Linux by default. + + tty: fix exit code with EINVAL + * src/tty.c (main): All systems mention that isatty() + man return EINVAL as well as (the POSIX compliant) ENOTTY. + Also Centos 6 was seen to return EINVAL from ttyname(). + * tests/misc/tty.sh: Fix a test issue where we assume + standard input is always a valid tty. + Reported by Assaf Gordon on OpenSolaris 5.10 and 5.11, + and Centos 6.5 + +2017-08-30 Pádraig Brady + + runcon: revert "disable use of the TIOCSTI ioctl" + This reverts commit v8.27-97-g8cb06d4 because + the setsid() fallback was not implemented correctly + and disabling the ioctl was not a complete solution + to the security issue of the child being passed + the tty of the parent. + + Given runcon is not really a sandbox command, + the advice is to use `runcon ... setsid ...` + to avoid this particular issue. + +2017-08-30 Pádraig Brady + + stat: fix determination of max name length on BSD systems + We only use one of statfs or statvfs for `stat -f` + and on the BSDs we use statfs which doesn't have the + f_namelen member. However on OpenBSD and later FreeBSD + systems statfs does provide f_namemax, so use that. + + * NEWS: Mention the improvement for OpenBSD and FreeBSD. + * m4/stat-prog.m4: Check for f_namemax in the statfs struct. + * src/stat.c: Return '?' rather than '*' when we can't + determine the max length of the file system. + * tests/ln/sf-1.sh: This test was failing on all BSDs + due to '*' being returned for the max length which + caused the test to attempt to create 1Mi+1 names. + The test now uses a short name when we can't determine + the max name length to use. + + Reported by Assaf Gordon on various BSD based systems. + +2017-08-29 Pádraig Brady + + stat,tail: support "AAFS" AppArmor file system + * src/stat.c (human_fstype): This file system is used + to manage AppArmor policy in the Linux kernel. + + all: update gnulib submodule to latest + * bootstrap: Sync timestamp update. + +2017-08-29 Pádraig Brady + + runcon: disable use of the TIOCSTI ioctl + Similar to the issue with SELinux sandbox (CVE-2016-7545), + children of runcon can inject arbitrary input to the terminal + that would be run at the originating terminal privileges. + + The new libseccomp dependency is widely available and used + on modern SELinux systems, but is not available by default + on older systems like RHEL6 etc. + + * m4/jm-macros.m4: Check for libseccomp and + warn if unavailable on selinux supporting systems. + * src/local.mk: Link runcon with -lseccomp. + * src/runcon.c (disable_tty_inject): A new function to + disable use of the TIOCSTI using libseccomp, or with setsid() + where libseccomp is unavailable. + * tests/misc/runcon-no-inject.sh: A new test that uses + python to make the TIOCSTI call, and ensure that doesn't succeed. + * tests/local.mk: Reference the new test + * NEWS: Mention the fix. + Addresses http://bugs.gnu.org/24541 + +2017-08-29 Pádraig Brady + + ls: support --hyperlink to output file:// URIs + Terminals such as iTerm2 and VTE based terminals + (as of version 0.49.1), support hyperlinks when + passed terminals codes as described at: + https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda + + * src/ls.c (gobble_file): Allocate an absolute file name to output. + (quote_name): Output the absolute name with the appropriate codes. + (file_escape): A new function to encode file names as per rfc8089. + (main): Handle the new option and call the file_escape_init() helper. + Disable --dired when --hyperlink is specified. + (print_dir): Get the absolute file name here too, so that the + directory name can be linkified. + * NEWS: Mention the new feature. + * tests/ls/hyperlink.sh: Add a new test. + * tests/local.mk: Reference the new test. + * doc/coreutils.texi (ls invocation): Describe --hyperlink. + +2017-08-29 Pádraig Brady + + doc: remove older ChangeLog items + This saves about 0.5MB uncompressed from the tarball. + + * Makefile.am: Following on from v8.26-34-g2c64bc8 + update the oldest documented version to 8.18 which + is now about 5 years old. Also remove older ChangeLogs + that were previously thought to be for changes not + in the git history, but are adequately recorded upon review. + * build-aux/ChangeLog-2007: Remove file. + * lib/ChangeLog-2007: Likewise. + * m4/ChangeLog-2007: Likewise. + +2017-08-29 Colin Watson + + env: add --chdir option + This is useful when chaining with other commands that run commands in a + different context, while avoiding using the shell to cd, and thus + having to consider shell quoting the chained command. + + * NEWS (New features): Document the new option. + * doc/coreutils.texi (env invocation): Likewise. + * src/env.c (usage): Likewise. + (main): Implement the new option. + * tests/misc/env.sh: Test the new option. + +2017-08-29 Pádraig Brady + + tests: don't fail tests when failing to write files + * tests/sample-test: Use framework_error_ rather than fail=1 + * tests/chown/deref.sh: Likewise. + * tests/chown/preserve-root.sh: Likewise. + * tests/cp/src-base-dot.sh: Likewise. + * tests/dd/unblock-sync.sh: Likewise. + * tests/du/2g.sh: Likewise. + * tests/du/inacc-dest.sh: Likewise. + * tests/du/one-file-system.sh: Likewise. + * tests/fmt/goal-option.sh: Likewise. + * tests/ln/hard-backup.sh: Likewise. + * tests/ls/color-dtype-dir.sh: Likewise. + * tests/ls/m-option.sh: Likewise. + * tests/ls/stat-dtype.sh: Likewise. + * tests/ls/time-style-diag.sh: Likewise. + * tests/ls/x-option.sh: Likewise. + * tests/misc/chcon.sh: Likewise. + * tests/misc/nohup.sh: Likewise. + * tests/misc/od-N.sh: Likewise. + * tests/misc/sort-compress.sh: Likewise. + * tests/misc/tac-continue.sh: Likewise. + * tests/misc/time-style.sh: Likewise. + * tests/mv/backup-dir.sh: Likewise. + * tests/mv/dir2dir.sh: Likewise. + * tests/rm/dir-no-w.sh: Likewise. + * tests/rm/dir-nonrecur.sh: Likewise. + * tests/rm/inaccessible.sh: Likewise. + * tests/rm/interactive-always.sh: Likewise. + * tests/rm/interactive-once.sh: Likewise. + * tests/rm/rm3.sh: Likewise. + * tests/rm/v-slash.sh: Likewise. + * tests/touch/relative.sh: Likewise. + +2017-08-29 Josef Cejka + Bernhard Voelker + + df: avoid stat() for dummy file systems with -l + When systemd is configured to automount a remote file system - see + 'man systemd.automount(5)', then the mount point is initially + mounted by systemd with the file system type "autofs". + When the resource is used later on, then the wanted file system is + mounted over that mount point on demand. + 'df -l' triggered systemd to mount the file system because it called + stat() on the mount point. + Instead of single-casing "autofs" targets, we can avoid stat()ing + all dummy file systems (which includes "autofs"), because those are + skipped later on in get_dev() anyway. + + *src/df.c (filter_mount_list): Also skip dummy file systems unless + the -a option or a specific target are given. + * NEWS: Mention the fix. + + + Fixes http://bugzilla.suse.com/show_bug.cgi?id=1043059 + +2017-08-29 Assaf Gordon + + doc: add 'realpath usage examples' section + * doc/coreutils.texi (Realpath usage examples): New section. + +2017-08-29 Assaf Gordon + + doc: fix realpath index entry + The 'readlink' node has '@findex realpath' in it. This results in + info doc/coreutils.info realpath + incorrectly jumping to the 'readlink' node (instead of the 'realpath' + node). Change it to @cindex instead. + + * doc/coreutils.texi (readlink): Change '@findex realpath' to @cindex. + +2017-08-29 Assaf Gordon + + realpath: improve usage description for --relative-{to,base} + * src/realpath.c (usage): Explicitly say 'DIR' instead of 'FILE' for + --relative-{to,base} parameters, to avoid giving the impression + that regular files can be used as relative base. + * doc/coreutils.texi (realpath): Same. + +2017-08-25 Pádraig Brady + + ls: consistently quote symlink targets + * src/ls.c (gobble_file): Disable the optimization to avoid quoting + if the symlink target itself needs quoting. This was introduced + with the quoting alignment adjustments in v8.25-106-g01971c0 + * tests/ls/symlink-quote.sh: Add a test. + * tests/local.mk: Reference the test. + * NEWS: Mention the fix. + +2017-08-25 Pádraig Brady + + tail: reinstate inotify use with FIFOs + commit v8.27-44-g18f6b22 was too aggressive in + only allowing inotify use with regular files. This will + support responsive processing of `tail -f fifo | ...` + + * src/tail.c (any_non_regular): Adjust to allow FIFOs + since inotify supports these well. + * tests/tail-2/inotify-only-regular.sh: Adjust comment. + +2017-08-19 Pádraig Brady + + maint: avoid a syntax check failure + * src/sort.c: Don't include stdio--.h as fopen() is no longer used. + + tests: fix issues on alpine linux + * tests/misc/seq-epipe.sh: Remove stale comment. + * tests/misc/sort-debug-warn.sh: musl doesn't indicate a set_locale() + failure with missing locales, so avoid a test portion in that case. + * tests/misc/wc-files0.sh: Avoid a bug on older ash implementations. + Addresses http://bugs.gnu.org/28054 + +2017-08-17 Paul Eggert + + ptx: fix some integer overflow bugs + Problem reported by Lukas Zachar at: + http://bugzilla.redhat.com/1482445 + * src/ptx.c (line_width, gap_size, maximum_word_length) + (reference_max_width, half_line_width, before_max_width) + (keyafter_max_width, truncation_string_length, compare_words) + (compare_occurs, search_table, find_occurs_in_text, print_spaces) + (fix_output_parameters, define_all_fields): + Use ptrdiff_t, not int, for object offsets and sizes. + (WORD, OCCURS): Use ptrdiff_t, not short int. + (WORD_TABLE, number_of_occurs, generate_all_output): + Prefer ptrdiff_t to size_t where either will do. + (total_line_count, file_line_count, OCCURS, fix_output_parameters) + (define_all_fields): + Use intmax_t, not int, for line counts. + (DELTA): Remove. All uses changed. + (OCCURS, find_occurs_in_text, fix_output_parameters): + Use int, not size_t, for file indexes. + (tail_truncation, before_truncation, keyafter_truncation) + (head_truncation, search_table, define_all_fields) + (generate_all_output): + Use bool for booleans. + (digest_word_file, find_occurs_in_text): + Use x2nrealloc instead of checking for overflow by hand. + (find_occurs_in_text, fix_output_parameters, define_all_fields): + Omit unnecessary cast. + (fix_output_parameters): Don’t assume integers fit in 11 digits. + (fix_output_parameters, define_all_fields): + Use sprintf return value rather than calling strlen. + (define_all_fields): Do not rely on sprintf to generate a string + that may contain more than INT_MAX bytes. + (main): Use xstrtoimax, not xstrtoul. + Use xnmalloc to catch integer overflow. + + nohup: simplify by using fcntl + * src/nohup.c: Do not include cloexec.h. + (main): Use fcntl rather than dup + set_cloexec_flag. + + sort: use pthread_sigmask, not sigprocmask + POSIX says sigprocmask has unspecified behavior in a multithreaded + program like ‘sort’. + * src/sort.c (pthread_sigmask) [GNULIB_defined_pthread_functions]: + New macro, for use when ‘sort’ is not multithreaded. + (cs_enter, cs_leave): Use it. Pass address, not value, as + this is typically a tad faster. All callers changed. + + sort: minor cleanups + * src/sort.c (move_fd): Rename from move_fd_or_die, + since it no longer can die. + + sort: file descriptor discipline + Use O_CLOEXEC when creating file descriptors, so that subsidiary + processes do not inherit file descriptors that they do not need. + This is helpful for ‘sort’, as it is a multithreaded program that + forks and execs. + * bootstrap.conf (gnulib_modules): Add mkostemp, open, pipe2. + * src/sort.c (create_temp_file): Open temporary file with O_CLOEXEC. + (stream_open): Open the stream with O_CLOEXEC. + (pipe_fork): Create the pipe with O_CLOEXEC. + (check_output): Open the output file with O_CLOEXEC. + (main): Use xfopen/xfclose to handle --files0-from, so that + O_CLOEXEC is used properly. This is simpler anyway. + * tests/misc/sort-files0-from.pl: Adjust to change in diagnostic + wording. + + build: update gnulib submodule to latest + +2017-08-14 Pádraig Brady + + kill: fix signal number to name lookup on AIX + * src/operand2sig.c (operand2sig): AIX uses a different bit pattern + in the returned status from the wait() functions and from shells. + Therefore hardcode the selection of the lower bits of the number. + * NEWS: Mention the fix. + + build: use the appropriate single file include option with xlc + * configure.ac: Set USE_XLC_INCLUDE when __xlc__ is defined. + * src/local.mk: Use it to select the appropriate include option. + Reported by Michael Felt. + + tests: avoid false failures on AIX + * tests/ln/sf-1.sh: Limit the symlink size to 1MiB + to avoid memory exhaustion seen on NFS on AIX, giving: + + printf '%0*d' 4294967296 0 + + ./tests/ln/sf-1.sh: line 38: printf: warning: 0: Result too large + * tests/id/setgid.sh: Skip the test when the adjusted gid + would equal 4294967295, as that's reserved on AIX. + Reported by Michael Felt. + + sort: handle musl locale differences in --debug reporting + * src/sort.c (main): Don't assume hard_LC_COLLATE implies + a successful setting of the locale as musl defaults to + UTF8 when failing to set the specified locale. + * tests/misc/sort-debug-warn.sh: Adjust for the now + separated locale debug info and map the musl specific + message back to the common case. + Addresses https://bugs.gnu.org/28054 + + seq: produce consistent error messages upon write error + * src/seq.c (io_error): Use the same error message as would + be generated at exit time when closing the stdout stream. + The inconsistency was added with commit v8.25-26-gc92585b. + This was noticed due to an inconsistency in the expected + error message generated by seq on musl libc. + Addresses https://bugs.gnu.org/28054 + + tests: fix false failure with large printf formats + * tests/misc/printf-surprise.sh: With musl libc the + large printf format does succeed, outputting data. + To avoid SIGPIPE being generated we ignore that signal + and then handle the subsequent EPIPE error. + Addresses https://bugs.gnu.org/28054 + +2017-08-12 Jim Meyering + + build: adjust warning options to work with latest GCC + * configure.ac: Disable some new warnings to avoid false positives. + Building with warnings enabled and latest gcc would evoke build + failure without these changes. Disable the following in coreutils + proper: -Wformat-overflow=2 -Wformat-truncation=2, and + disable these for gnulib: -Wformat-truncation=2 -Wduplicated-branches + + gnulib: update to latest and adjust gl/modules/tempname.diff + * gnulib: Update to latest. + * gl/modules/tempname.diff: This patch failed to apply. + Adjust it to reflect removal of the secure_getenv dependency. + + chroot: fix typo in preceding change: didn't compile + * src/chroot.c (usage): Add backslashes. + +2017-08-10 Jim Meyering + + doc: correct technicality in chroot's --help output + * src/chroot.c (usage): Use correct quoting in descriptive diagnostic. + We would run `"$SHELL" -i`, not `${SHELL} -i`. + +2017-08-09 Assaf Gordon + + doc: fix join example + * doc/coreutils.texi (join invocation): Fix incorrect output in example. + Reported by Phlosioneer in https://bugs.gnu.org/28014 . + +2017-08-04 Paul Eggert + + build: update gnulib submodule to latest + +2017-08-03 Paul Eggert + + copy: more-accurate warning about destruction + * src/copy.c (copy_internal): + * tests/cp/backup-is-src.sh, tests/mv/backup-is-src.sh: + Say "might destroy", not "would destroy". + +2017-08-03 Pádraig Brady + + maint: avoid a syntax-check failure + * src/shred.c (wipename): As per the comment, the arguments + to error() are sufficiently quoted, so split the call over + multiple lines to avoid the syntax-check. + +2017-08-02 Paul Eggert + + build: update gnulib submodule to latest + +2017-08-01 Paul Eggert + + copy: go back to failing 'cp --backup a~ a' + Suggested by Kamil Dudka in: + http://lists.gnu.org/archive/html/coreutils/2017-07/msg00072.html + * NEWS: Document the changed nature of the fix. + * doc/coreutils.texi, tests/cp/backup-is-src.sh: + * tests/mv/backup-is-src.sh: Revert previous change. + * src/copy.c (source_is_dst_backup): New function. + (copy_internal): Use it. Fail instead of falling back on numbered + backups when it looks like the backup will overwrite the source. + Although this reintroduces a race, it's more compatible with + previous behavior. + +2017-07-31 Paul Eggert + + copy: sanity-check --suffix + * src/cp.c, src/install.c, src/ln.c, src/mv.c (main): + Use set_simple_backup_suffix, to sanity-check the user-supplied + backup suffix. + + copy: make backup files more reliably + * NEWS, doc/coreutils.texi (Backup options): Document the change. + * bootstrap.conf (gnulib_modules): Add backup-rename. + * src/copy.c (copy_internal): Silently switch to numbered backups + if a simple backup might lose data. Use backup_file_rename + to avoid races with numbered backups. + * tests/cp/backup-is-src.sh, tests/mv/backup-is-src.sh: + Adjust to match new behavior. + + shred: avoid rename race + Use renameat2 to avoid a rename race condition, on recent-enough + GNU/Linux. + * bootstrap.conf (gnulib_modules): Add renameat2. + * src/shred.c: Include renameat2.h. + (wipename): Use renameat2 instead of rename. + + build: update gnulib submodule to latest + +2017-07-25 Jim Meyering + + maint: fix grammar in a shred.c comment + * src/shred.c: Remove spurious "to" in an old comment. + +2017-07-23 Pádraig Brady + + maint: fix recent syntax-check failures + * .gitignore: Add /lib/utime.h from the recent gnulib update. + * src/nproc.c (usage): Adjust spacing to placate help2man. + + shred: remove redundant zeroing of freed memory + * src/shred.c (dopass): shred used to read the input file, + and so needed to ensure internal memory was cleared. + This is no longer the case since SH-UTILS-1_16f-260-gf381610 + so avoid this redundant clearing. + (do_wipefd): Likewise. + * NEWS: Remove the recent mention of this issue. + + maint: resync with blake2 upstream + * src/blake2/blake2-impl.h: Don't use the equivalent explicit_bzero(). + + tests: avoid a false failure on AIX + * tests/misc/sync.sh: Normalize the error messages + when syncing a non read/write directory, as AIX + gives the "Is a directory" error. + Also ensure that sync(1) returns an error for this + case on all systems. + +2017-07-20 Paul Eggert + + shred: use explicit_bzero + * NEWS: Document this. + * bootstrap.conf (gnulib_modules): Add explicit_bzero. + * gl/lib/randint.c (randint_free): + * gl/lib/randread.c (randread_free): + * src/blake2/blake2-impl.h (secure_zero_memory): + * src/shred.c (dopass, do_wipefd): + Prefer explicit_bzero to memset when erasing secrets. + + build: update gnulib submodule to latest + +2017-07-10 Andreas Schwab + + nproc: fix indentation of usage output + * src/nproc.c (usage): Align output. + +2017-07-10 Jim Meyering + + groups: do not exit early + Most programs take care to operate on all command-line-specified + operands before exiting. That is an important feature that allows + to identify all problems with the first run. However, groups would + exit upon the first problematic user name. + Bug introduced via commit v6.10-56-g167b8025ac. + * src/groups.c (main): Do not exit immediately upon error. + * tests/misc/groups-process-all.sh: New file. Test for this. + * tests/local.mk (all_tests): Add it. + * NEWS (Bug fixes): Mention this. + +2017-07-08 Jim Meyering + + tests: groups-dash.sh: avoid false failure + * tests/misc/groups-dash.sh: Avoid false failure on a system for which + "none" is a valid user name. The first invocation would succeed, and + the second would fail with "groups: ‘--’: no such user". + Use a user name that cannot exist. + + doc: tweak wording + * NEWS (Bug fixes): Tweak wording of the mv/cp-vs-symlink-ownership + entry and the one about df. + +2017-06-28 Assaf Gordon + + expr: add multibyte support + Discussed in https://bugs.gnu.org/26779 . + + * NEWS: Mention the improvement. + * bootstrap.conf: Add gnulib modules mbslen,mbschr. + * src/expr.c (mbs_logical_substr): New function to return a substring + based on logical character positions (instead of bytes). + (mbs_logical_cspn): Similar to strcspn/mbscspn, but returns number of + logical characters instead of byte offset. + (mbs_offset_to_chars): New function to return number of logical + characters fitting in a given byte offset. + (docolon): Report matched logical characters instead of bytes. + (eval6): For length/substr/index operations, use logical characters + instead of bytes by calling the above new functions. + * tests/misc/expr.pl: Repeat all tests with non-C locale to detect any + regressions. + * tests/misc/expr-multibyte.pl: New tests with multibyte input. + * tests/local.mk: Add new test file. + +2017-06-21 Jim Meyering + + maint: avoid spurious "make distcheck" failure + When the generated file, doc/constants.texi, happens to be older than + doc/coreutils.info, it will not be updated until/unless its generated + contents change. This is due to way that rule is careful to update + the file, to avoid provoking a pointless rerunning of makeinfo. + + Note that this does not happen when one first runs "make distclean", + as recommended in README-release. However, I sometimes run it as + a more-rigorous "make check", and shouldn't have to manually run + "make distclean" first, in that case. + + Before this change, one could reproduce the failure by running + `touch -dyesterday doc/constants.texi && make distcheck`. It would + fail with "makeinfo: could not open ../../doc/coreutils.info-t + for writing: Permission denied" + * Makefile.am (dist-hook): Touch the two generated files, so that + they cannot be out of date wrt doc/coreutils.texi. + +2017-06-17 Pádraig Brady + + maint: use C99 for loop initial declarations where possible + This results in a net reduction of about 120 lines. + + tail: only use inotify with regular files + * src/tail.c (any_non_regular): A new function to check passed files. + (main): Use the above to skip inotify if any non regular files passed + like /dev/tty or /dev/ttyUSB0 etc. + * tests/tail-2/inotify-only-regular.sh: A new test. + * tests/local.mk: Reference the new test. + * NEWS: Mention the bug fix. + Fixes http://bugs.gnu.org/21265 and http://bugs.gnu.org/27368 + + tail: with -f don't warn if doing a blocking read of a tty + * src/tail.c: (main): Only issue the warning about -f being + ineffective when we're not going into simple blocking mode. + * tests/tail-2/follow-stdin.sh: Ensure the warning is output correctly. + Fixes http://bugs.gnu.org/27368 + +2017-06-11 Pádraig Brady + + tail: exit promptly when output no longer writable + This will support use cases like: + + tail -f file.log | grep -q trigger && + process_immediately + + * src/tail.c (check_output_alive): A new function that + uses select on fifos or pipes to detect if they're broken. + (tail_forever): Call check_output_alive() periodically. + (tail_forever_inotify): Merge the select() call from + check_output_alive() into the select() originally present + for the --pid case, and adjust accordingly. + * tests/tail-2/pipe-f.sh: Add test cases. + * NEWS: Mention the improvement. + +2017-06-11 Jim Meyering + + maint: update to work with GCC7's -Werror=implicit-fallthrough=5 + * src/system.h (FALLTHROUGH): Define. + * src/cp.c (main): Use new FALLTHROUGH macro in place of comments. + * src/basename.c (main): Likewise. + * src/dircolors.c (append_quoted): Likewise. + * src/echo.c (main): Likewise. + * src/fold.c (main): Likewise. + * src/join.c (main): Likewise. + * src/kill.c (main): Likewise. + * src/ls.c (get_funky_string, gobble_file): Likewise. + * src/sort.c (parse_field_count, main): Likewise. + * src/stat.c (print_it): Likewise. + * src/tail.c (parse_obsolete_option): Likewise. + * src/test.c (posixtest): Likewise. + * src/wc.c (wc): Likewise. + * src/who.c (main): Likewise. + +2017-06-07 Pádraig Brady + + tail: with --pid, ensure all inotify events are processed + * NEWS: Mention the bug fix. + * src/tail.c (tail_forever_inotify): With --pid, avoid waiting + for new events if there are still events to process. + * tests/tail-2/inotify-dir-recreate.sh: Adjust to trigger. + + tests: fix issues with recently added tail test + * tests/tail-2/inotify-dir-recreate.sh: Skip when + inotify is not usable. Also remove a bash specific &> construct. + +2017-06-03 Pádraig Brady + + copy: don't fail when unable to chown symlinks + * src/copy.c (copy_internal): Honor the x->require_preserve flag + for symlinks as we do for ordinary files, so we don't exit with + failure upon failure to chown a symbolic link. + * NEWS: Mention the bug fix. + +2017-05-29 Sebastian Kisela + + doc: mention `setpriv --no-new-privs` feature in runcon info + * doc/coreutils.texi (runcon invocation): Mention setpriv usage. + Discussed at https://bugzilla.redhat.com/1360903 + +2017-05-18 Pádraig Brady + + mv: distinguish copy and rename operations with --verbose + * src/copy.c (copy_internal): In x->move_mode distinguish + whether we're copying, creating directory, or renaming. + * tests/mv/backup-dir.sh: Adjust to new output. + * tests/mv/mv-n.sh: Likewise. + * tests/mv/mv-special-1.sh: Likewise. + * NEWS: Mention the improvement. + Fixes http://bugs.gnu.org/26971 + +2017-05-11 Prateek saxena + + uptime: remove inconsistent AM/PM from current time + * src/uptime.c (main): 00-23 was always used for the hour component + of the current time, so remove the AM/PM output (which was only + present in some locales anyway). Also add seconds to the time + to be more consistent with the usual procps-ng uptime implementation + on GNU/Linux. + * NEWS: Mention the fix. + Fixes http://bugs.gnu.org/26783 + +2017-05-04 Pádraig Brady + + maint: fix various typos in recent commits + * NEWS: Grammar fixes. + * HACKING: Likewise. + +2017-05-04 Jaak Ristioja + + doc: Fixed typo in timeout man page + * man/timeout.x: Correct spelling of "currently". + Fixes http://bugs.gnu.org/26762 + +2017-04-30 Pádraig Brady + + doc: update the instructions for generating a coverage report + * HACKING: Change from explicit instructions to using gnulib + provided coverage testing targets. Also include instructions + for adding root only tests to the report. + Fixes http://bugs.gnu.org/26709 + +2017-04-27 Paul Eggert + + dd: simplify translator’s jobs + * src/dd.c (print_xfer_stats): Format the SI units directly, + without translating them, to simplify the translators’ jobs. + See Bug#26621. + +2017-04-27 Pádraig Brady + + date,touch: test and document large TZ security issue + Add a test for CVE-2017-7476 which was fixed in gnulib at: + http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=commitdiff;h=94e01571 + + * tests/misc/date-tz.sh: Add a new test which overwrites enough + of the heap to trigger a segfault, even without ASAN enabled. + * tests/local.mk: Reference the new test. + * NEWS: Mention the bug fix. + +2017-04-27 Pádraig Brady + + build: update gnulib submodule to latest + * .gitignore: Add new entry as indicated by `make syntax-check`. + +2017-04-24 Paul Eggert + + dd: status=progress outputs "6 s", not "6.00001 s" + Problem reported by Benno Schulenberg (Bug#26621). + * NEWS: Document this. + * src/dd.c (print_xfer_stats): With status=progress, + format times with %.0f rather than %g. Improve + translator comments. + +2017-04-22 Paul Eggert + + build: update gnulib submodule to latest + + maint: remove unused functions and constants + These were found by clang. + * gl/lib/rand-isaac.c (min): + * gl/lib/randint.c (shift_right): + * src/md5sum.c (algorithm): + Remove; unused. + + date: adjust to gnulib parse-datetime changes + * doc/coreutils.texi (Options for date): Capitalize a sentence. + * tests/misc/date-debug.sh: Adjust --debug output to match + recent changes to Gnulib’s parse-datetime module. + + build: update gnulib submodule to latest + * gl/modules/tempname.diff: Update to match current Gnulib. + +2017-04-18 Bogdan Drozdowski + + shred: fix invalid pattern generation for certain sizes + * src/shred.c (fillpattern): Fix the "off by one" issue when + testing whether we have enough space to copy the already + written portion of the buffer to the remainder of the buffer. + Specifically for buffer sizes that are (3*(2^x))+1, i.e. 7,13,... + we both use an uninitialized byte and invoke undefined + behavior in memcpy() operation on overlapping memory regions. + * tests/misc/shred-passes.sh: Add an invocation that will + trigger either valgrind UMR, or ASAN like: + ERROR: AddressSanitizer: memcpy-param-overlap: memory ranges + #1 0x403065 in fillpattern src/shred.c:293 + A direct test is awkward due to the random writes surrounding + the problematic pattern writes. + Fixes http://bugs.gnu.org/26545 + +2017-04-17 Bo Rydberg + + doc: fix awk example for getting penultimate field + * doc/coreutils.texi (cut invocation): Add required brackets. + Fixes http://bugs.gnu.org/26519 + +2017-04-06 Sebastian Kisela + + tail: revert to polling if a followed directory is replaced + * src/tail.c (tail_forever_inotify): Add the IN_DELETE_SELF flag when + creating watch for the parent directory. After the parent directory + is removed, an event is caught and then we switch from inotify to + polling mode. Till now, inotify has always frozen because it waited for + an event from a watched dir, which has been already deleted and was not + added again. + * tests/tail-2/inotify-dir-recreate.sh: Add a test case. + * tests/local.mk: Reference the new test. + * NEWS: Mention the bug fix. + Fixes http://bugs.gnu.org/26363 + Reported at https://bugzilla.redhat.com/1283760 + +2017-04-06 Pádraig Brady + + maint: fix syntax-check issues in previous tty commit + * src/tty.c: Avoid EXIT_FAILURE to be more descriptive + and to placate sc_some_programs_must_avoid_exit_failure. + +2017-04-05 Paul Eggert + + tty: handle misconfigured namespaces + On some platforms, isatty succeeds but ttyname fails. + POSIX does not seem to allow this, but there it is. + Problem reported by Christian Brauner (Bug#26371). + While we’re at it, check for errors more carefully and return a + new exit status 4 if stdin is closed or a similar error occurs. + * doc/coreutils.texi (tty invocation): Document new behavior. + * init.cfg (stderr_fileno_): + Don't assume have_input_tty is not in the environment. + * src/tty.c (TTY_STDIN_ERROR): New constant. + (main): Exit with nonzero status if there is a usage error, + like other coreutils programs. + Check for error in getting stdin type. + * tests/misc/tty.sh: New file. + * tests/local.mk (all_tests): Add it. + +2017-04-03 Pádraig Brady + + doc: refactor and update expand and unexpand --help + * src/expand-common.c (emit_tab_list_info): A new function to + output the extended info on --tab=LIST, including the new + '+' and '/' prefixes. + * src/expand-common.h: Declare the above. + * src/expand.c (usage:): Call emit_tab_list_info and + match alignment with that used in unexpand --help. + * src/unexpand.c (usage): Likewise. + +2017-04-03 Jacob Keller + + expand,unexpand: add support for incremental tab stops + Support --tabs="1,+8" which is equivalent to --tabs="1,9,17,..." + useful for viewing unified diff output with its 1 character + gutter for example. + + * doc/coreutils.texi ({expand,unexpand} invocation): Document, + using diff processing as the example. + * src/expand-common.c (set_increment_size): Update the new + increment_size global. + (parse_tab_stops): Handle the new '+' prefix. + (finalize_tab_stops): Verify both '+' and '/' prefixes + are not used together. + * tests/misc/expand.pl: Add test cases. + * NEWS: Mention the new feature. + +2017-03-30 Paul Eggert + + sort: update comment + * src/sort.c: Update identifiers in comment. + +2017-03-30 Chris Davies + + doc: clarify in dd man page that bs= overrides [io]bs= + * src/dd.c (usage): Add the extra info. + Reported in https://bugs.debian.org/859021 + +2017-03-28 Ludovic Courtès + + tests: avoid false ulimit failure on some systems + * tests/misc/cut-huge-range.sh: On some systems returns_ may + use more memory, so incorporate that in the determination + of the ulimit value to use. Noticed on ARMv7 with bash-4.4.12, + and x86_64 with bash-4.2.37. + Fixes http://bugs.gnu.org/26253 + +2017-03-28 Pádraig Brady + + maint: avoid syntax check failure with wrapped returns_ + * cfg.mk (sc_prohibit_env_returns): Allow wrapped calls to + return_ of the form: `wrapper_ returns_ ...` which is needed + with the following commit. + +2017-03-28 Michael Heimpold + + split: add new --hex-suffixes option + * doc/coreutils.texi (split invocation): Document the new option. + * src/split.c (usage): Likewise. + (main): Process the new option much like --numeric-suffixes, + but with an adjusted alphabet. + * tests/split/numeric.sh: Refactor to support --hex mode. + * NEWS: Mention the new feature. + +2017-03-28 Pádraig Brady + + md5sum,b2sum,sha*sum: don't erroneously trigger BSD reversed mode + * src/md5sum.c (split_3): Verify hex digits internally before + triggering the global bsd_reversed mode flag. + (bsd_split_3): Likewise. + * tests/misc/md5sum-bsd.sh: Add a test case. + * NEWS: Mention the bug fix. + Fixes http://bugs.gnu.org/26263 + +2017-03-27 Philipp Thomas + + df: avoid querying excluded file systems + * src/df.c (filter_mount_list): Avoid stat() on + explicitly excluded file systems, which is especially + significant in cases like `-x nfs` which may hang. + * NEWS: Mention the bug fix. + +2017-03-26 Pádraig Brady + + maint: avoid a static analysis warning in expand-common + * src/expand-common.c (next_file): We're dependent on calling + this function with NULL to initialize things appropriately. + So enforce this with assert(), which avoids a warning from + clang-anaylzer. + + split: process more efficiently when filters exit early + * src/split.c (bytes_split): Don't write to an existing filter + if it has exited. When filters exit early, skip input data if + possible. Refactor out 2 redundant variables. + * tests/split/filter.sh: Improve test coverage given the + new more efficient processing. Also use a 10TB file to + expand the file systems tested on. + +2017-03-26 Pádraig Brady + + split: ensure input is processed when filters exit early + commit v8.25-4-g62e7af0 introduced the issue as it + broke out of the processing loop irrespective of + the value of new_file_flag which was used to indicate + a finite number of filters or not. + + For example, this ran forever (as it should): + $ yes | split --filter="head -c1 >/dev/null" -b 1000 + However this exited immediately due to EPIPE being propagated + back through cwrite and the loop not considering new filters: + $ yes | split --filter="head -c1 >/dev/null" -b 100000 + + Similarly processing would exit early for a bounded number of + output files, resulting in empty data sent to all but the first: + $ truncate -s10T big.in + $ split --filter='head -c1 >$FILE' -n 2 big.in + $ echo $(stat -c%s x??) + 1 0 + + I was alerted to this code by clang-analyzer, + which indicated dead assigments, which is often + an indication of code that hasn't considered all cases. + + * src/split.c (bytes_split): Change the last condition in + the processing loop to also consider the number of files + before breaking out of the processing loop. + * tests/split/filter.sh: Add a test case. + * NEWS: Mention the bug fix. + +2017-03-11 Pádraig Brady + + tests: avoid a false failure on OS X 10.5.8 + * tests/misc/sort-debug-keys.sh: Disparate LC_CTYPE and LC_MESSAGES + are not supported, with the result LC_MESSAGES=C is used throughout. + Therefore just set LC_ALL in the test, and normalize the message + variants with sed. + Reported and tested by J Rogowsky. + + build: fix missing renameat() on OS X 10.5.8 + * bootstrap.conf: Depend on renameat. + Reported and tested by J Rogowsky. + Fixes http://bugs.gnu.org/26044 + +2017-03-10 Paul Eggert + + tests: port to tzdb-2017a + Problem reported by Bernhard Voelker in: + http://lists.gnu.org/archive/html/coreutils/2017-03/msg00026.html + * tests/misc/date-debug.sh: Port test to tzdb 2017a, + and future-proof the America/Belize test. + +2017-03-09 Pádraig Brady + + build: for factor use C in more cases for arm64 and ppc64 + * src/longlong.h: Sync from gmp repo incorporating: + Use asm-free umul_ppmm() on arm64 and ppc64. + + doc: rearrange a recent bug entry to an improvement in NEWS + * NEWS: The stat,tail change was an improvement, not a bug fix. + * cfg.mk [old_NEWS_hash]: update with `make update-NEWS-hash`. + + maint: post-release administrivia + * NEWS: Add header line for next release. + * .prev-version: Record previous version. + * cfg.mk (old_NEWS_hash): Auto-update. + + version 8.27 + * NEWS: Record release date. + + +See the source repo for older entries -- cgit v1.2.3