]> git.ipfire.org Git - thirdparty/coreutils.git/log
thirdparty/coreutils.git
60 min agotests: date: test nested parenthesis comment handling master
Pádraig Brady [Sun, 11 Jan 2026 18:51:19 +0000 (18:51 +0000)] 
tests: date: test nested parenthesis comment handling

* tests/date/date.pl: Add test cases.
Suggested by Sylvestre Ledru.

67 min agodoc: runcon: use more accurate synopsis format
Pádraig Brady [Sun, 11 Jan 2026 18:37:33 +0000 (18:37 +0000)] 
doc: runcon: use more accurate synopsis format

* src/runcon.c (usage): Align synopsis with format
used in other commands.
* doc/coreutils.texi (runcon invocation): Likewise.

95 min agotests: cksum: ensure --check handles I/O errors
oech3 [Sun, 11 Jan 2026 18:14:44 +0000 (18:14 +0000)] 
tests: cksum: ensure --check handles I/O errors

* tests/cksum/cksum-c.sh: Use strace to inject EIO upon read(),
and verify it's handled appropriately.
From https://github.com/coreutils/coreutils/pull/167

6 hours agotests: cksum: ensure --check diagnoses read errors
Pádraig Brady [Sun, 11 Jan 2026 13:40:32 +0000 (13:40 +0000)] 
tests: cksum: ensure --check diagnoses read errors

* tests/misc/read-errors.sh: Add a test case.
Discussed in https://github.com/coreutils/coreutils/pull/167

6 hours agobuild: support 'dist' and 'syntax-check' targets without libselinux
Pádraig Brady [Sat, 10 Jan 2026 16:37:13 +0000 (16:37 +0000)] 
build: support 'dist' and 'syntax-check' targets without libselinux

Following on from commit v9.8-60-g8ba47d09a ...
Without libselinux installed, runcon and chcon stub binaries
will not be built by default.  We separate these utilities out
to a separate "not built unless appropriate" class, so that
we can add these to EXTRA_MANS so that the 'check-x-vs-1'
target doesn't fail, and the 'dist' target includes
these man pages.

* build-aux/gen-lists-of-programs.sh: Separate out
build_if_appropriate_progs, and propagate that through
to no_install_progs_default which populates EXTRA_MANS.
* src/local.mk: Separate out build_if_appropriate__progs
for clarity and consistency.

6 hours agobuild: update gnulib submodule to latest
Pádraig Brady [Sun, 11 Jan 2026 12:54:17 +0000 (12:54 +0000)] 
build: update gnulib submodule to latest

* gnulib: Update to latest mainly to pull in selinux module fixes.
* NEWS: Mention the build fix to honor --with-selinux building
stub chcon and runcon binaries on systems without libselinux.

23 hours agocksum: promptly diagnose write errors
Collin Funk [Sat, 10 Jan 2026 05:17:26 +0000 (21:17 -0800)] 
cksum: promptly diagnose write errors

* src/cksum.c (output_file, digest_check): Check if standard output has
it's error flag set after printing.
* tests/misc/write-errors.sh: Add a test case that would previously run
forever.
* NEWS: Mention the improvement. Reorder alphabetically.

42 hours agomaint: remove redundant processing in a test
Pádraig Brady [Fri, 9 Jan 2026 14:25:24 +0000 (14:25 +0000)] 
maint: remove redundant processing in a test

* tests/misc/write-errors.sh: This was a no-op anyway
due to inadequate escaping.  Also document the escaping requirement.

42 hours agodu: promptly diagnose write errors
Pádraig Brady [Fri, 9 Jan 2026 14:20:56 +0000 (14:20 +0000)] 
du: promptly diagnose write errors

* src/du.c (print_size): Call write_error() if can't flush.
* tests/misc/write-errors.sh: Add a test case.
* NEWS: Mention the improvement.

42 hours agowc: promptly diagnose write errors
Pádraig Brady [Fri, 9 Jan 2026 14:16:04 +0000 (14:16 +0000)] 
wc: promptly diagnose write errors

* src/wc.c (write_counts): Call write_error() if any pending errors.
* tests/misc/write-errors.sh: Add a test case.
* NEWS: Mention the improvement.

2 days agoreadlink,realpath: promptly diagnose write errors
Collin Funk [Fri, 9 Jan 2026 06:52:33 +0000 (22:52 -0800)] 
readlink,realpath: promptly diagnose write errors

The 'readlink' and 'realpath' programs have an uncommon case where they
can run for a very long time. When canonicalizing file names longer than
PATH_MAX, we have to call 'openat' for each directory up the tree until
we reach root which takes a long time. Here is an example of the current
behavior:

    $ mkdir -p $(yes a/ | head -n $((32 * 1024)) | tr -d '\n')
    $ while cd $(yes a/ | head -n 1024 | tr -d '\n'); do :; \
        done 2>/dev/null
    $ pwd | tr '/' '\n' | wc -l
    32771
    $ env time --format=%E readlink -f $(yes . | head -n 5) > /dev/full
    readlink: write error: No space left on device
    Command exited with non-zero status 1
    0:59.72
    $ env time --format=%E realpath $(yes . | head -n 5) > /dev/full
    realpath: write error: No space left on device
    Command exited with non-zero status 1
    1:00.32

It is better to exit as soon as there is an error writing to standard
output:

    $ env time --format=%E readlink -f $(yes . | head -n 5) > /dev/full
    readlink: write error: No space left on device
    Command exited with non-zero status 1
    0:11.88
    $ env time --format=%E realpath $(yes . | head -n 5) > /dev/full
    realpath: write error: No space left on device
    Command exited with non-zero status 1
    0:12.04

