1
0
mirror of https://git.savannah.gnu.org/git/coreutils.git synced 2026-10-24 02:08:57 +03:00

31461 Commits

Author SHA1 Message Date
Pádraig Brady
c01fd163a4 version 9.11
* NEWS: Record release date.
v9.11
2026-04-20 13:41:57 +01:00
Paul Eggert
271d3ff5f9 doc: NEWS item for who systemd fix 2026-04-19 11:50:56 -07:00
Paul Eggert
d5b22329c7 build: update gnulib submodule to latest 2026-04-19 11:50:56 -07:00
Pádraig Brady
3cbe0491ba yes: make operation independent of pipe size
* src/yes.c (splice_write): Always drain what we've written
to an internal pipe, so there is no possibility of vmsplice() blocking.
I.e., be defensive in the case that fcntl() fails, and
our default buffer size (currently 16kiB) is larger than the pipe.
https://github.com/coreutils/coreutils/issues/253
2026-04-17 16:15:08 +01:00
Bruno Haible
46f856156f tests: reinstate logname error verification
* tests/misc/user.sh: Modify the "unshare -U logname" test, so that it
does not fail on glibc versions (< 2.28, >= 2.38) that do a fallback
lookup based on the tty.
2026-04-17 16:15:08 +01:00
Pádraig Brady
15211db43f tests: fix false failure with dash
* tests/date/date-locale-hour.sh: Just strip the char before the last x,
assuming it's going to be the newline output by `locale`.
dash doesn't support $'' within ${}.
2026-04-17 13:24:46 +01:00
Collin Funk
53533c746b build: update gnulib submodule to latest 2026-04-16 22:25:36 -07:00
Collin Funk
70293149b5 tests: Avoid accidental matching of the vendor field of $host, part 2
* tests/local.mk (TESTS_ENVIRONMENT): Remove host_triplet.
* tests/chgrp/basic.sh: Use $host_os instead of $host_triplet.
* tests/misc/io-errors.sh: Likewise.
2026-04-16 21:16:08 -07:00
Collin Funk
8cefb65e12 tests: mktemp: test the behavior when writing to standard output fails
* tests/mktemp/write-error.sh: New file.
* tests/local.mk (all_tests): Add the test.
2026-04-16 20:05:36 -07:00
Pádraig Brady
27a7ca5a73 build: update gnulib to latest 2026-04-16 22:22:41 +01:00
Collin Funk
1603c75d74 tests: avoid a failure on musl
* tests/misc/io-errors.sh: Allow a generic error string on musl since
the first line is emitted immediately instead of being buffered as
expected.
Reported by Bruno Haible.
2026-04-16 22:20:49 +01:00
Pádraig Brady
5597a275c2 build: fix build failure on AIX
* m4/jm-macros.m4: AIX has a splice() function for TCP,
so check for vmsplice() instead.
* src/splice.h: Define HAVE_SPLICE if vmsplice available.
Reported by Bruno Haible.
2026-04-16 22:05:13 +01:00
Pádraig Brady
1c1ccadf66 test: avoid false failure on OpenBSD
* tests/numfmt/numfmt.pl: Use standard getopt error map,
needed on OpenBSD.
Reported by Bruno Haible.
2026-04-16 21:41:40 +01:00
Pádraig Brady
54e9fcb640 tests: avoid false failure with hidden /proc on Guix
* tests/stat/stat-mount.sh: Don't try our stat under unshare
unless mount(8) exits gracefully.
Reported by Bruno Haible.
2026-04-16 21:28:44 +01:00
Pádraig Brady
04c77e27a7 tests: avoid failure on Manjaro Linux
* tests/misc/user.sh: Comment out part of test.
Reported by Bruno Haible.
2026-04-16 21:07:46 +01:00
Pádraig Brady
852c056889 cksum: fix --length validation on 32 bit platforms
Fix an unreleased issue due to the recent change
to using idx_t in commit v9.10-91-g02983e493

