1
0
mirror of git://git.sv.gnu.org/coreutils.git synced 2026-06-02 15:56:35 +02:00
Commit Graph

31476 Commits

Author SHA1 Message Date
Pádraig Brady 00cd91288c unexpand: consolidate error messages
* src/unexpand.c (main): Use the same error
as in parse_tab_stops().
2026-04-29 13:16:21 +01:00
Pádraig Brady dc723665b5 cut: use MCEL_LEN_MAX rather than MB_LEN_MAX
* src/cut.c: We use the mcel interface to populate these arrays,
so restrict to the mcel supported max.  This is more efficient
as generally stateful encodings are not used or supported.
2026-04-29 13:16:21 +01:00
Pádraig Brady 38cf97c1ff sort: use more dynamic memory allocation with pipes
The default memory allocation with pipes was too passive/static,
resulting in not allocating enough memory to enable threading.
By dynamically reallocating the buffer when reading from
unknown sized inputs we better use available memory and threads.

  $ time seq 10000000 -1 0 | sort-old >/dev/null
  real	0m16.523s
  user	0m16.900s
  sys	0m0.167s

  $ time seq 10000000 -1 0 | sort-old -S1G >/dev/null
  real	0m12.263s
  user	0m29.646s
  sys	0m0.527s

  $ time seq 10000000 -1 0 | sort-new >/dev/null
  real	0m12.994s
  user	0m31.266s
  sys	0m0.716s

It also avoids the overhead of writing to temp files
for modestly sized inputs. For example the following
input would induce interaction with temp storage:

  $ seq 125000 | wc -c
  763895

* src/sort.c (sort_buffer_size): Rename to ...
(sort_buffer_policy): ... here, and adjust to set
an initial size and limit, rather than just a size.
(fillbuf): Add a POLICY parameter, and use that
to call maybe_growbuf() as needed.
(maybe_growbuf): Return true if POLICY dictates we
should grow the buffer, and try_growbuf() was
able to reallocate the larger buffer.
* tests/sort/sort-buffer-size.sh: Add a new test.
* tests/local.mk: Reference new test.
* NEWS: Mention the improvement.
Related to https://bugs.gnu.org/10877
2026-04-29 13:16:21 +01:00
Collin Funk 4c4afad943 pinky: don't print output in the wrong order when fully buffered
* NEWS: Mention the bug fix.
* src/pinky.c (cat_file): Prefer streams to file descriptors when
writing to standard output.
2026-04-28 18:28:25 -07:00
Paul Eggert d64e35a8a4 uniq: fix read overrun with -w
Problem reported by Michał Majchrowicz.
* src/uniq.c (find_field): Fix typo.
* tests/uniq/uniq.pl (add_z_variants): Test for the bug.
2026-04-28 11:25:41 -07:00
Pádraig Brady 0f85d79ed6 tests: avoid false failure with perl-IO-Tty >= 1.24
* tests/misc/tty-eof.pl: https://bugzilla.redhat.com/2463168
2026-04-27 11:15:44 +01:00
Paul Eggert c62c2222f7 build: remove USE_NLS
* configure.ac (USE_NLS): Remove.  The need for this went away
in commit 1d58e4ddab dated
2025-11-20 10:43:06 2025 +0000.
2026-04-26 08:08:56 -07:00
Pádraig Brady 31572ed49e doc: apply man page formatting suggestions from manpage-l10n
* src/basenc.c: Add (1) to base64 and base32 references.
* src/cksum.c. Likewise for cksum references.
* src/echo.c: Use "bell" in descriptions rather than BEL.
* src/printf.c: Likewise.
* src/id.c: Separate -u,-U,-G so marked up appropriately.
Fixes https://bugs.gnu.org/80904
2026-04-25 19:04:12 +01:00
Pádraig Brady 85efb0f63c tests: all: ensure closed stdout is handled appropriately
* tests/misc/io-errors.sh: Add a check to ensure we diagose
writing to closed stdout.  Also ensure we exit with failure
in other cases.
* tests/misc/write-errors.sh: Likewise.
2026-04-25 16:18:24 +01:00
Bruno Haible c70c45eb88 doc: remove redundant "Report translation bugs to" in --help
* configure.ac: Define PACKAGE_L10N_BUGREPORT.
* man/local.mk (run_help2man): Set the IN_HELP2MAN environment variable.
* src/system.h (emit_ancillary_info): Don't emit "Report any translation
bugs to" line; this is already done by emit_bug_reporting_address() in
version-etc.c.
Fixes https://bugs.gnu.org/80886
2026-04-25 12:26:12 +01:00
Pádraig Brady 2e629a1d8e build: update gnulib to latest
* gl/lib/mbbuf.h: Explicitly include string.h
needed since gnulib commit b6d5b2f72
2026-04-25 12:25:29 +01:00
Pádraig Brady b2c4224048 tests: tail: avoid a rare false failure
I noticed a single failure on cfarm29 (Linux 6.12 ppc64le),
where the output was missing:
-tail: directory containing watched file was removed
-tail: inotify cannot be used, reverting to polling
-tail: 'dir/file' has appeared;  following new file

* tests/tail/inotify-dir-recreate.sh: Leverage the new tail --debug
output to sync to a point where we know the inotify watches are in
place.  Also normalize the file argument quoting a bit.
2026-04-24 14:20:42 +01:00
Pádraig Brady 4bf753a801 dd: avoid recursive parsing of multipliers
* src/dd.c (parse_integer): Use iterative rather than recursive parsing,
to avoid potential stack overflow.
* tests/dd/bytes.sh: Add a test case.
https://github.com/coreutils/coreutils/issues/254
2026-04-23 13:58:46 +01:00
Collin Funk c5ddd417aa comm: don't close standard input twice
* NEWS: Mention the bug fix.
* src/comm.c (usage): Remove mention that FILE1 and FILE2 cannot both be
standard input.
(compare_files): Only close standard input once.
* doc/coreutils.texi (comm invocation): Document the behavior of
'comm - -' which is not portable to all implementations.
* tests/comm/dash-dash.sh: New file.
* tests/misc/comm.pl: Move to tests/comm/comm.pl.
* tests/local.mk (all_tests): Add the new test. Rename the existing
test.
2026-04-22 19:12:44 -07:00
Pádraig Brady ac7e111873 maint: post-release administrivia
* NEWS: Add header line for next release.
* .prev-version: Record previous version.
* cfg.mk (old_NEWS_hash): Auto-update.
2026-04-20 14:17:01 +01:00
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