* src/readlink.c (main): Check if standard output has it's error flag
set after printing a file name.
* src/realpath.c (process_path): Likewise.
* NEWS: Mention the improvement.

3 days agocksum: validate options more consistently
Pádraig Brady [Thu, 8 Jan 2026 14:07:32 +0000 (14:07 +0000)] 
cksum: validate options more consistently

We disallow `cksum --tag --check` which is fine,
but the error should be consistent with md5sum,
and less confusing, as it currently mentions
"--binary" and "--text" which weren't specified.

We disallow `cksum --tag --text` which is fine,
but we should also disallow `cksum --text --tag`.

We should honor an explicit --binary (output *)
with this combination of options:
cksum --binary --tag --untagged -a md5 /dev/null

Note this also makes both of `cksum -a md5` and
`cksum --tag -a md5` consistently use binary mode
when reading from a tty on systems like MinGW
where O_BINARY is set.

* src/cksum.c (main): Adjust --text,--binary
and --tag,--untagged option processing.
* tests/cksum/cksum-a.sh: Add test cases.
* tests/cksum/cksum-c.sh: Likewise.
* NEWS: Mention the improvement.
Fixes https://github.com/coreutils/coreutils/issues/163

3 days agotests: chmod: fix false failure in recent test
Pádraig Brady [Wed, 7 Jan 2026 22:50:07 +0000 (22:50 +0000)] 
tests: chmod: fix false failure in recent test

* tests/chmod/partial-fail.sh: Test readablility of mode 0 files
independently, to avoid false failure, e.g., when run as root.
Reported by Bruno Haible.

3 days agotests: tail/overlay-headers.sh: fix various issues
Pádraig Brady [Wed, 7 Jan 2026 20:29:54 +0000 (20:29 +0000)] 
tests: tail/overlay-headers.sh: fix various issues

* tests/tail/overlay-headers.sh (cleanup_): Ensure we send SIGCONT
to the tail process, otherwise we would hang if the test is terminated
while the tail process is in stopped state.
(wait4stopped_): A new function to ensure tail is in the stopped state
before we start writing to the monitored files.
Also remove "---disable-inotify" from $fastpoll so we actually
test the inotify code (where supported).
Also remove the timeout(1) wrapper, so we actually suspend tail(1).

Reported by Bruno Haible on macOS 26

3 days agofmt: interpret -w as an inclusive maximum
Pádraig Brady [Wed, 7 Jan 2026 17:15:28 +0000 (17:15 +0000)] 
fmt: interpret -w as an inclusive maximum

This aligns with `fold -w` and BSD `fmt` implementations.

* src/fmt.c (fmt_paragraph): Check len <= max_width.
* tests/fmt/width.sh: Add a new test.
* tests/local.mk: Reference the new test.
* NEWS: Mention the change in behavior.
Addresses part of https://bugs.gnu.org/79497

3 days agotests: date: test parenthesis comment handling
Sylvestre Ledru [Wed, 7 Jan 2026 22:51:06 +0000 (23:51 +0100)] 
tests: date: test parenthesis comment handling

* tests/date/date.pl: Add the check.

4 days agomaint: organize mktemp tests in a subdirectory
Collin Funk [Wed, 7 Jan 2026 02:47:21 +0000 (18:47 -0800)] 
maint: organize mktemp tests in a subdirectory

* tests/misc/mktemp.pl: Moved to tests/mktemp/mktemp.pl.
* tests/local.mk (all_tests): Adjust the file name.

4 days agotests: mktemp: add tests for invalid Unicode options
Collin Funk [Mon, 5 Jan 2026 00:51:09 +0000 (16:51 -0800)] 
tests: mktemp: add tests for invalid Unicode options

* init.cfg (bad_unicode): New function, copied from
tests/fold/fold-characters.sh with the NUL removed.
* tests/fold/fold-characters.sh (bad_unicode): Rename to
bad_unicode_with_nul. Reformat long line.
* tests/mktemp/bad-unicode.sh: New test.
* tests/local.mk (all_tests): Add the new test.

4 days agocopy: protect against infinite loop due to pathological race
Pádraig Brady [Mon, 5 Jan 2026 14:46:33 +0000 (14:46 +0000)] 
copy: protect against infinite loop due to pathological race

Consider:

1. In infer_scantype():
    - SEEK_DATA returns 0
      - hole punched at 0
    - SEEK_HOLE returns 0 (now a hole)
    - Cache scan_inference->hole_start = 0
2. In lseek_copy():
      - data written at 0
    - ext_start = 0, use cached hole_start = 0
    - ext_len = 0
    - now loop doesn't progress

* src/copy-file-data.c (lseek_copy): Apply a more defensive check
to ensure we only use the cached offsets in SCAN_INFERENCE once.
This protects against an infinite loop where an extent (at SRC_POS)
flip flops between data and hole extent while infer_scantype()
and lseek_copy() are inspecting it.  I.e. ensure we use SEEK_HOLE
to progress the copy.

4 days agotests: cp: fix always skipped nfs-removal-race.sh
Pádraig Brady [Tue, 6 Jan 2026 20:29:45 +0000 (20:29 +0000)] 
tests: cp: fix always skipped nfs-removal-race.sh