* src/cksum.c (main): Limit the possible return to
the range supported by idx_t.
Reported by Bruno Haible.
2026-04-16 20:40:34 +01:00
Pádraig Brady
0b7d8620f7 tests: fix false failure due to ulimit usage
* tests/dd/no-allocate.sh: Run getlimits_ to ensure
we have $SSIZE_MAX etc. available.  Also give some buffer
for the configured ulimit to leave space for returns_ to work.
2026-04-16 19:03:13 +01:00
Pádraig Brady
ad4a9fb82a tests: avoid failure on older Centos 7
* tests/cp/sparse-perf.sh: Old Centos 7 can give EINVAL
from SEEK_DATA on sparse files being copied from /dev/shm.
Avoid this failure as it's not practical to fix.
2026-04-16 18:35:26 +01:00
Pádraig Brady
e245adbbc7 tests: fix false failure on Centos 7
* tests/date/date-locale-hour.sh: Ensure `locale date_fmt`
is propagated exactly, even when it contains trailing new lines,
as was seen with Serbian locales on Centos 7.
2026-04-16 17:44:05 +01:00
Pádraig Brady
a8598bb25e build: update gnulib to latest 2026-04-15 16:20:07 +01:00
Pádraig Brady
bc79ba83ac tests: avoid intermittent false failures with ksh
As noted in https://bugs.gnu.org/9089
ksh gives intermittent ECONNRESET errors with closed pipes.
This can be seen reliably on Linux with:
ksh -c 'yes | (sleep .1; head -n10 >/dev/null)'

* tests/misc/io-errors.sh: Avoid part of test on ksh.
* tests/misc/write-errors.sh: Likewise.
2026-04-15 15:34:19 +01:00
Pádraig Brady
cb093b20db tests: use more accurate ulimit with $SHELL -c
* tests/misc/write-errors.sh: Use a more accurate ulimit determination
when we're using $SHELL -c.
2026-04-15 15:24:26 +01:00
Pádraig Brady
d58ea74d01 tests: avoid $SHELL -c "ulimit ..." pattern
As described in commit v9.10-283-g5cb0cca3b
avoid using ulimit with $SHELL -c, and explict
invocation of the shell like that can require lots of memory,
often due to loading the locale archive.
* tests/basenc/bounded-memory.sh: Avoid $SHELL -c with ulimit.
* tests/cut/bounded-memory.sh: Likewise.
* tests/expand/bounded-memory.sh Likewise.
* tests/pr/bounded-memory.sh Likewise.
* tests/unexpand/bounded-memory.sh Likewise.
* tests/fold/fold-zero-width.sh: Bring the ulimit bound
down to the standard 6M over the determined limit.
2026-04-15 15:08:27 +01:00
Pádraig Brady
49febd6cbd tests: fix false failure due to race
* tests/misc/tty-eof.pl: Fix a race that commit v9.10-269-gf312af49a
made more apparent, and resulted in intermittent failure like:
"... (with input) didn't produce expected output".
Now Instead of waiting for overlapping echo and output,
just wait for EOF, and if received, use exp->before()
to inspect the accumulated output.
2026-04-15 13:40:13 +01:00
Lukáš Zaoral
f6fda635bd df: improve detection of duplicate entries
Do not compare only with the latest entry for given device id but also
all previously saved entries with the same id.

* src/df.c (struct devlist): Add next_same_dev struct member.
(filter_mount_list): Iterate over next_same_dev to find duplicates.
* tests/df/skip-duplicates.sh: Add test cases.
* NEWS: Mention the improvement.
https://redhat.atlassian.net/browse/RHEL-5649
2026-04-15 12:56:16 +01:00
Pádraig Brady
5cb0cca3b8 tests: fix false failure under some shells
Verified with:
  make -j4 PREFERABLY_POSIX_SHELL=/bin/ksh SUBDIRS=. check

* tests/fold/fold-zero-width.sh: Don't timeout $SHELL -c ...
as the ulimit induces a failure in the subshell depending
on the order of the allocations it does.  The main issue is
disparity between the probed ulimit and that needed by $SHELL -c.
Such subshells load the often very large locale archive, thus
if there are any allocations done after the now too low ulimit is set,
then the $SHELL command fails. Note we timeout fold rather than
the whole pipeline so any 124 exit status is propagated.
2026-04-12 11:41:31 +01:00
Pádraig Brady
5dec936897 tests: validate error handling when reading multiple files
* tests/misc/read-errors.sh: Validate that commands which read multiple
files, read all files on error, and exit with appropriate status.
2026-04-11 22:43:33 +01:00
Collin Funk
79a6da3be7 mktemp: prefer rmdir and unlink to remove
This avoids the following behavior:

    $ strace -e silence=exit -e trace=unlink,rmdir \
        mktemp -d > /dev/full
    unlink("/tmp/tmp.ZBuPmS9ZGD") = -1 EISDIR (Is a directory)
    rmdir("/tmp/tmp.ZBuPmS9ZGD")  = 0
    mktemp: write error: No space left on device

