31489 Commits

Author SHA1 Message Date
Collin Funk cab1d4bfbd tests: head: test 'head -n 0' and 'head -c 0' open files for reading
* tests/head/head-n0.sh: New file.
* tests/local.mk: Add the new test case.
2026-05-05 21:40:35 -07:00
Sylvestre Ledru d719413160 tests: ls: verify correct alignment with ACLs
* tests/ls/acl.sh: Check that the gap between the '+' indicator and
the link count is the same whether the listing contains one or
several ACL entries.
https://github.com/coreutils/coreutils/pull/251
2026-05-05 15:33:55 +01:00
Pádraig Brady e636811481 ls: exclude newline from consideration in line width
* src/ls.c (calculate_columns): Treat width as inclusive max.
(print_with_separator): Likewise.  Also handle commas explicitly,
since they're not catered for by an implicit newline in the count.
* tests/ls/w-option.sh: Adjust exact-fit column tests.
Note this change also makes the existing `ls -w4 -x -T0 a b` test
behave consistently with other output width limits.
Also add the test case from:
https://github.com/coreutils/coreutils/pull/213
* tests/ls/m-option.sh: Add a test case to ensure appropriate
wrapping when trailing comma at the line limit.
* NEWS: Mention the change in behavior.
2026-05-04 23:58:12 +01:00
Pádraig Brady 13b8c11275 ls: fix too few display columns edge case
In the edge case where the right most column would
consist of only files taking 1 or 2 cells, we accounted
for 3 cells, which would result in using 1 column too few.
This should have been part of commit v8.24-59-ge71be1292

* src/ls.c (init_column_info): Don't account for separator
in the the final column.
* tests/ls/w-option.sh: Add a test case.
2026-05-04 23:57:48 +01:00
Pádraig Brady dce828c3d6 tests: fix false failure with spaces in hierarchy
* tests/sort/sort-buffer-size.sh: Use `pwd` rather than $PWD,
and quote appropriately.
Reported by Bruno Haible.
2026-05-04 23:38:51 +01:00
Pádraig Brady a0b4ac0fa2 tests: tee: ensure tee is non buffered
* tests/tee/tee.sh: tests/misc/responsive.sh only confirms
responsiveness to lines, so add a test for non line terminated.
https://github.com/coreutils/coreutils/pull/259
2026-05-03 11:31:27 +01:00
Pádraig Brady b130ed810e doc: fix typo in chmod example
* doc/coreutils.texi (chmod invocation): s/file/foo/ to match comment,
and previous example.
2026-05-03 10:40:31 +01:00
Collin Funk 3f650f6924 tests: all: ensure closed stdin is handled appropriately
* tests/misc/close-stdin.sh: New file.
* tests/local.mk (all_tests): Add the new test.
2026-05-02 14:23:11 -07:00
Pádraig Brady db0faabe1d doc: reference detailed "numeric mode" info from chmod.1
Note were links are not supported (like on Solaris or FreeBSD),
the text still displays normally.

* man/chmod.x: Link from "numeric mode" in chmod man page,
to more detailed online info.
2026-05-02 13:35:57 +01:00
Pádraig Brady 380dc99297 build: fix compilation error on Alpine Linux and OpenBSD
* gl/lib/mbbuf.h: Define MBBUF_EOF in terms of MCEL_CHAR_MAX,
rather than depending on the stdint module.
Reported by Bruno Haible.
2026-05-01 13:50:36 +01:00
Collin Funk 2de1a28bcf sum,cksum: consistently emit detailed write errors
Previously the string from strerror would only be printed for some
algorithms:

    $ cksum -a sha2 -l 256 /dev/null > /dev/full
    cksum: write error: No space left on device
    $ cksum -a sysv /dev/null > /dev/full
    cksum: write error

This patch fixes it so that the error information is always printed:

    $ ./src/cksum -a sha2 -l 256 /dev/null > /dev/full
    cksum: write error: No space left on device
    $ ./src/cksum -a sysv /dev/null > /dev/full
    cksum: write error: No space left on device

* src/cksum.c (output_file): Don't check for a write error here.
(main): Check for it here instead.
* tests/misc/io-errors.sh: Add a 'cksum' invocation for each supported
algorithm.
https://github.com/coreutils/coreutils/issues/258
2026-04-30 17:59:38 -07:00
Max Downey Twiss 578b2cd375 test: adjust -g description in --help
This matches the manual, as well as the -u option,
and should help reduce confusion.

* src/test.c (usage): Fix -g documentation to match the structure of -u
2026-04-30 14:51:23 +01:00
Pádraig Brady b60a159fdc unexpand: fix heap overflow
* src/unexpand.c (unexpand): Use xinmalloc() to gracefully
handle overflow.  Also use the runtime locale specific MB_CUR_MAX
rather than the worst case MB_LEN_MAX.
* tests/unexpand/mb.sh: Add a test case that fails in a default
glibc build with either MB_CUR_MAX or MB_LEN_MAX.
* NEWS: Mention the bug fix.
Reported by Michał Majchrowicz.
2026-04-29 13:16:43 +01:00
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