* tests/cp/nfs-removal-race.sh: This test was invalid since v8.32
as we now use fstatat() rather than stat().  Also since commit
v9.0-66-ge2daa8f79 we leverage the errno from open(O_DIRECTORY)
to avoid a stat, so pass --no-target-directory to ensure fstatat()
is called.
Discussed in https://github.com/coreutils/coreutils/pull/161

5 days agotests: cp: support glibc 2.33+ in nfs-removal-race test
Christopher Illarionova [Tue, 6 Jan 2026 04:07:49 +0000 (04:07 +0000)] 
tests: cp: support glibc 2.33+ in nfs-removal-race test

glibc 2.33 removed __xstat, making stat() a direct symbol. This test
previously only intercepted __xstat, causing it to skip on modern glibc
with 'LD_PRELOAD was ineffective'.

Changes:
- Intercept both __xstat (glibc < 2.33) and stat (glibc >= 2.33)
- Only mark 'preloaded' when stat is called on destination 'd',
  ensuring the test verifies cp actually stats the destination

5 days agodoc: tr: warn about shell quoting [:classes:]
Pádraig Brady [Tue, 6 Jan 2026 17:24:39 +0000 (17:24 +0000)] 
doc: tr: warn about shell quoting [:classes:]

* src/tr.c (usage): Warn about avoiding shell globbing.
* doc/coreutils.texi (character arrays): Likewise.
Suggested by Daniel Dallos.

5 days agoptx: implement -t to change default width to 100
Pádraig Brady [Mon, 5 Jan 2026 21:56:38 +0000 (21:56 +0000)] 
ptx: implement -t to change default width to 100

Align the -t implementation with the Heirloom project.

* src/ptx.c (usage): Describe -t, and also mention
the default width is 72 when not used.
* doc/coreutils.texi (ptx invocation): Likewise.
(main): Override the default width if -t is specified.
* tests/ptx/ptx.pl: Add test cases.
* NEWS: Mention the change in behavior.

6 days agotests: stty: add require_controlling_input_terminal_ to bad-speed test
Christopher Illarionova [Mon, 5 Jan 2026 16:54:00 +0000 (16:54 +0000)] 
tests: stty: add require_controlling_input_terminal_ to bad-speed test

The bad-speed test runs 'stty ispeed 9600' without a --file argument,
which requires a controlling terminal. Without it, stty fails early with
'Inappropriate ioctl for device' before reaching cfsetispeed, causing
the test to skip with a misleading 'LD_PRELOAD interception failed'
message.

* tests/stty/bad-speed.sh: Add require_controlling_input_terminal_
to match the other stty tests (stty.sh, stty-pairs.sh, stty-row-col.sh,
stty-invalid.sh) which all require a controlling terminal.
From https://github.com/coreutils/coreutils/pull/160

6 days agomaint: mknod: reduce variable scope
Collin Funk [Sun, 4 Jan 2026 21:47:01 +0000 (13:47 -0800)] 
maint: mknod: reduce variable scope

* src/mknod.c (main): Declare variables where they are used instead of
at the start of a block. Prefer signed integers to unsigned integers.

6 days agomaint: mkfifo: reduce variable scope
Collin Funk [Sun, 4 Jan 2026 21:46:41 +0000 (13:46 -0800)] 
maint: mkfifo: reduce variable scope

* src/mkfifo.c (main): Declare variables where they are used instead of
at the start of a block.

6 days agocopy: fix possible infinite loop with SEEK_HOLE
Pádraig Brady [Sun, 4 Jan 2026 12:45:46 +0000 (12:45 +0000)] 
copy: fix possible infinite loop with SEEK_HOLE

Commit v9.8-95-g4c0cf3864 intended to initialize
ext_start to src_pos, as was described at:
https://lists.gnu.org/r/coreutils/2025-11/msg00035.html
However ipos was inadvertently used, which is only
valid the first time through the loop.

* src/copy-file-data.c (lseek_copy): Use scan_inference->hole_start
only with the initial offset passed to lseek_copy().
* NEWS: Mention the bug fix.
Reported at https://github.com/coreutils/coreutils/issues/159

8 days agotests: chmod: ensure failure upon partial success
Pádraig Brady [Sat, 3 Jan 2026 14:45:07 +0000 (14:45 +0000)] 
tests: chmod: ensure failure upon partial success

* tests/chmod/partial-fail.sh: Add new test.
* tests/local.mk: Reference new test.
Discussed at https://github.com/uutils/coreutils/issues/9790

8 days agotests: split: ensure directories not replaced
oech3 [Thu, 1 Jan 2026 16:03:41 +0000 (01:03 +0900)] 
tests: split: ensure directories not replaced

* tests/split/split-io-err.sh: Add a test case.
From https://github.com/coreutils/coreutils/pull/158

8 days agodoc: NEWS: mention du performance improvement on the Lustre file system
Collin Funk [Sat, 3 Jan 2026 03:29:11 +0000 (19:29 -0800)] 
doc: NEWS: mention du performance improvement on the Lustre file system

Reported by Tim Day <timday@amazon.com> in
<https://bugs.gnu.org/80106>.

* NEWS: Mention the improvement after gnulib commit 578b8d7dc5.

9 days agobuild: update gnulib submodule to latest
Collin Funk [Fri, 2 Jan 2026 04:43:17 +0000 (20:43 -0800)] 
build: update gnulib submodule to latest

* bootstrap: Update using './bootstrap --bootstrap-sync'.
* tests/sample-test: Adjust to use the single most recent year.

9 days agomaint: prefer c_isblank to an equivalent macro
Collin Funk [Fri, 2 Jan 2026 01:18:13 +0000 (17:18 -0800)] 
maint: prefer c_isblank to an equivalent macro

