2024-03-28  Pádraig Brady  <P@draigBrady.com>

	version 9.5
	* NEWS: Record release date.

2024-03-27  Bruno Haible  <bruno@clisp.org>

	tests: od: avoid outputting undefined floating point values
	od was seen to abort() on glibc on ia64 and m68k with the error:
	Fatal glibc error: printf_fp.c:501 (__printf_fp_buffer_1):
	assertion failed:
	  cy == 1 || (p.frac[p.fracsize - 2] == 0 && p.frac[0] == 0)

	* tests/od/od-multiple-t.sh: Avoid outputting long double floats
	to avoid undefined behavior. 'float' and 'double' are standardized
	by IEEE 754 (except on Linux/m68k) and don't have undefined values.

2024-03-26  Pádraig Brady  <P@draigBrady.com>

	build: update with gnulib fixes
	* gnulib: Update to incorporate gnulib fixes
	from Bruno Haible

	tests: numfmt: fix false failures on some systems
	* tests/misc/numfmt.pl: Verify that printf field width specs
	count characters and not bytes before enabling locale tests.
	This was seen on FreeBSD 14.0 and Solaris 11 OpenIndiana.
	Reported by Bruno Haible

	ls: avoid ENOENT from readdir() on FreeBSD 14
	* src/ls.c (print_dir): readdir() on FreeBSD 14 was
	seen to pass ENOENT through.  ENOENT in this context
	means "Directory unlinked but still open".
	Reported by Bruno Haible with tests/ls/removed-directory.sh

2024-03-26  Pádraig Brady  <P@draigBrady.com>

	tests: avoid false failure due to mismatched isblank()
	There is a mismatch between isblank() used by tr and c32isblank() now
	used by uniq on Solaris 11 OpenIndiana. isblank() was seen to return
	true for non breaking space, while c32isblank() returned false.
	Interestingly on Solaris, non breaking space is considered a blank
	character, and isblank() and c32isblank() honor this in all locales.

	* tests/uniq/uniq.pl: Adjust the blank check to use join(1) rather than
	tr(1), as join uses the same blank determination routines as uniq(1).

2024-03-25  Pádraig Brady  <P@draigBrady.com>

	cp: with --no-preserve=mode ensure set-group-ID bits maintained on dirs
	This issue was introduced in commit v8.19-145-g24ebca6

	* src/copy.c (copy_internal): On systems that don't support ACLs,
	the fallback default chmod done on directories should maintain
	the set-group-ID, as that's generally auto-set by the system.
	* NEWS: Mention the fix.
	Reported by Bruno Haible on Alpine (with tests/cp/preserve-mode.sh)

2024-03-25  Pádraig Brady  <P@draigBrady.com>

	tests: avoid false failure with partial locale info
	* tests/misc/numfmt.pl: Some systems with the fr_FR.UTF-8
	locale installed, do not have a thousands grouping character defined.
	In this case we skip the locale tests which depend on a non empty
	grouping character.

	tests: avoid triggering obsolete tail option processing
	* tests/ls/dired.sh: With 2 options, the latter is taken
	as a file name on some systems.  This avoids a false
	failure on Solaris and FreeBSD at least.

	tests: remove debugging from a test
	* tests/ls/dired.sh: Remove temp debugging output.

	tests: fix false failure on systems that can chmod symlinks
	* tests/chmod/symlinks.sh: The count of adjusted modes was
	one more on systems where symlink modes can be adjusted.
	Therefore only include the non symlinks in the count.