In the above invocation we know that we created a directory, so we
should not remove a regular file that must have been created by another
process:

    $ strace -e silence=exit -e trace=unlink,rmdir \
        ./src/mktemp -d > /dev/full
    rmdir("/tmp/tmp.hGbME1HmJr") = 0
    mktemp: write error: No space left on device

* src/mktemp.c (main): Prefer rmdir and unlink depending on whether we
created a directory or regular file.
* bootstrap.conf (gnulib_modules): Remove the remove module.
2026-04-11 09:58:13 -07:00
Collin Funk
9a3479f1ea cat: avoid redundant pipe creation and resizing
* src/cat.c (splice_cat): Don't bother resizing input as it generally
doesn't help perf, and also save an fstat per input. Don't close the
intermediate pipe once created, unless there is an error reading from
it.

Co-authored-by: Pádraig Brady <P@draigBrady.com>
2026-04-10 22:44:22 -07:00
Pádraig Brady
b48ec50b50 tests: validate command responsiveness
* tests/misc/responsive.sh: Test commands that should output immediately
upon receiving input, and that there is no unecessary buffering.
* cfg.mk: Avoid false failure in sc_prohibit_test_backticks.
* tests/local.mk: Reference the new test.
2026-04-10 17:49:01 +01:00
Pádraig Brady
57cea2bb6c tests: stat: ensure independence from /proc/
* tests/stat/stat-mount.sh: Ensure stat -c '%a'
is independent from /proc.
https://github.com/coreutils/coreutils/pull/250
2026-04-10 14:55:07 +01:00
Pádraig Brady
dcc33b9e67 tests: cut: ensure separate read paths checked
* tests/misc/read-errors.sh: Use cut -b as that has a separate
read path to cut -c.
2026-04-10 11:24:58 +01:00
Bruno Haible
e2e8d9f389 tests: Avoid accidental matching of the vendor field of $host
* tests/chgrp/basic.sh: Test $host_os, not $host_triplet.
* tests/chown/separator.sh: Likewise.
* tests/rm/r-root.sh: Likewise.
* tests/tail/pipe-f.sh: Likewise.
* tests/tail/tail-c.sh: Likewise.
* tests/tee/tee.sh: Likewise.
* tests/touch/dangling-symlink.sh: Likewise.
2026-04-10 11:09:10 +01:00
Collin Funk
f634724b8f env: avoid locking standard output for each printed variable
* src/env.c (main): Use fputs and putchar instead of printf.
2026-04-09 21:59:12 -07:00
Collin Funk
77ba5a9815 printenv: avoid locking standard output for each printed variable
* src/printenv.c (main): Use fputs and putchar instead of printf.
2026-04-09 21:53:28 -07:00
Pádraig Brady
d0fa892c16 maint: remove last remaining assert()
* src/split.c (bytes_chunk_extract): Prefer affirm to assert,
as it allows for better static checking when compiling with -DNDEBUG.
2026-04-09 21:36:43 +01:00
Pádraig Brady
eef9ce5071 maint: move tty-eof.pl to misc directory
* tests/tty/tty-eof.pl: Rename to ...
* tests/misc/tty-eof.pl: ... this more general directory.
* tests/local.mk: Adjust accordingly.
2026-04-09 21:25:27 +01:00
Pádraig Brady
e5912211de tests: tty-eof.pl: address FIXME re hardcoded Ctrl-d
* tests/tty/tty-eof.pl: Try to explicitly set EOF char to Ctrl-d
in case it's different.
2026-04-09 21:25:27 +01:00
Pádraig Brady
574d8660c7 tests: tty-eof.pl: make fully table driven
* tests/tty/tty-eof.pl: Remove command specific logic,
and adjust commands to support general input.
Also add cut -b, as cut_bytes has its own read loop.
2026-04-09 21:25:27 +01:00
Pádraig Brady
f312af49a2 tests: all: check empty tty input is handled appropriately
* tests/tty/tty-eof.pl: Test all commands twice.
Once with input and once with empty input.
2026-04-09 21:25:27 +01:00
Pádraig Brady
d27e48c122 maint: cat: avoid coverity NULL dreference warning
* src/cat.c (ensure_buf_size): Affirm we won't return NULL;
2026-04-09 21:25:27 +01:00
Pádraig Brady
3131fbf0e1 cat: avoid memory allocation per file
* src/cat.c (main): Only resize the allocated buffer when needed,
which avoids per file heap manipulation and mmap/munmap syscalls.
2026-04-09 16:39:12 +01:00
Pádraig Brady
e0a641674a cat: fix splice() from empty input
* src/cat.c (splice_cat): Ensure we don't retry a read() after
splice() completes, as this is significant on a tty.
2026-04-09 16:39:06 +01:00
oech3
00ba75a02a tests: tee: ensure intermittent data is handled
* tests/tee/tee.sh: Add test case for input from pipe containing sleep.
https://github.com/coreutils/coreutils/pull/247
2026-04-09 12:08:57 +01:00
Collin Funk
bd5d98e8a7 maint: touch: prefer timespec_cmp
* src/touch.c (main): Use timespec_cmp instead of comparing each member
of the timespec.
2026-04-08 22:34:13 -07:00
Pádraig Brady
745f4000fe tests: date: fix false failure on OpenBSD 7.8
* tests/date/date.pl: Set the max supported year to INT_MAX.
Most systems support INT_MAX+1900, but mktime() on OpenBSD 7.8
limits the passed tm_year to INT_MAX.
Reported by Bruno Haible.
2026-04-07 23:17:36 +01:00
Pádraig Brady
5b0cb4379a tests: numfmt: avoid false failure on systems without long double
* tests/numfmt/numfmt.pl: Move recently added test that depends
on long double support to the appropriately guarded set.
Also reduce the value to be in the definitely safe long double range.
Reported by Bruno Haible.
2026-04-07 21:47:21 +01:00
Pádraig Brady
2e7fc39ec1 maint: cut: avoid discarded-qualifiers warnings
Seen on GCC 15.2.1 with GLIBC 2.43 on Arch
Not seen on GCC 15.2.1 on GLIBC 2.42 on Fedora