* src/cksum.c (ISWHITE): Remove macro.
(bsd_split_3, algorithm_from_tag, split_3): Use c_isblank instead of
ISWHITE.

9 days agotests: df: don't depend on bash
Collin Funk [Thu, 1 Jan 2026 19:15:31 +0000 (11:15 -0800)] 
tests: df: don't depend on bash

* tests/df/no-mtab-status-masked-proc.sh: Invoke $SHELL instead of
'bash'.

10 days agomaint: run 'make update-copyright'
Collin Funk [Thu, 1 Jan 2026 18:56:16 +0000 (10:56 -0800)] 
maint: run 'make update-copyright'

10 days agotests: mv: check broken symlink cross-filesystem move
Sylvestre Ledru [Thu, 1 Jan 2026 12:20:52 +0000 (13:20 +0100)] 
tests: mv: check broken symlink cross-filesystem move

Identified here:
<https://github.com/uutils/coreutils/issues/8586>

* tests/mv/mv-special-2.sh: Add the check.

10 days agotests: df: hide /proc without using LD_PRELOAD
oech3 [Tue, 30 Dec 2025 12:03:11 +0000 (21:03 +0900)] 
tests: df: hide /proc without using LD_PRELOAD

* tests/df/no-mtab-status-masked-proc.sh: A new test similar
to no-mtab-status.sh but should work with static builds.
* tests/local.mk: Reference the new test.
https://github.com/coreutils/coreutils/pull/156

10 days agotests: add LD_PRELOAD free alternative for nproc-quota.sh
oech3 [Tue, 30 Dec 2025 06:53:31 +0000 (15:53 +0900)] 
tests: add LD_PRELOAD free alternative for nproc-quota.sh

* tests/nproc/nproc-quota-systemd.sh: Add a new root test.
* tests/local.mk: Reference the new test.

10 days agotests: extend csplit-io-err.sh for directory
oech3 [Thu, 1 Jan 2026 04:45:30 +0000 (13:45 +0900)] 
tests: extend csplit-io-err.sh for directory

* tests/csplit/csplit-io-err.sh: Add a test case
to ensure a directory is _not_ replaced.

11 days agotests: du: check -l (--count-links) without -a flag
Sylvestre Ledru [Tue, 30 Dec 2025 23:14:59 +0000 (00:14 +0100)] 
tests: du: check -l (--count-links) without -a flag

Identified here:
<https://github.com/uutils/coreutils/issues/9871>

* tests/du/hard-link.sh: Add the check.

12 days agotests: env: check that real-time signals can be ignored
Collin Funk [Mon, 29 Dec 2025 03:48:29 +0000 (19:48 -0800)] 
tests: env: check that real-time signals can be ignored

* tests/env/env-signal-handler.sh: Test that --ignore-signal with no
options also ignores real-time signals. Test that real-time signals can
be ignored by explicitly listing them.

2 weeks agotests: kill: check that real-time signals are listed
Collin Funk [Sun, 28 Dec 2025 05:48:42 +0000 (21:48 -0800)] 
tests: kill: check that real-time signals are listed

* tests/misc/kill.sh: Call getlimits_. Check for RTMIN and RTMAX in the
output of 'kill -l' if the system defines SIGRTMIN and SIGRTMAX.

2 weeks agogetlimits: print SIGRTMIN and SIGRTMAX
Collin Funk [Sat, 27 Dec 2025 01:52:58 +0000 (17:52 -0800)] 
getlimits: print SIGRTMIN and SIGRTMAX

* src/getlimits.c (SIGRTMIN): Define to zero if signal.h does not define
this constant.
(SIGRTMAX): Define to SIGRTMIN - 1 if signal.h does not define this
constant.
(main): Print SIGRTMIN and SIGRTMAX.

2 weeks agomaint: commit-msg: add 'getlimits' as a supported tag
Collin Funk [Sat, 27 Dec 2025 01:49:39 +0000 (17:49 -0800)] 
maint: commit-msg: add 'getlimits' as a supported tag

* scripts/git-hooks/commit-msg (@valid): Add getlimits.

2 weeks agotests: split: verify operation in the presence of I/O errors
oech3 [Sat, 27 Dec 2025 13:57:30 +0000 (22:57 +0900)] 
tests: split: verify operation in the presence of I/O errors

* tests/split/split-io-err.sh: A new test to verify that with I/O
errors, we leave existing files but don't continue.
* tests/local.mk: Reference the new test.

2 weeks agotests: check I/O error handling with /dev/full and closed pipes
Pádraig Brady [Sat, 27 Dec 2025 16:28:55 +0000 (16:28 +0000)] 
tests: check I/O error handling with /dev/full and closed pipes

* tests/misc/io-errors.sh: Verify that all commands diagnose write
errors, and handle a closed pipe appropriately.
* tests/local.mk: Reference the new test.

2 weeks agosort: fix SIGPIPE handling
Pádraig Brady [Sat, 27 Dec 2025 15:48:42 +0000 (15:48 +0000)] 
sort: fix SIGPIPE handling

* src/sort.c (main): Don't override handler for SIGPIPE
(which we did since commit v9.9-34-ge63131b32),
since we've explicit handling for SIGPIPE.
Also move ignoring of SIGPIPE until after
--help and --version are processed.

2 weeks agotests: consolidate csplit-io-err tests
oech3 [Sat, 27 Dec 2025 12:45:31 +0000 (12:45 +0000)] 
tests: consolidate csplit-io-err tests