2024-03-24  Pádraig Brady  <P@draigBrady.com>

	doc: fix translation issue in chown/chgrp amalgamation
	* src/chown-core.h (emit_from_option_description): The conditional
	string composition here caused issues for translators.
	Instead move to a more general description ...
	(src/chown.c (usage): ... here.
	Fixes https://bugs.gnu.org/69985

	doc: fix various translation issues
	 src/chown.c (usage): Translate parameterized strings.
	 src/copy.c (copy_internal): Translate each part of ternary.
	* src/cp.c (usage): Fix typo; s/exisiting/existing/.

	test: avoid false failure with setgid directories
	* tests/chmod/symlinks.sh: Ensure this new test is immune
	to setgid directories by resetting modes with =777 rather than 777.
	Also output more debugging in all failure cases.

	tests: avoid false failure on new mv --exchange test
	* tests/mv/mv-exchange.sh: Canonicalize different
	"operation not supported" messages, so we can ignore correctly.
	Reported by Bruno Haible on AIX, NetBSD, and OpenBSD.

	doc: update THANKS related to env --argv0 option
	* THANKS.in: Add Matheus who was central to the env --argv0
	addition in commit v9.4-167-g193449b17.

2024-03-24  Stephane Chazelas  <stephane@chazelas.org>

	doc: ls: detail output format for device files
	* doc/coreutils.texi (ls invocation): State that device numbers
	are output, instead of file size.

2024-03-23  Pádraig Brady  <P@draigBrady.com>

	doc: remove older ChangeLog items
	* Makefile.am: Update the oldest documented version
	to 8.31 which is now about 5 years old.

2024-03-23  Paul Eggert  <eggert@cs.ucla.edu>

	mv: treat --exchange more like non-exchange
	Also, improve quality of diagnostics.
	Problems/suggestions by Bernhard Voelker in
	<https://bugs.gnu.org/69532#82>.
	* src/copy.c (emit_verbose): New arg FORMAT.  All uses changed,
	to improve quality of diagnostics when --exchange is used.
	(copy_internal): Don’t try to optimize --exchange so much; this
	simplifies the code and keeps it closer to the non --exchange case.

	cp,ln,mv: improve dir vs nondir diagnostics
	* src/copy.c (copy_internal): Simplify logic for copying
	from directory to non-directory or vice versa, and always
	diagnose with both source and destination file names.

2024-03-22  Pádraig Brady  <P@draigBrady.com>

	env: add -a,--argv0 to set the first argument passed to exec
	Using the shell's exec -a feature can be awkward
	so add support for setting overriding argv[0].
	This gives env full control over the arguments it passes.

	* src/env.c: Accept -a,--argv0 and set argv[0] appropriately.
	* tests/env/env.sh: Add test cases.
	* doc/coreutils.texi (env invocation): Describe -a,--argv0.
	* NEWS: Mention the new feature.

2024-03-21  Pádraig Brady  <P@draigBrady.com>

	doc: pr: give solution to expanding TABs in multicolumn output
	* doc/coreutils.texi (pr invocation): Explicitly state that
	multicolumn output will convert spaces to TABs, and show that
	this can be undone with the `pr -t -e` or `expand` commands.
	Suggested by Douglas McIlroy in https://bugs.gnu.org/69807

2024-03-20  Paul Eggert  <eggert@cs.ucla.edu>

	doc: clarify mv --exchange
	In the manual, say it exchanges all data and metadata.
	Suggested by Pádraig Brady in:
	https://debbugs.gnu.org/cgi/bugreport.cgi?bug=69532#59

	mv: new option --exchange
	* src/copy.h (struct cp_options): New member 'exchange'.
	* src/copy.c (copy_internal): Support the new member.
	* src/mv.c (EXCHANGE_OPTION): New constant.
	(long_options): Add --exchange.
	(usage): Document --exchange.
	(main): Support --exchange.
	* tests/mv/mv-exchange.sh: New test case.
	* tests/local.mk (all_tests): Add it.

2024-03-19  Pádraig Brady  <P@draigBrady.com>

	chmod: fix TOCTOU security issue with symlink replacement
	This is an issue with -[H]R mode, where an attacker
	may replace a traversed file with a symlink
	between where we stat() the file and chmod() the file.

	* src/chmod.c (process_file): Remove the first !S_ISLNK guard
	as that's now just an optimization, and instead consistently
	apply fchmodat() to files/symlinks.  Ensure AT_SYMLINK_NOFOLLOW
	is set when traversing in default (-H) mode.
	* NEWS: Mention the bug fix.
	Fixes https://bugs.gnu.org/11108

2024-03-19  Pádraig Brady  <P@draigBrady.com>

	chmod: add support for -h, -H,-L,-P, --dereference options
	There have been various requests to add -h to avoid following symlinks
	for security reasons.  This wasn't provided previously as chmod(1)
	already ignored symlinks unless specified on the command line.
	Note chmod defaults to -H mode rather than the chown default of -P,
	as usually chown can work directly on symlinks and so defaults
	to not traversing those specified on the command line.
	Note FreeBSD chmod does default to -P mode, but we retain the -H mode
	default also for compatibility with existing chmod behavior.

	Adding -HLP will allow chmod to disable traversing CLI symlinks to dirs.
	Adding -h will allow to disable following CLI symlinks to files/dirs,
	  also operating on all symlinks on systems that support that.
	Adding --dereference will be significant with -H (the default).  I.e.
	  symlinks to dirs not recursed, but symlinks are dereferenced.
	Adding these options will also be consistent with chown(1), chgrp(1),
	and chmod(1) on other systems.

	Note since chmod(1) currently ignores symlinks by default,
	and -h is primarily a mechanism to avoid following symlinks, rather than
	for operating on the symlink itself, we make -h try to chmod a symlink,
	but ignore ENOTSUP.  In that way we're consistent with chown(1)
	where it also ignores ENOTSUP for symlinks, and we don't fail when
	trying to be extra secure with command line params.

	* doc/coreutils.texi (chmod invocation): Reference the -H,-L,-P
	descriptions, and adjust the corresponding macros to say
	the default is -H or -P as appropriate.
	Add --dereference and -h,--no-dereference descriptions.
	* man/chmod.x: Adjust discussion of symlink handling.
	* src/chmod.c (main): Accept new options and set
	fts flags appropriately.
	(process_file): Process / dereference symlinks as necessary.
	* src/system.h (emit_symlink_recurse_options): A new function
	refactored from chown.c and chmod.c usage().
	* tests/chmod/symlinks.sh: New test for the new options.
	* tests/local.mk: Reference the new test.
	* NEWS: Mention the new feature.

2024-03-19  Pádraig Brady  <P@draigBrady.com>

	maint: basenc: consistently check buffer bounds when encoding
	* src/basenc.c (base16_encode, base2msbf_encode, base2lsbf_encode):
	Ensure we don't overflow the output buffer, whose length is
	passed in the OUTLEN parameter.  This issue was flagged by clang
	with -Wunused-but-set-parameter.

2024-03-19  Pádraig Brady  <P@draigBrady.com>

	pinky: disable location canonicalization by default
	Behave like who(1) in requiring --lookup to enable this
	often slow feature.  pinky(1) is supposed to be lightweight after all.

	* doc/coreutils.texi (who invocation): Adjust the description to no
	longer reference dialup, and be more general about the still significant
	delays.
	(pinky invocation): Reference the same --lookup description.
	* src/pinky.c (main): Accept --lookup to enable DNS lookups.
	* NEWS: Mention the change in behavior.
	Fixes https://bugs.debian.org/628815

2024-03-18  Pádraig Brady  <P@draigBrady.com>

	doc: fix stale --dereference info for chown/chgrp
	Following v5.2.1-679-g7e29ef8b8 symlinks specified on the command line
	no longer induce an error if lchown() is not supported on the system.

	* doc/coreutils.texi (chown invocation, chgrp invocation): Adjust
	accordingly, and also use a macro to avoid duplication.
	* src/chown-core.c: Use our more standard is_ENOTSUP() wrapper
	in the code related to this.

2024-03-17  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib submodule to latest

2024-03-15  Pádraig Brady  <P@draigBrady.com>

	build: provide a cross-compiling default for 16 bit float checks
	* configure.ac: Provide a conservative 16 bit float support default
	when cross-compiling, to avoid configure failing in that case.

2024-03-13  Grisha Levit  <grishalevit@gmail.com>

	env,kill,timeout: support unnamed signals
	Some signals with values less that the max signal number for the system
	do not have defined names.  For example, currently on amd64 Linux,
	signals 32 and 33 do not have defined names, and Android has a wider
	gap of undefined names where it reserves some realtime signals.

	Previously the signal listing in env ended up reusing the name
	of the last printed valid signal (the repeated HUP below):

	    $ env --list-signal-handling true
	    HUP        ( 1): IGNORE
	    HUP        (32): BLOCK
	    HUP        (38): IGNORE

	..and the corresponding signal numbers were rejected as operands for the
	env, kill, and timeout commands.

	This patch removes the requirement that sig2str returns 0 for a signal
	number associated with an operand.  This allows unnamed signals to be in
	the sets `env' attempts to manipulate when a --*-signal option is used
	with no argument, and kill(1) and timeout(1) to send such unnamed
	signals.

	* src/operand2sig.c (operand2sig): Drop signame argument, accept all
	signal numbers <= SIGNUM_BOUND.  All callers updated.
	* src/env.c (parse_signal_action_params, reset_signal_handlers)
	(parse_block_signal_params, set_signal_proc_mask)
	(list_signal_handling): Accept all signal numbers <= SIGNUM_BOUND,
	use SIG%d for printing if necessary.
	* src/kill.c (list_signals, main): Likewise.
	(send_signals): Check errno from kill(3) for bad signo.
	* src/timeout.c (main): Update operand2sig call.
	* tests/misc/kill.sh: Test listing all signal numbers.
	* NEWS: Mention the improvement.

2024-03-13  Pádraig Brady  <P@draigBrady.com>

	build: add caching for involved configure checks
	* configure.ac: Wrap the following with AC_CACHE_VAL,
	so that they can be cached / overridden.  We use
	the "utils_cv_" prefix as they're coreutils specific overrides.
	utils_cv_avx2_intrinsic_exists,
	utils_cv_brain_16_bit_supported,
	utils_cv_ieee_16_bit_supported,
	utils_cv_pclmul_intrinsic_exists,
	utils_cv_stdbuf_supported.

2024-03-13  Grisha Levit  <grishalevit@gmail.com>

	build: strengthen 16 bit float support checks
	Recent clang provides __bf16 on aarch64 but it is broken.

	If built with -O0, the conversion is wrong:

	    $ printf '\x3F\x80' | od --end=big -An -tfB | tr -d ' '
	    1.875

	If built with -O1 or higher, compilation fails:

	    fatal error: error in backend:
	    Cannot select: 0xb400007a58d29780: f32 = fp_extend 0xb40000...
	    0xb40000...: bf16,ch = CopyFromReg 0xb40000..., Register:bf16 %13
	    0xb40000...: bf16 = Register %13
	    In function: print_bfloat

	The latter issue does not cause the existing configure test to fail
	because the promotion is optimized out.

	* configure.ac: Ensure 16 bit float promotion code does not get
	optimized out, and produces an expected result.

2024-03-12  Collin Funk  <collin.funk1@gmail.com>

	maint: prefer minmax.h instead of defining our own
	* src/comm.c (min): Remove.
	(compare_files): Use MIN which is referenced by system.h.

2024-03-12  Ville Skyttä  <ville.skytta@iki.fi>

	dircolors: add more archive extensions
	* src/dircolors.hin: Add .apk (Alpine Linux/Android package); .drpm
	(delta rpm); .egg, .pyz, and .whl (Python related); and .udeb (form of
	.deb).

2024-03-12  Collin Funk  <collin.funk1@gmail.com>

	doc: add basic documentation for 'pinky'
	* doc/coreutils.texi: Add 'pinky' under 'who'.

2024-03-12  Pádraig Brady  <P@draigBrady.com>

	timeout: fix narrow race in failing to kill processes
	* src/timeout.c (main): Block cleanup signals earlier so that cleanup()
	is not runnable until monitored_pid is in a deterministic state.
	This ensures we always send a termination signal to the child
	once it's forked.
	* NEWS: Mention the bug fix.
	Reported at https://github.com/coreutils/coreutils/issues/82

2024-03-11  Pádraig Brady  <P@draigBrady.com>

	timeout: fix race where we might kill arbitrary processes
	* src/timeout.c (cleanup): Handle the case where monitored_pid
	might be -1, which could happen if a signal was received
	immediately after a failed fork() call.  In that case it would
	send the termination signal to all processes that the timeout
	process has permission to send signals too.
	* NEWS: Mention the bug fix.

2024-03-06  Pádraig Brady  <P@draigBrady.com>

	cksum: ensure appropriate "binary" mode with --untagged
	* src/digest.c (main): If --binary was enabled with a previous --tag,
	then reset the binary mode to auto select if --untagged then specified.
	* tests/cksum/cksum-a.sh: Add a test case.

2024-03-05  Pádraig Brady  <P@draigBrady.com>

	mv: revert add --swap (-x) option
	Since this functionality is recently available
	in the exch(1) utility from util-linux,
	it was thought best not to complicate mv with it.

	This reverts commit 6cd2d5e5335b5c286ff39e154e9dd38ba6923775

2024-03-04  Pádraig Brady  <P@draigBrady.com>

	cksum: consistently validate --length attributes
	* src/digest.c (main): Only validate the last used --length
	for being a multiple of 8.
	* tests/cksum/b2sum.sh: Add a test case.
	Fixes https://bugs.gnu.org/69546

2024-03-03  Pádraig Brady  <P@draigBrady.com>

	doc: fix spellings in NEWS
	* NEWS: s/user/uses/; s/exisiting/existing/

2024-03-03  Petr Malat  <oss@malat.biz>

	mv: add --swap (-x) option to atomically swap 2 paths
	renameat2() syscall allows atomically swapping 2 paths on one
	file system. Expose this ability to the user with --swap.

	* doc/coreutils.texi: Describe mv --swap option.
	* src/mv.c (main): Support --swap.
	* tests/mv/mv-swap.sh: Add test for mv -x.
	* tests/local.mk: Reference new test.
	* NEWS: Mention the new option.

2024-02-28  Pádraig Brady  <P@draigBrady.com>

	cat,cp,mv,dd,install,split: set the default IO size to 256KiB
	* src/ioblksize.h: Add updated test results and
	increase value from 128KiB to 256KiB, which was last
	updated 10 years ago.
	* NEWS: Mention the improvement.

2024-02-27  lvgenggeng  <lvgenggeng@uniontech.com>

	mktemp: fix template diagnostic with --suffix
	* src/mktemp.c (main): When --suffix is specified, TEMPLATE
	points to the meraged buffer DEST_NAME. As X's in the suffix are
	not significant to the generated random characters, the diagnostic
	for too few X's should only refer to the template portion.
	* tests/misc/mktemp.pl: Adjust accordingly.
	* NEWS: Mention the bug fix.

2024-02-27  Pádraig Brady  <P@draigBrady.com>

	tests: move join tests to their own directory
	* tests/misc/join-utf8.sh: Move to tests/join
	since there are now multiple join tests.
	* tests/misc/join.pl: Likewise.

	tests: simplify treatment of the $LOCALE_FR_UTF8 variable
	* tests/df/problematic-chars.sh: Rely on gnulib setting
	this to "none" where not usable.
	* tests/misc/sleep.sh: Likewise.
	* tests/printf/printf-mb.sh: Likewise.
	* tests/printf/printf-quote.sh: Likewise.
	* tests/sort/sort-debug-keys.sh: Likewise.

2024-02-27  Bruno Haible  <bruno@clisp.org>

	join: avoid test failure on systems with no French UTF-8 locale
	* tests/misc/join-utf8.sh: Test the value of LOCALE_FR_UTF8 against
	'none', not against a missing value.
	Fixes https://bugs.gnu.org/69418

	sort: make the startup time optimization effective on glibc < 2.34
	* configure.ac: Test where to find the dlopen function. Set LIB_DL.
	Use it in the DLOPEN_LIBCRYPTO test.
	* src/local.mk (src_sort_LDADD): Add $(LIB_DL).

2024-02-26  Pádraig Brady  <P@draigBrady.com>

	build: improve libcrypto library detection
	* configure.ac: Match literal '.' in the file name
	to avoid potential mismatches with similarly named libs.
	Reported by Andreas Schwab

2024-02-26  Aearil  <aearil@paranoici.org>

	wc: fix -w with breaking space over UCHAR_MAX
	* src/wc.c (wc): Fix regression introduced in commit v9.4-48-gf40c6b5cf.
	* tests/wc/wc-nbsh.sh: Add test cases for "standard" spaces.
	Fixes https://bugs.gnu.org/69369

2024-02-26  Pádraig Brady  <P@draigBrady.com>

	cp,mv: add --update=none-fail to fail if existing files
	* src/cp.c (main): Add support for --update=none-fail to provide the
	functionality of diagnosing files in the destination,
	and exiting with failure status.
	(usage): Mark -n as deprecated.
	* src/mv.c: Likewise.
	* src/copy.h: Add UPDATE_NONE_FAIL definition.
	* src/system.h (emit_update_parameters_note): Add --update=none-fail
	description.
	* doc/coreutils.texi (cp invocation): Likewise.
	Also mention why -n is deprecated.
	* tests/mv/update.sh: Add a test case, including precedence
	with -n and other --update options.
	* tests/cp/cp-i.sh: Verify that --backup and --update=none{,-fail}
	are mutually exclusive.
	* tests/mv/mv-n.sh: Likewise.
	* NEWS: Mention the new feature.
	Addresses https://bugs.gnu.org/62572

	cp,mv: reinstate that -n exits with success if files skipped
	* src/cp.c (main): Adjust so that -n will exit success if skipped files.
	* src/mv.c (main): Likewise.
	* doc/coreutils.texi (cp invocation): Adjust the description of -n.
	* src/system.h (emit_update_parameters_note): Adjust --update=none
	comparison.
	* tests/cp/cp-i.sh: Adjust -n exit status checks.
	* tests/mv/mv-n.sh: Likewise.
	* NEWS: Mention the change in behavior.
	Fixes https://bugs.gnu.org/62572

2024-02-26  Pádraig Brady  <P@draigBrady.com>

	build: fix libcrypto version linked by sort at runtime
	One should link the versioned lib at runtime,
	and the unversioned lib at build time,
	as the unversioned lib may not be installed,
	and better couples the binary with the required version.

	* configure.ac: Define LIBCRYPTO_SONAME, determined from
	the test binary linked with -lcrypto.  Also document
	why we use SHA512() in the check, rather than MD5().
	* src/sort.c (link_libcrypto): Use the versioned lib in dlopen().

2024-02-26  Pádraig Brady  <P@draigBrady.com>

	maint: avoid sc_tight_scope failure in sort.c
	* cfg.mk: Exclude the ptr_MD5_* symbols added in
	commit v9.4-130-g7f57ac2d2, as there is no way
	to declare these static given they way they're defined.

2024-02-26  Paul Eggert  <eggert@cs.ucla.edu>

	doc: mention -lcrypto change in NEWS

	sort: dynamically link -lcrypto if -R
	This saves time in the usual case, which does not need -lcrypto.
	* configure.ac (DLOPEN_LIBCRYPTO): New macro.
	* src/sort.c [DLOPEN_LIBCRYPTO && HAVE_OPENSSL_MD5]: New macros
	MD5_Init, MD5_Update, MD5_Final.  Include "md5.h" after defining
	them.  Include <dlfcn.h>, and define new functions link_failure
	and symbol_address.
	(link_libcrypto): New function.
	(random_md5_state_init): Call it before using crypto functions.

	doc: de-“note” the documentation
	* doc/coreutils.texi, man/readlink.x, man/runcon.x:
	* src/comm.c (usage):
	* src/digest.c (usage):
	* src/echo.c (usage):
	* src/join.c (usage):
	* src/ln.c (usage):
	* src/rm.c (usage):
	* src/stat.c (usage):
	* src/system.h (USAGE_BUILTIN_WARNING):
	* src/test.c (usage):
	* src/touch.c (usage):
	* src/uniq.c (usage):
	Rewrite to avoid most uses of “Note that” and similar wording.
	These circumlocutions are rarely needed, and avoiding them
	improves readability and lessens preaching.

2024-02-22  Daan De Meyer  <daan.j.demeyer@gmail.com>

	cp: add --keep-directory-symlink option
	When recursively copying files into OS trees, it often happens that
	some subdirectory of the source directory is a symlink in the target
	directory. Currently, cp will fail in that scenario with the error:

	"cannot overwrite non-directory %s with directory %s"

	However, we'd like cp in this scenario to follow the destination
	directory symlink and copy the files into the symlinked directory
	instead. Let's support this by adding a new option
	--keep-directory-symlink that makes cp follow destination directory
	symlinks.

	We name the option --keep-directory-symlink to keep consistent with
	tar which has the same option with the same effect.

	* doc/coreutils.texi (cp invocation): Describe the new option.
	* src/copy.h: Add the new setting.
	* src/copy.h: Adjust to follow symlinks if setting enabled.
	* src/cp.c (usage): Describe the new option.
	(main): Accept the new option.
	* tests/cp/keep-directory-symlink.sh: A new test.
	* tests/local.mk: Reference the new test.
	* NEWS: Mention the new feature.

2024-02-19  Michel Lind  <michel@michel-slm.name>

	dircolors: update list of archive file extensions
	* src/dircolors.hin: Sort archive section by extension.
	Treat .crate (Rust archives) as archive files
	(they're essentially tar.gz files).

2024-02-19  Collin Funk  <collin.funk1@gmail.com>  (tiny change)

	maint: prefer #include <...> for gnulib substitute headers
	* src/shuf.c: Change #include "getopt.h" to #include <getopt.h>.
	* src/stat.c: Change #include "getopt.h" to #include <getopt.h>.
	* src/system.h: Change #include "error.h" to #include <error.h>.

2024-02-19  Pádraig Brady  <P@draigBrady.com>

	doc: add '[' to the info index
	* doc/coreutils.texi (test invocation): Add '[' to the index.

2024-02-18  Paul Eggert  <eggert@cs.ucla.edu>

	build: update gnulib submodule to latest

	nohup: document GCC bug number
	* src/nohup.c: Add GCC bug number to comment.

	ls: remove unnecessary pragmas
	* src/ls.c (decode_switches): Remove pragmas.  They are no longer
	needed to pacify GCC 13.2.1 with --enable-gcc-checking, and there’s
	little point keeping them around for older GCC versions.

	maint: update GCC version comment
	* src/copy.c: Update comment.

	maint: document fix for GCC bug 109628
	* src/fmt.c [14 <= __GNUC__]: Stop using pragma workaround,
	as the GCC folks say the bug is no longer present in GCC 14.

	maint: remove unneeded suggest-attributes pragmas
	* gl/lib/fadvise.c: Remove pragma that works around GCC bug 83559
	<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83559>.
	This bug was fixed in GCC 9, and we needn’t worry about
	--enable-gcc-warnings for compilers that old.
	* src/test.c: Likewise.

2024-02-17  Greg Wooledge  <greg@wooledge.org>

	doc: fix typo in shred example
	* doc/coreutils.texi (shred invocation): Fix the example
	to correctly close file descriptor 3.
	* THANKS.in: Remove old email since now recorded in repo history.
	Reported at https://bugs.debian.org/1063837

2024-02-07  Collin Funk  <collin.funk1@gmail.com>  (tiny change)

	maint: avoid -Wshadow warning under clang
	* src/env.c (parse_signal_action_params, parse_signal_block_params):
	Rename OPTARG to ARG so that it does not conflict with OPTARG used by
	getopt.

2024-02-07  Pádraig Brady  <P@draigBrady.com>

	build: fix od build on clang < 17
	* configure.ac: Ensure the compiler can promote 16 bit floating point
	types to float, before enabling that code in od.  This was an issue
	with clang 16 at least.
	* src/od.c: Adjust for the new defines.
	* tests/od/od-float.sh: Likewise.  Also port to the dash shell,
	whose inbuilt printf doesn't support hex escapes.

2024-02-05  Pádraig Brady  <P@draigBrady.com>

	od: support half precision floating point
	Rely on compiler support for _Float16 and __bf16
	to support -fH and -fB formats respectively.
	I.e. IEEE 16 bit, and brain 16 bit floats respectively.
	Modern GCC and LLVM compilers support both types.

	clang-sect=half-precision-floating-point
	https://gcc.gnu.org/onlinedocs/gcc/Half-Precision.html
	https://clang.llvm.org/docs/LanguageExtensions.html#$clang-sect
	https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0192r4.html
	https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1467r9.html

	This was tested on:
	gcc 13, clang 17 x86 (Both types supported)
	gcc 7 aarch64 (Only -fH supported)
	gcc 13 ppc(be) (Neither supported. Both will be with GCC 14)

	* src/od.c: Support -tf2 or -tfH to print IEEE 16 bit floating point,
	or -tfB to print Brain 16 bit floating point.
	* configure.ac: Check for _Float16 and __bf16 types.
	* doc/coreutils.texi (od invocation): Mention the new -f types.
	* tests/od/od-float.sh: Add test cases.
	* NEWS: Mention the new feature.
	Addresses https://bugs.gnu.org/68871

2024-01-29  Paul Eggert  <eggert@cs.ucla.edu>

	seq: say why not ‘x += step’
	* src/seq.c (print_numbers): Add comment.

2024-01-18  Pádraig Brady  <P@draigBrady.com>

	doc: split -C: test and document a heap overflow
	This was introduced in coreutils 9.2 through commit v9.1-184-g40bf1591b,
	and was fixed in coreutils 9.5 through commit v9.4-111-gc4c5ed8f4.
	This issue has been assigned CVE-2024-0684.

	* NEWS: Mention the bug fix.
	* tests/split/line-bytes.sh: Add a test case.
	Reported by Valentin Metz.

2024-01-17  Pádraig Brady  <P@draigBrady.com>

	tests: make ulimit -v interact better with ASAN
	ulimit -v is generally not supported with ASAN, giving errors like:
	  "ReserveShadowMemoryRange failed while trying to map 0x... bytes.
	   Perhaps you're using ulimit -v"

	* tests/cp/link-heap.sh: Mention ASAN as a possible reason for skipping.
	* tests/csplit/csplit-heap.sh: Likewise.
	* tests/cut/cut-huge-range.sh: Likewise.
	* tests/dd/no-allocate.sh: Likewise.
	* tests/printf/printf-surprise.sh: Likewise.
	* tests/rm/many-dir-entries-vs-OOM.sh: Likewise.
	* tests/head/head-c.sh: Only skip the part of the test needing ulimit.
	* tests/split/line-bytes.sh: Likewise.

2024-01-17  Paul Eggert  <eggert@cs.ucla.edu>

	split: do not shrink hold buffer
	* src/split.c (line_bytes_split): Do not shrink hold buffer.
	If it’s large for this batch it’s likely to be large for the next
	batch, and for ‘split’ it’s not worth the complexity/CPU hassle to
	shrink it.  Do not assume hold_size can be bufsize.

2024-01-10  Sylvestre Ledru  <sylvestre@debian.org>

	tests: ls: add a test to verify that '+' is added
	* tests/ls/acl.sh: Add a new test.
	* tests/local.mk: Reference the new test.

2024-01-06  Samuel Tardieu  <sam@rfc1149.net>

	maint: add attributes to two functions without side effects
	* src/date.c (res_width): This function computes its result solely
	from the value of its parameter and qualifies for the const attribute.
	* src/tee.c (get_next_out): This function has no side effect and
	qualifies for the pure attribute.
	* THANKS.in: Remove duplicate now that author has a commit in the repo.

	Those two functions were flagged by GCC 12.3.0,
	though not by GCC 13.2.1.

2024-01-01  Pádraig Brady  <P@draigBrady.com>

	maint: update all copyright year number ranges
	Update to latest gnulib with new copyright year.
	Run "make update-copyright" and then...

	* gnulib: Update included in this commit as copyright years
	are the only change from the previous gnulib commit.
	* tests/init.sh: Sync with gnulib to pick up copyright year.
	* bootstrap: Manually update copyright year,
	until we fully sync with gnulib at a later stage.
	* tests/sample-test: Adjust to use the single most recent year.

2024-01-01  Paul Eggert  <eggert@cs.ucla.edu>

	maint: pacify recent clang better
	* configure.ac: Clang now seems to have -Wformat-extra-args,
	-Wimplicit-const-int-float-conversion, and
	-Wtautological-constant-out-of-range-compare on by default,
	so disable them even if --enable-gcc-warnings is not used.
	Rely on Gnulib’s check for clang rather than rolling our own.

	maint: pacify clang -Winclude-next-absolute-path
	* gl/lib/xdectoint.c: Use #include <...> instead of #include "...".

	build: update gnulib submodule to latest

	ls: omit bad_cast
	* src/ls.c (decode_switches): Declare some local vars to be
	char const *, not char *, and omit unnecessary bad_cast calls.

	split: omit bad_cast
	* src/split.c (infile): Now char const *, not char *.
	(main): Omit unnecessary bad_cast calls.

2023-12-29  Pádraig Brady  <P@draigBrady.com>

	sort: fix thousands grouping handling on single byte locales
	* gl/lib/strnumcmp-in.h (numcompare): After commit v9.0-8-g6cafb122f,
	we need to treat characters as signed to avoid invalid comparisons
	between negative integers and unsigned characters.
	* NEWS: Mention the bug fix.

	tests: numfmt: fix test related to lower case 'k' SI unit
	* tests/misc/numfmt.pl: Following on from v9.4-86-g615167cc4,
	adjust this test accordingly.  This test was being skipped
	on some systems, and so only noticed now.
	Reported by Jim Meyering.

	tests: run locale tests on more systems
	* tests/misc/numfmt.pl: Determine the thousands grouping character
	in use, rather than skipping locale tests when it's not a space.
	For example fr_FR.UTF-8 uses "NARROW NO-BREAK SPACE" as the grouping
	char on modern glibc systems at least.
	* tests/sort/sort-h-thousands-sep.sh: Likewise.

	maint: distribute new header from previous commit
	* src/local.mk: Reference the new header, so it's distributed.

2023-12-27  Pádraig Brady  <P@draigBrady.com>

	maint: merge chgrp and chown sources
	chown is a close superset of chgrp functionality,
	so merge sources to avoid unwanted divergence in future.
	This removes about 300 lines in chgrp.c

	* build-aux/gen-single-binary.sh: Generate new rules for chgrp.
	* cfg.mk: Exclude new wrappers.
	* po/POTFILES.in: Remove chgrp.c
	* src/chgrp.c: Remove.
	* src/chown-chgrp.c: New wrapper.
	* src/chown-chown.c: Likewise.
	* src/chown.c (main): Prepend ':' for chgrp(1).
	* src/chown.h: Define both operating modes.
	(usage): Adjust depending on utility being called.
	* src/coreutils-chgrp.c: Likewise.
	* src/local.mk: Reference new wrappers.

2023-12-19  Christian Göttsche  <cgzones@googlemail.com>

	copy,install: avoid unnecessary security context translations
	Do not perform SELinux context translation for operations not involving
	user input or output.  Context translation converts MCS/MLS labels into
	human readable form, which is useful for user facing applications like
	ls(1) or the --context=CTX argument of cp(1).

	* src/copy.c (set_process_security_ctx): Use raw selinux variants.
	* src/install.c (need_copy): Likewise.
	(setdefaultfilecon): Likewise.
	* src/selinux.c (computecon): Likewise.
	(defaultcon): Likewise.
	* tests/cp/no-ctx.sh: Add raw variants to preload lib.
	* NEWS: Mention the improvement.

2023-12-19  Pádraig Brady  <P@draigBrady.com>

	build: update gnulib to latest
	* gnulib: Primarily to get raw selinux wrappers

2023-12-17  Pádraig Brady  <P@draigBrady.com>

	maint: avoid false positive warning with newer gcc
	* src/pr.c (read_line): GCC 13.2.1 can't discern that CHARS
	is not used with '\n', so avoid the -Werror=maybe-uninitialized
	issue in dev builds.

	doc: cp --no-clobber: improve documentation
	* doc/coreutils.texi (cp invocation): Reference the related --update
	option, like we had already done in mv invocation.
	* src/cp.c (usage): State clearly what --no-clobber does,
	indicating it's protection focused, rather than being update focused.

2023-12-15  Pádraig Brady  <P@draigBrady.com>

	chgrp: add --from parameter similar to chown
	* doc/coreutils.texi (chown invocation): Convert --from option
	description to a macro and call from ...
	(chgrp description): ... here.
	* src/chown-core.h (emit_from_option_description): A new function
	refactored from ...
	* src/chown.c (usage): ... here, and called from ...
	* src/chgrp.c (usage): ... here.
	(main): Accept the --from option as chown(1) does.
	* po/POTFILES.in: Add chown-core.h as now translated.
	* tests/chown/basic.sh: Decouple the root user from id 0.
	* tests/chgrp/from.sh: A new test largely based on chown/basic.sh.
	* tests/local.mk: Reference the new test.
	* NEWS: Mention the new feature.
	Suggested by Ed Neville.

2023-12-11  Pádraig Brady  <P@draigBrady.com>

	maint: remove obsolete AC_PROG_GCC_TRADITIONAL
	* configure.ac: Remove obsolete macro call.
	Recent autoconf warns that it is obsolete.
	AC_PROG_CPP sets up the -traditional-cpp option if required.
	GCC ignores -traditional since commit f458d1d5 (2002).
	Fixes https://bugs.gnu.org/67756

2023-12-11  Pádraig Brady  <P@draigBrady.com>

	doc: ls: fix regression in -f description
	The description of -f regressed in coreutils 9.0

	* doc/coreutils.texi (ls invocation): Detail which options
	are enabled/disabled with -f.
	* src/ls.c (usage): Likewise.
	(decode_switches): Update comments.
	Fixes https://bugs.gnu.org/67765

2023-12-11  Pádraig Brady  <P@draigBrady.com>

	maint: add list/obstack.h to .gitignore
	Following recent gnulib update

2023-12-10  Pádraig Brady  <P@draigBrady.com>

	build: update gnulib submodule to latest
	* bootstrap: Copy from latest Gnulib,
	to fix --bootstrap-sync with other options.

2023-12-06  Pádraig Brady  <P@draigBrady.com>

	doc: touch: clarify --time description in man page
	* src/touch.c (usage): Reorganise the description to be similar to
	the format used for the ls --time description, which formats better
	when converted to a man page.  Also separate the description
	to allow for more granular translations.
	Fixes https://bugs.gnu.org/67656

2023-12-01  dann frazier  <dann.frazier@canonical.com>

	tail: fix tailing sysfs files where PAGE_SIZE > BUFSIZ
	* src/tail.c (file_lines): Ensure we use a buffer size >= PAGE_SIZE when
	searching backwards to avoid seeking within a file,
	which on sysfs files is accepted but also returns no data.
	* tests/tail/tail-sysfs.sh: Add a new test.
	* tests/local.mk: Reference the new test.
	* NEWS: Mention the bug fix.
	Fixes https://bugs.gnu.org/67490

2023-11-27  Pádraig Brady  <P@draigBrady.com>

	numfmt: support lowercase 'k' for Kilo and Kibi
	For consistency with the "SI" standard, and with other coreutils
	which output a lowercase 'k' in "SI" mode.

	* src/numfmt.c (suffix_power): Treat 'k' like 'K' on input.
	(double_to_human): Output lowercase 'k' in SI mode.
	(usage): Adjust accordingly.
	* doc/coreutils.texi: Mention 'k' accepted, and printed in SI mode.
	* tests/misc/numfmt.pl: Adjust accordingly.
	* NEWS: Mention the change in behavior.
	Fixes https://bugs.gnu.org/47103

2023-11-16  Paul Eggert  <eggert@cs.ucla.edu>

	uniq: fix bug with -w in multibyte locales
	-w counted bytes not characters, which is wrong in multibyte locales.
	This bug exists even in Fedora, which is why the recently-added
	test cases from Fedora didn’t catch it.
	* src/uniq.c (find_field): New arg PLEN.  All callers changed.
	Compute length of field correctly in multi-byte locales.
	(different): Don’t worry about check_chars; find_field now does that.
	* tests/uniq/uniq.pl: Test for this bug.

	tests: omit inapplicable test code
	* tests/misc/join.pl, tests/uniq/uniq.pl:
	Remove test for "invalid byte, character or field list" message
	that is not generated.

	uniq: change macro to function
	* src/uniq.c (swap_lines): New static function, replacing
	the old SWAP_LINES macro.  These days this is just as fast.
	All uses changed.

	uniq: prefer static init
	* src/uniq.c (skip_fields, skip_chars, check_chars, count_occurrences)
	(output_unique, output_first_repeated, output_later_repeated)
	(delimit_groups): Initialize statically, rather than in ‘main’.
	This shrinks the executable a bit.

	uniq: simplify and fix unlikely bug by using bool
	* src/uniq.c (enum countmode): Remove this type.
	(count_occurrences): New static var, replacing the old countmode,
	and of type boolean instead of a two-value enum type that was
	confusing (and which caused a hard-to-test bug when the count
	exceeded INTMAX_MAX - 1).  All uses changed.

2023-11-15  Paul Eggert  <eggert@cs.ucla.edu>

	uniq: prefer signed integers
	* src/uniq.c (skip_fields, skip_chars, check_chars, size_opt)
	(find_field, different, writeline, check_file, main):
	Prefer signed to unsigned integer types, since this allows
	for better runtime checking with -fsanitize=undefined.

	maint: DECIMAL_DIGIT_ACCUMULATE uses stdckdint.h
	* src/system.h: Include <stdckdint.h>, since the new
	DECIMAL_DIGIT_ACCUMULATE uses it.
	Do not include stdckdint.h from files that also include system.h.
	(DECIMAL_DIGIT_ACCUMULATE): Omit last arg, which is no longer needed.
	Reimplement by using C23-style stdckdint.h’s ckd_mul and ckd_add,
	as that’s more standard and is more likely to generate better code.

2023-11-11  Paul Eggert  <eggert@cs.ucla.edu>

	pinky: fix string size calculation
	* src/pinky.c (count_ampersands): Simplify and return idx_t.
	(create_fullname): Compute proper destination string size,
	basically, by adding (ulen - 1) * ampersands rather than ulen *
	(ampersands - 1).  Problem found on CHERI-64.

	maint: port randread to FreeBSD 14