* src/cut.c (search_bytes): Cast the return from memchr()
to avoid const propagation.
(find_field_delim): Adjust the return from strstr() similarly.
https://github.com/coreutils/coreutils/issues/244
2026-04-07 14:57:18 +01:00
Pádraig Brady
aaae9d0db6 tests: cat: avoid false failure on systems without splice
* tests/cat/splice.sh: Ensure splice is called multiple times
before we check specific invocation counts.
On Linux kernel 5.10 for example, splice from /dev/zero
returns EINVAL.
2026-04-07 12:20:10 +01:00
Collin Funk
457f88513a cat: use splice if operating on pipes or if copy_file_range fails
On a AMD Ryzen 7 3700X system:

    $ timeout 10 taskset 1 ./src/cat-prev /dev/zero \
        | taskset 2 pv -r > /dev/null
    [1.67GiB/s]
    $ timeout 10 taskset 1 ./src/cat /dev/zero \
        | taskset 2 pv -r > /dev/null
    [9.03GiB/s]

On a Power10 system:

    $ taskset 1 ./src/yes | timeout 10 taskset 2 ./src/cat-prev \
        | taskset 3 pv -r > /dev/null
    [12.9GiB/s]
    $ taskset 1 ./src/yes | timeout 10 taskset 2 ./src/cat \
            | taskset 3 pv -r > /dev/null
    [81.8GiB/s]

* NEWS: Mention the improvement.
* src/cat.c: Include isapipe.h, splice.h, and unistd--.h.
(splice_cat): New function.
(main): Use it.
* src/local.mk (noinst_HEADERS): Add src/splice.h.
* src/splice.h: New file, based on definitions from src/yes.c.
* src/yes.c: Include splice.h.
(pipe_splice_size): Use increase_pipe_size from src/splice.h.
(SPLICE_PIPE_SIZE): Remove definition, moved to src/splice.h.
* tests/cat/splice.sh: New file, based on some tests in
tests/misc/yes.sh.
* tests/local.mk (all_tests): Add the new test.
2026-04-06 21:57:07 -07:00