* tests/csplit/csplit-io-err.sh: Replace this LD_PRELOAD test with...
* tests/csplit/csplit-io-err-2.sh: This more general test,
that leverages /dev/full.
* tests/local.mk: Remove tests/csplit/csplit-io-err-2.sh.

2 weeks agotests: csplit: check writing to /dev/full
oech3 [Fri, 26 Dec 2025 12:24:00 +0000 (21:24 +0900)] 
tests: csplit: check writing to /dev/full

* tests/csplit/csplit-io-err-2.sh: Add a new test.
* tests/local.mk: Reference new test.

2 weeks agodd: don't continue copying when ftruncate fails using seek= and of=
Collin Funk [Wed, 24 Dec 2025 05:45:37 +0000 (21:45 -0800)] 
dd: don't continue copying when ftruncate fails using seek= and of=

* src/dd.c (main): Reduce the scope of exit_status. Exit immediately if
ftruncate fails.
* tests/dd/fail-ftruncate-fstat.sh: New test.
* tests/local.mk (all_tests): Add the new test.
* NEWS: Mention the bug fix.

2 weeks agodoc: document the date(1) bug with empty format directives
Pádraig Brady [Thu, 25 Dec 2025 14:30:01 +0000 (14:30 +0000)] 
doc: document the date(1) bug with empty format directives

* NEWS: Mention the bug fix.

2 weeks agobuild: update gnulib to latest
Pádraig Brady [Thu, 25 Dec 2025 14:25:58 +0000 (14:25 +0000)] 
build: update gnulib to latest

2 weeks agotests: date: improve locale tests
Collin Funk [Wed, 24 Dec 2025 04:03:49 +0000 (20:03 -0800)] 
tests: date: improve locale tests

* tests/date/date-locale-hour.sh: Test that the default format of 10
random supported locales is the same as 'locale date_fmt'.

2 weeks agotests: avoid false failure due to ulimit on aarch64
Pádraig Brady [Mon, 22 Dec 2025 17:12:48 +0000 (17:12 +0000)] 
tests: avoid false failure due to ulimit on aarch64

* tests/cut/cut-huge-range.sh: Add an extra 1MiB headroom,
which was seen with aarch64.
Reported at https://bugzilla.redhat.com/2424302

2 weeks agomaint: tests/cut/cut-huge-range.sh: remove stale comment
Pádraig Brady [Mon, 22 Dec 2025 15:24:07 +0000 (15:24 +0000)] 
maint: tests/cut/cut-huge-range.sh: remove stale comment

* tests/cut/cut-huge-range.sh: expr supports bignums,
so remove stale comment relating to previous non expr adjustment.

2 weeks agonumfmt: fix dropped custom suffix when failing to parse
Pádraig Brady [Mon, 22 Dec 2025 13:14:57 +0000 (13:14 +0000)] 
numfmt: fix dropped custom suffix when failing to parse

* src/numfmt.c (process_suffixed_number): Restore custom suffix
upon failure to parse number.
* tests/numfmt/numfmt.pl: Add test cases.
* NEWS: Mention the bug fix.
Fixes https://bugs.debian.org/1094581

3 weeks agomaint: prefer enums over macros for sources used for multiple programs
Collin Funk [Sun, 21 Dec 2025 01:24:17 +0000 (17:24 -0800)] 
maint: prefer enums over macros for sources used for multiple programs

* src/chown.h (enum chown_modes): New type.
(CHOWN_CHOWN, CHOWN_CHGRP): Define as an enum instead of a macro.
* src/chown-chgrp.c (chown_mode): Use "enum chown_modes" instead of
"int".
* src/chown-chown.c (chown_mode): Likewise.
* src/ls.h (enum ls_modes): New type.
(LS_LS, LS_MULTI_COL, LS_LONG_FORMAT): Define as an enum instead of a
macro.
* src/ls-dir.c (ls_mode): Use "enum ls_modes" instead of "int".
* src/ls-ls.c (ls_mode): Likewise.
* src/ls-vdir.c (ls_mode): Likewise.
* src/uname.h (enum uname_modes): New type.
(UNAME_UNAME, UNAME_ARCH): Define as an enum instead of a macro.
* src/uname-arch.c (uname_mode): Use "enum uname_modes" instead of
"int".
* src/uname-uname.c (uname_mode): Likewise.

3 weeks agodoc: prefer UTF-8 characters in texinfo sources
Collin Funk [Sat, 20 Dec 2025 04:38:01 +0000 (20:38 -0800)] 
doc: prefer UTF-8 characters in texinfo sources

* doc/coreutils.texi (Introduction): Use ç instead of @,{c}.
(Character arrays): Use ö instead of @"o. Use Ł instead of @L{}.
(Formatting file timestamps): Use ä instead of @"a.

3 weeks agodoc: ls: fix recent typo for -F option in texinfo
Pádraig Brady [Sat, 20 Dec 2025 17:26:59 +0000 (17:26 +0000)] 
doc: ls: fix recent typo for -F option in texinfo

* doc/coreutils.texi (ls invocation): Add a missing hyphen
that was inadvertently dropped in the recent adjustments.

3 weeks agotests: runcon: avoid false success
Pádraig Brady [Sat, 20 Dec 2025 13:16:11 +0000 (13:16 +0000)] 
tests: runcon: avoid false success

* tests/runcon/runcon-compute.sh: Ensure runcon runs,
since the main test is a negative one.

3 weeks agodoc: split,tac: document $TMPDIR usage
Pádraig Brady [Thu, 18 Dec 2025 23:54:52 +0000 (23:54 +0000)] 
doc: split,tac: document $TMPDIR usage

Following commit v9.3-92-g1b86b70dd
$TMPDIR is part of the interface and an important behavioral
characteristic of a command, which should be documented.

* doc/coreutils.texi (split invocation): Mention $TMPDIR is honored.
(tac invocation): Likewise.
* src/split.c (usage): Likewise.
* src/tac.c (usage): Likewise.

3 weeks agodoc: tee: prefer cksum in examples
Collin Funk [Wed, 17 Dec 2025 06:15:26 +0000 (22:15 -0800)] 
doc: tee: prefer cksum in examples

* doc/coreutils.texi (tee invocation): Use 'cksum' with '-a sha2' and
'-a sha3' instead of md5sum and sha1sum in examples.

3 weeks agotests: mv: check moving named sockets is supported
Pádraig Brady [Tue, 16 Dec 2025 11:33:38 +0000 (11:33 +0000)] 
tests: mv: check moving named sockets is supported

* tests/mv/mv-special-2.sh: Use python to create a named socket,
and ensure it's copied across file systems.

3 weeks agotests: date: add another locale test case
Collin Funk [Sun, 14 Dec 2025 20:37:41 +0000 (12:37 -0800)] 
tests: date: add another locale test case

On a GNU/Linux system, we have the following:

    $ LC_ALL=en_US.UTF-8 date -u -d 1:00
    Sun Dec 14 01:00:00 AM UTC 2025
    $ LC_ALL=en_US.UTF-8 locale date_fmt
    %a %b %e %r %Z %Y
    $ LC_ALL=en_US.UTF-8 locale t_fmt_ampm
    %I:%M:%S %p

    $ LC_ALL=nl_NL.UTF-8 date -u -d 1:00
    zo 14 dec 2025  1:00:00 UTC
    $ LC_ALL=nl_NL.UTF-8 locale date_fmt
    %a %e %b %Y %k:%M:%S %Z

We respect the locales preference for a leading zero or leading space in
single digit hours.

* tests/date/date-locale-hour.sh: Check that the locales preference for
leading zeros or spaces in single digit hours is used.

3 weeks agotests: mv: check traversed fifos copy correctly
Pádraig Brady [Mon, 15 Dec 2025 15:30:43 +0000 (15:30 +0000)] 
tests: mv: check traversed fifos copy correctly

* tests/mv/mv-special-1.sh: Add a case also for fifos
encountered when traversing.

3 weeks agotests: mv: add timeout protection when moving fifos
Pádraig Brady [Mon, 15 Dec 2025 13:51:05 +0000 (13:51 +0000)] 
tests: mv: add timeout protection when moving fifos

* tests/mv/mv-special-1.sh: Implementations could potentially hang
interacting with fifos, so wrap with timeout.

4 weeks agodoc: dd: document the behavior of conv flags on multibyte characters
Collin Funk [Sat, 13 Dec 2025 07:11:09 +0000 (23:11 -0800)] 
doc: dd: document the behavior of conv flags on multibyte characters

* doc/coreutils.texi (dd invocation): Document the behavior of 'dd' on
multibyte characters and some unspecified behavior that will be
documented in a future POSIX release [1].

[1] https://austingroupbugs.net/view.php?id=1959

4 weeks agotests: ls: use a larger file descriptor limit
Collin Funk [Sat, 13 Dec 2025 05:51:30 +0000 (21:51 -0800)] 
tests: ls: use a larger file descriptor limit

OpenBSD and Alpine Linux /bin/sh cannot handle a file descriptor limit
of 7.

* tests/ls/recursive.sh: Create 30 directories and use a file descriptor
limit of 20. Don't check the output since we have coverage for that
elsewhere.
Reported by Bruno Haible.

4 weeks agobuild: reduce size of multi-call binary by reusing cksum logic
Pádraig Brady [Sat, 6 Dec 2025 13:47:11 +0000 (13:47 +0000)] 
build: reduce size of multi-call binary by reusing cksum logic

Map md5sum and sha{1,224,256,385,512} to use cksum logic,
which selects appropriate behavior at runtime, rather than
separate binaries for each closely related utility.

$ size src/coreutils  # before
   text    data     bss     dec     hex filename
1349509    6812  619312 1975633  1e2551 src/coreutils
$ size src/coreutils  # after
   text    data     bss     dec     hex filename
1306933    6748  619152 1932833  1d7e21 src/coreutils

* build-aux/gen-single-binary.sh: Map sha*sum to use cksum.c
* src/cksum.c: Adjust to behave more like sha*sum,
when the algorithm to something other than "crc".
* src/cksum.h: Expose the cksum_algorithm global and enum.
* src/coreutils-md5sum.c: Set cksum_algorithm and call cksum logic.
* src/coreutils-sha1sum.c: Likewise.
* src/coreutils-sha224sum.c Likewise.
* src/coreutils-sha256sum.c Likewise.
* src/coreutils-sha384sum.c Likewise.
* src/coreutils-sha512sum.c Likewise.
* NEWS: Mention the improvement.

4 weeks agodoc: expand on shell-escape quoting style
Pádraig Brady [Fri, 12 Dec 2025 16:41:36 +0000 (16:41 +0000)] 
doc: expand on shell-escape quoting style

* doc/coreutils.texi (quotingStyles): Expand on the advantages
of "shell-escape" quoting, and mention it's the default when
outputting to a tty. Also mention how it's also useful with
LC_ALL=C to further disambiguate output.  Also reference the
separate page detailing various considerations and options
for file name quoting.  Also move the mention of the default
quoting style to the top of the page where it's more obvious.

4 weeks agotests: printf: add case for quoting single quotes
Pádraig Brady [Fri, 12 Dec 2025 14:15:58 +0000 (14:15 +0000)] 
tests: printf: add case for quoting single quotes

* tests/printf/printf-quote.sh: Add a test case for
https://bugs.debian.org/992161 which was fixed with
gnulib commit v0.1-7339-g07b31a9465

4 weeks agomaint: organize tee tests in a subdirectory
Collin Funk [Thu, 11 Dec 2025 04:08:01 +0000 (20:08 -0800)] 
maint: organize tee tests in a subdirectory

* tests/misc/tee.sh: Moved to tests/tee/tee.sh.
* tests/local.mk (all_tests): Adjust the file name.

4 weeks agotests: tee: add a test for --append
Collin Funk [Thu, 11 Dec 2025 04:05:58 +0000 (20:05 -0800)] 
tests: tee: add a test for --append

* tests/tee/append.sh: New file.
* tests/local.mk (all_tests): Add the test.

4 weeks agotests: fix recent portability issue with printf
Pádraig Brady [Thu, 11 Dec 2025 22:02:55 +0000 (22:02 +0000)] 
tests: fix recent portability issue with printf

* tests/sort/sort-locale.sh: Avoid non portable printf \u....
* cfg.mk (sc_env_printf): Add a new syntax check to flag future cases.

4 weeks agotests: env: ensure non-utf8 name or value is supported
Pádraig Brady [Thu, 11 Dec 2025 21:19:19 +0000 (21:19 +0000)] 
tests: env: ensure non-utf8 name or value is supported

* tests/env/env.sh: Add a test case ensuring non-utf8 characters
in the name or value are supported.

4 weeks agotests: mv: ensure ownership preserved when copying
Pádraig Brady [Thu, 11 Dec 2025 20:17:20 +0000 (20:17 +0000)] 
tests: mv: ensure ownership preserved when copying

* tests/mv/meta-to-xpart.sh: Add new test.
* tests/local.mk: Reference new test.

4 weeks agomaint: groups: reduce variable scope
Collin Funk [Wed, 10 Dec 2025 05:48:50 +0000 (21:48 -0800)] 
maint: groups: reduce variable scope

* src/groups.c (main): Declare variables where they are used instead of
at the start of the function. Convert a comment to GNU style.

4 weeks agomaint: printenv: reduce variable scope
Collin Funk [Wed, 10 Dec 2025 05:45:26 +0000 (21:45 -0800)] 
maint: printenv: reduce variable scope

* src/printenv.c (main): Declare variables where they are used instead
of at the start of the function. Constify some strings we do not modify.

4 weeks agomaint: rmdir: reduce variable scope
Collin Funk [Wed, 10 Dec 2025 05:43:11 +0000 (21:43 -0800)] 
maint: rmdir: reduce variable scope

* src/rmdir.c (remove_parents, main): Declare variables where they are
used instead of at the start of a block.

4 weeks agomaint: date: reduce variable scope
Collin Funk [Wed, 10 Dec 2025 05:37:50 +0000 (21:37 -0800)] 
maint: date: reduce variable scope

* src/date.c (batch_convert, main): Declare variables where they are
used instead of at the start of the function.

4 weeks agomaint: install: reduce variable scope
Collin Funk [Wed, 10 Dec 2025 05:13:10 +0000 (21:13 -0800)] 
maint: install: reduce variable scope

* src/install.c (change_timestamps): Initialize variables where they are
declared.
(need_copy, setdefaultfilecon, get_ids, mkancesdirs_safe_wd, main):
Declare variables where they are used instead of at the start of the
block.

4 weeks agomaint: cp: reduce variable scope
Collin Funk [Wed, 10 Dec 2025 05:05:22 +0000 (21:05 -0800)] 
maint: cp: reduce variable scope

* src/cp.c (re_protect): Initialize variables where they are declared.
(make_dir_parents_private, do_copy, main): Declare variables where they
are used instead of at the start of the block.

4 weeks agomaint: mv: reduce variable scope
Collin Funk [Wed, 10 Dec 2025 04:45:51 +0000 (20:45 -0800)] 
maint: mv: reduce variable scope

* src/mv.c (do_move, main): Declare variables where they are used
instead of at the start of a block.

4 weeks agotests: env: add a test for --ignore-signal=PIPE
Pádraig Brady [Wed, 10 Dec 2025 22:41:42 +0000 (22:41 +0000)] 
tests: env: add a test for --ignore-signal=PIPE

* tests/env/env-signal-handler.sh: Add a test for this
oft interfered with signal.

4 weeks agodoc: support html post processing in all cases
Pádraig Brady [Tue, 9 Dec 2025 17:07:13 +0000 (17:07 +0000)] 
doc: support html post processing in all cases

Previously the html-local make rule only worked for `make html`.
Instead add support for `make doc/coreutils.html` or `make web-manual`
through the use of a makeinfo wrapper.

* doc/local.mk: Move post processing from here to ...
* build-aux/makeinfo-wrapper.sh: ... here.
* cfg.mk: Ensure our wrapper is called with MAKEINFO.
Also pass --no-node-files so redirection html files
are not created for each anchor.

4 weeks agodoc: printf: mention how to print arguments starting with '-'
Collin Funk [Tue, 9 Dec 2025 04:15:07 +0000 (20:15 -0800)] 
doc: printf: mention how to print arguments starting with '-'

* doc/coreutils.texi (printDash): New macro.
(printf invocation, yes invocation): Use it.
Addresses https://bugs.gnu.org/79896

4 weeks agodoc: fix stale linuxjournal.com link
Pádraig Brady [Tue, 9 Dec 2025 14:10:58 +0000 (14:10 +0000)] 
doc: fix stale linuxjournal.com link

* doc/coreutils.texi: Update to working link.
Fixes https://bugs.gnu.org/79973

4 weeks agodoc: html: fix build with parallel make
Collin Funk [Tue, 9 Dec 2025 13:17:33 +0000 (13:17 +0000)] 
doc: html: fix build with parallel make

* doc/local.mk (html-local): Add html files to prerequisites so they are
generated before 'sed' is invoked.  Also interate over the already
populated $(HTMLS) to be more general (to multiple html files),
and more portable (to non GNU make).

4 weeks agotests: fix non-portable use of printf '\x..'
Pádraig Brady [Mon, 8 Dec 2025 22:32:48 +0000 (22:32 +0000)] 
tests: fix non-portable use of printf '\x..'

* tests/dd/conv-case.sh: Use octal instead.
* tests/ls/hyperlink.sh: Likewise.
* tests/sort/sort-locale.sh: Likewise.

4 weeks agodoc: fix pdf generation
Pádraig Brady [Mon, 8 Dec 2025 14:15:00 +0000 (14:15 +0000)] 
doc: fix pdf generation

* doc/coreutils.texi: Explicitly supply empty arguments to macros,
as dvi (a required prerequisite to pdf) is more strict in its
handling of macro arguments.
* cfg.mk (sc_texi_ensure_empty_option_args): Add a syntax check,
since this is not verified in the default build.
Reported by Collin Funk.

4 weeks agomaint: env: reduce variable scope
Collin Funk [Sun, 7 Dec 2025 23:48:15 +0000 (15:48 -0800)] 
maint: env: reduce variable scope

* src/env.c (extract_varname, parse_signal_action_params)
(parse_block_signal_params, set_signal_proc_mask)
(list_signal_handling, main): Declare variables where they are used
instead of at the start of the function.

4 weeks agomaint: nohup: reduce variable scope
Collin Funk [Sun, 7 Dec 2025 23:47:24 +0000 (15:47 -0800)] 
maint: nohup: reduce variable scope

* src/nohup.c (main): Declare variables where they are used instead of
at the start of the function.

4 weeks agomaint: sync: reduce variable scope
Collin Funk [Sun, 7 Dec 2025 23:35:48 +0000 (15:35 -0800)] 
maint: sync: reduce variable scope

* src/sync.c (sync_arg, main): Declare variables where they are used
instead of at the start of the function.

4 weeks agomaint: pwd: reduce variable scope
Collin Funk [Sun, 7 Dec 2025 23:27:29 +0000 (15:27 -0800)] 
maint: pwd: reduce variable scope

* src/pwd.c (find_dir_entry, robust_getcwd): Declare variables where
they are used.
(logical_getcwd, main): Likewise. Constify the result of getenv, since
the result cannot be modified.

4 weeks agomaint: dirname: reduce variable scope
Collin Funk [Sun, 7 Dec 2025 23:17:21 +0000 (15:17 -0800)] 
maint: dirname: reduce variable scope

* src/dirname.c (main): Declare variables where they are used instead of
at the start of the function. Prefer idx_t to size_t.

4 weeks agomaint: hostid: reduce variable scope
Collin Funk [Sun, 7 Dec 2025 23:11:55 +0000 (15:11 -0800)] 
maint: hostid: reduce variable scope

* src/hostid.c (main): Declare variables where they are used instead of
at the start of the function.

4 weeks agomaint: nproc: reduce variable scope
Collin Funk [Sun, 7 Dec 2025 23:06:24 +0000 (15:06 -0800)] 
maint: nproc: reduce variable scope

* src/nproc.c (main): Declare variables where they are used instead of
at the start of the function.

4 weeks agomaint: whoami: reduce variable scope
Collin Funk [Sun, 7 Dec 2025 23:03:00 +0000 (15:03 -0800)] 
maint: whoami: reduce variable scope

* src/whoami.c (main): Declare variables where they are used instead of
at the start of the function.

4 weeks agomaint: logname: reduce variable scope
Collin Funk [Sun, 7 Dec 2025 22:59:19 +0000 (14:59 -0800)] 
maint: logname: reduce variable scope

* src/logname.c (main): Declare variables where they are used instead of
at the start of the function.

4 weeks agomaint: basename: initialize values while declaring
Collin Funk [Sun, 7 Dec 2025 22:55:18 +0000 (14:55 -0800)] 
maint: basename: initialize values while declaring

* src/basename.c (remove_suffix): Initialize values on the same line as
their declarations.

5 weeks agoshred: use gethrxtime instead of time
Collin Funk [Sun, 7 Dec 2025 01:19:55 +0000 (17:19 -0800)] 
shred: use gethrxtime instead of time

The gethrxtime function uses a monotonic clock if available on the
system. The effect should be unnoticeable since we print --verbose
information every 5 seconds, but is more correct and we already do the
same in 'dd'.

* src/local.mk (src_shred_LDADD): Add $(GETHRXTIME_LIB).
* src/shred.c (dopass): Use xtime_t instead of time_t. Use gethrxtime
instead of time.