]> git.ipfire.org Git - thirdparty/coreutils.git/log
thirdparty/coreutils.git
6 months agotail: honor --pid with fifos
Pádraig Brady [Fri, 18 Oct 2024 12:40:13 +0000 (13:40 +0100)] 
tail: honor --pid with fifos

* src/tail.c (tail_file): Open files with O_NONBLOCK
if we might need async processing.
(pipe_bytes): Ignore EAGAIN read() errors.
(pipe_lines): Likewise.
* tests/tail/pid-pipe.sh: Add a new test.
* tests/local.mk: Reference the new test.
* NEWS: Mention the bug fix.
Reported by Berhard Voelker.

6 months agocp,mv: decouple --update from -f,-i,-n options
Pádraig Brady [Mon, 6 Jan 2025 15:48:02 +0000 (15:48 +0000)] 
cp,mv: decouple --update from -f,-i,-n options

* src/copy.h: Change update member from bool to enum.
* src/copy.c: s/interactive == I_ALWAYS_NO/update == UPDATE_NONE_FAIL/;
              s/interactive == I_ALWAYS_SKIP/update == UPDATE_NONE/;
              s/update/update == UPDATE_OLDER/;
* src/install.c: Init with UPDATE_ALL, rather than false.
* src/cp.c: Likewise.  Simply parse -f,-i,-n to x.interactive,
and parse --update to x.update.
* src/mv.c: Likewise.
* tests/cp/cp-i.sh: Add a test case where -n --update -i
honors the --update option, which would previously have been
ignored due to the preceding -n.

6 months agocp,mv: ensure -i,f are not overridden by -u
Pádraig Brady [Sun, 12 May 2024 11:21:19 +0000 (12:21 +0100)] 
cp,mv: ensure -i,f are not overridden by -u

Since coreutils 9.3 we had --update={all,older} override -i.
In coreutils 9.5 this was expanded to -u
(to make it consistent with --update=older).

This patch reinstates things so that -i combines with -u instead.
I.e. have -i be protective, rather than selective (like -u).

The -f option of mv is similarly adjusted in this patch,
so now --update does not override any of -f,-i,-n.

* NEWS: Mention the bug fix.
* src/cp.c (main): Don't have -u disable prompting.
* src/mv.c (main): Likewise.
* tests/cp/cp-i.sh: Add a test case for -i.
* tests/mv/update.sh: Likewise.
* tests/mv/i-3.sh. Add a test case for -f.
Fixes https://bugs.gnu.org/70887

6 months agodoc: clarify mv -f operation in texinfo
Pádraig Brady [Mon, 6 Jan 2025 13:01:47 +0000 (13:01 +0000)] 
doc: clarify mv -f operation in texinfo

* doc/coreutils.texi (mv invocation): Be less ambiguous,
in that -f is significant for any replacement operation
on the destination, not just unlinking.

7 months agomaint: update all copyright year number ranges
Pádraig Brady [Wed, 1 Jan 2025 09:14:56 +0000 (09:14 +0000)] 
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: Likewise.
* tests/sample-test: Adjust to use the single most recent year.

7 months agopwd: fix erroneous leading slash on some systems
Pádraig Brady [Wed, 1 Jan 2025 08:48:27 +0000 (08:48 +0000)] 
pwd: fix erroneous leading slash on some systems

* gnulib: Pull in the fix to getcwd() from gnulib.
* NEWS: Mention the fix.

7 months agonumfmt: don't require a suffix with --from=iec-i
Pádraig Brady [Mon, 30 Dec 2024 22:48:14 +0000 (22:48 +0000)] 
numfmt: don't require a suffix with --from=iec-i

* src/numfmt.c (simple_strtod_human): Only look for 'i'
after detecting a suffix.
* tests/misc/numfmt.pl: Add a test case.
* NEWS: Mention the bug fix.
Reported at https://bugs.debian.org/1091758

7 months agomaint: fix syntax-check error
Pádraig Brady [Mon, 30 Dec 2024 20:33:17 +0000 (20:33 +0000)] 
maint: fix syntax-check error

* src/seq.c: Adjust line length.

7 months agomaint: adjust to Gnulib module renaming
Paul Eggert [Mon, 30 Dec 2024 19:51:25 +0000 (11:51 -0800)] 
maint: adjust to Gnulib module renaming

* bootstrap.conf, gl/modules/buffer-lcm, gl/modules/randperm:
* gl/modules/randread, gl/modules/strnumcmp, gl/modules/targetdir:
* gl/modules/xdectoint, gl/modules/xfts:
Adjust to recent renaming of Gnulib modules, e.g., stdbool → bool,
inttypes → inttypes-h.

7 months agobuild: update gnulib submodule to latest
Paul Eggert [Mon, 30 Dec 2024 19:39:48 +0000 (11:39 -0800)] 
build: update gnulib submodule to latest

7 months agodate: improve doc for ambiguous formats
Paul Eggert [Mon, 30 Dec 2024 19:38:56 +0000 (11:38 -0800)] 
date: improve doc for ambiguous formats

Problem reported by Tim Connors <https://bugs.gnu.org/75208>.
* doc/coreutils.texi (Date conversion specifiers):
* src/date.c (usage):
Warn about ambiguous formats like %D.

7 months agomaint: ISDIGIT → c_isdigit
Paul Eggert [Mon, 30 Dec 2024 18:45:54 +0000 (10:45 -0800)] 
maint: ISDIGIT → c_isdigit

* gl/lib/strnumcmp-in.h (ISDIGIT):
* src/system.h (ISDIGIT): Remove.  All uses replaced by c_isdigit,
with appropriate inclusions of c-ctype.h.  This is more regular,
and is more portable to existing (but unlikely) platforms where
INT_MAX == UINT_MAX.

7 months agotests: improve the chmod/symlinks.sh test
Sylvestre Ledru [Mon, 30 Dec 2024 09:41:23 +0000 (10:41 +0100)] 
tests: improve the chmod/symlinks.sh test

The variable of the loop isn't passed to the command making
it less interesting

* tests/chmod/symlinks.sh: Fix the test case.

7 months agokill: with -l,-t list signal 0
Pádraig Brady [Sat, 21 Dec 2024 12:54:59 +0000 (12:54 +0000)] 
kill: with -l,-t list signal 0

The 0 (EXIT) signal is valid as input
(and useful to determine existence of a pid),
so list it along with other signals.

* doc/coreutils.texi (signal specifications): Document 0, "EXIT".
* src/kill.c (list_signals): Start loops at 0, not 1.
* tests/misc/kill.sh: Add a test case.
* NEWS: Mention the change in behavior.

7 months agomaint: correct © dates for hardware optimized crc routines
Pádraig Brady [Sat, 21 Dec 2024 12:17:06 +0000 (12:17 +0000)] 
maint: correct © dates for hardware optimized crc routines

* src/cksum_pclmul.c: 2021-2024.
* src/cksum_avx2.c: 2024.
* src/cksum_avx512.c: 2024.
* src/cksum_vmull.c: 2024.

7 months agotail: always fail when followed files become inaccessible
Pádraig Brady [Fri, 20 Dec 2024 14:28:11 +0000 (14:28 +0000)] 
tail: always fail when followed files become inaccessible

* src/tail.c (tail_forever): Without --retry, exit with failure
status like we do for the inotify case (since v8.11-15-g61de57cd2).
This is also consistent with the failure exit if no file was
accessible at tail startup.
* tests/tail/follow-stdin.sh: Tweak due to earlier exit.
* tests/tail/follow-name.sh: Test with and without inotify.
* NEWS: Mention the bug fix.

7 months agocksum: update to pclmul optimized crc32b from gnulib
Pádraig Brady [Wed, 18 Dec 2024 12:39:47 +0000 (12:39 +0000)] 
cksum: update to pclmul optimized crc32b from gnulib

* bootstrap.conf: Depend on crc-x86_64 rather than crc.
* gnulib: Update to latest.
* src/cksum.c (crc32b_sum_stream): Add --debug info.
* NEWS: Mention the performance improvement.

7 months agomaint: tests: update deprecated perl backreference syntax
Daniel Hofstetter [Mon, 16 Dec 2024 18:11:01 +0000 (18:11 +0000)] 
maint: tests: update deprecated perl backreference syntax

* tests/basenc/basenc.pl: perl warns that $1 is better than \1,
so update to the preferred form.

7 months agomaint: sync help2man to latest version
Paul Eggert [Thu, 12 Dec 2024 03:59:24 +0000 (19:59 -0800)] 
maint: sync help2man to latest version

* man/help2man: sync changes from version 1.48.5 through 1.49.3.
This doesn't materially change the generated man pages.

8 months agocksum: use ARMv8 SIMD extensions
Sam Russell [Thu, 28 Nov 2024 19:28:21 +0000 (20:28 +0100)] 
cksum: use ARMv8 SIMD extensions

* configure.ac: Add check for ARMv8 VMULL support.
* src/cksum.c: Add ARMv8 VMULL detection function.
* src/cksum.h: Add ARMv8 VMULL implementation declaration.
* src/cksum_vmull.c: ARMv8 VMULL implementation.
* src/local.mk: Add build flags for ARMv8 VMULL.
* NEWS: Mention the ARMv8 SIMD improvement.

8 months agotail: ensure --follow=name unfollows renamed files
Pádraig Brady [Wed, 4 Dec 2024 19:40:55 +0000 (19:40 +0000)] 
tail: ensure --follow=name unfollows renamed files

Require --retry to continue to track files upon rename.
We already unfollowed a file if it was renamed
to another file system (unlinked), so this makes the behavior
consistent if renaming to a file in the same file system.
I.e. --follow=name without --retry, means unfollow if the
name is unlinked or moved, so this change ensures that
behavior for all rename cases.
Related commits: v8.0-121-g3b997a9bcv8.23-161-gd313a0b24

* src/tail.c (tail_forever_notify): Remove watch for a renamed file
if --retry is not specified.
* tests/tail/F-vs-rename.sh: Related test cleanup.
* tests/tail/follow-name.sh: Add a test case.
* NEWS: Mention the bug fix.
Fixes https://bugs.gnu.org/74653

8 months agocksum: use AVX2 and AVX512 for speedup
Sam Russell [Mon, 25 Nov 2024 23:25:00 +0000 (00:25 +0100)] 
cksum: use AVX2 and AVX512 for speedup

* configure.ac: Add checks for avx2 and avx512 support.
* src/cksum_avx2.c: AVX2 implementation.
* src/cksum_avx512.c: AVX512 implementation.
* src/local.mk: Add build flags for avx2 and avx512.
* src/cksum.c: Add avx2 and avx512 detection functions.
* src/cksum.h: Add avx2 and avx512 implementation declarations.
* NEWS: Mention the AVX2 and AVX512 improvement.

8 months agotail,tee: fix broken pipe detection on darwin 9
Pádraig Brady [Tue, 26 Nov 2024 14:04:32 +0000 (14:04 +0000)] 
tail,tee: fix broken pipe detection on darwin 9

* src/iopoll.c (): Restrict use of poll() on macOS
to >= 11 (darwin 20), as it was seen to fail on macOS 10.5.
Fixes https://bugs.gnu.org/74503

8 months agotests: avoid false failure with unicode decomposed file systems
Pádraig Brady [Sun, 24 Nov 2024 12:51:43 +0000 (12:51 +0000)] 
tests: avoid false failure with unicode decomposed file systems

* tests/ls/dired.sh: macOS normalizes unicode characters to decomposed
(NFD) form when storing names in the file system, which breaks the
round-trip comparison employed by the test.  So instead use a character
which does not decompose; verified with:
  echo æ | uconv -f utf8 -t utf8 -x nfd | od -Ax -tx1z

8 months agodd: port big-offset test to macOS 12.6
Paul Eggert [Wed, 20 Nov 2024 19:11:54 +0000 (11:11 -0800)] 
dd: port big-offset test to macOS 12.6

* tests/dd/skip-seek-past-file.sh: Do not assume that
seek to exactly OFF_T_MAX should fail; it works on macOS 12.6
and POSIX allows this.  Come to think of it, it should work
on Solaris too, if someone ever comes across a Solaris host
with a file system that allows such files.

8 months agomaint: update .gitignore
Collin Funk [Wed, 20 Nov 2024 02:50:27 +0000 (18:50 -0800)] 
maint: update .gitignore

* .gitignore (/lib/crc-sliceby8.h): Add file generated by Gnulib.

8 months agomaint: prefer mbszero over memset
Collin Funk [Wed, 20 Nov 2024 02:43:19 +0000 (18:43 -0800)] 
maint: prefer mbszero over memset

* src/df.c (replace_invalid_chars): Use mbszero.

8 months agols: port to Oracle Developer Studio 12.6
Paul Eggert [Wed, 20 Nov 2024 06:55:48 +0000 (22:55 -0800)] 
ls: port to Oracle Developer Studio 12.6

Oracle Developer Studio 12.6 for sparc mishandles
‘sizeof ((char []) {'x', 'y'})’: it says
“warning: null dimension: sizeof()” and then generates
the wrong length in data.  Work around the compiler bug
by counting sizes by hand, which may be a bit clearer anyway,
if a bit more error-prone.
* src/ls.c (BIN_STR): Remove.
(color_indicator): Spell out instead of using BIN_STR.

8 months agofactor: fix ‘return’ typo
Paul Eggert [Wed, 20 Nov 2024 06:22:57 +0000 (22:22 -0800)] 
factor: fix ‘return’ typo

* src/factor.c (lbuf_putint): Don’t use ‘return E;’ in
a void function’s body, fixing a recently-introduced typo.

8 months agodoc: mention "printf %d ''" change
Paul Eggert [Tue, 19 Nov 2024 22:01:32 +0000 (14:01 -0800)] 
doc: mention "printf %d ''" change

8 months agotests: fix inconsistent use of getlimits_
Pádraig Brady [Tue, 19 Nov 2024 20:03:01 +0000 (20:03 +0000)] 
tests: fix inconsistent use of getlimits_

* tests/dd/skip-seek-past-file.sh: s/eval $(getlimits)/getlimits_/

8 months agotests: printf: avoid iconv issues on macOS
Pádraig Brady [Tue, 19 Nov 2024 19:57:53 +0000 (19:57 +0000)] 
tests: printf: avoid iconv issues on macOS

* tests/printf/printf-cov.pl: Since gnulib commit v1.0-1103-ge5b82978e2
we avoid iconv() on ASCII range 0x32 - 0x7F inclusive, so adjust
this test to fall within that range.
Addresses https://bugs.gnu.org/74428

8 months agochown: port test to macOS 12.6 nogroup user
Paul Eggert [Tue, 19 Nov 2024 17:53:17 +0000 (09:53 -0800)] 
chown: port test to macOS 12.6 nogroup user

* tests/chown/preserve-root.sh (id_g): Set to empty if id -gn
reports that it is nogroup, and skip that part of the test.

8 months agomaint: omit unnecessary to_uchar
Paul Eggert [Tue, 19 Nov 2024 17:18:50 +0000 (09:18 -0800)] 
maint: omit unnecessary to_uchar

* src/df.c (replace_control_chars):
* src/dircolors.c (parse_line):
* src/printf.c (print_esc):
* src/ptx.c (unescape_string):
* src/stat.c (print_it):
* src/tr.c (star_digits_closebracket):
Omit to_uchar calls that aren’t needed, because the parent
expression works with ‘char’ as well as with ‘unsigned char’.

8 months agotests: Remove stray ‘i’
Paul Eggert [Tue, 19 Nov 2024 16:55:41 +0000 (08:55 -0800)] 
tests: Remove stray ‘i’

8 months agoprintf: diagnose empty args correctly
Paul Eggert [Tue, 19 Nov 2024 02:19:54 +0000 (18:19 -0800)] 
printf: diagnose empty args correctly

Also, port better to macOS.
* src/printf.c (verify_numeric): Don’t assume that when s == end
then errno is zero; it is EINVAL on macOS, and POSIX allows this.
(print_direc): Treat missing arg as zero for numeric conversions,
and as an empty string for the others.
(print_formatted): Use null pointer, not an empty string,
to represent missing arg.
* tests/printf/printf.sh: Test empty and space widths and precisions.

8 months agoprintf: do n$ overflow checking by hand
Paul Eggert [Mon, 18 Nov 2024 21:46:33 +0000 (13:46 -0800)] 
printf: do n$ overflow checking by hand

* src/printf.c (get_curr_arg): Mark as pure to pacify GCC 14.
Do overflow checking by hand rather than relying on strspn
and strtoimax.

8 months agoprintf: refactor macros to function
Paul Eggert [Mon, 18 Nov 2024 19:24:10 +0000 (11:24 -0800)] 
printf: refactor macros to function

* src/printf.c (struct arg_cursor): New struct.
(get_curr_arg): New function.
(print_formatted): Use it instead of ...
(GET_CURR_ARG, SET_CURR_ARG): ... these removed macros.
This makes the code a bit easier to follow, and any efficiency
cost should be minimal.

8 months agomaint: avoid a syntax-check failure
Pádraig Brady [Mon, 18 Nov 2024 16:17:10 +0000 (16:17 +0000)] 
maint: avoid a syntax-check failure

This was also updated in gnulib.

* bootstrap: s/can not/cannot/

8 months agodoc: describe "New programs" consistently in NEWS
Pádraig Brady [Mon, 18 Nov 2024 16:13:12 +0000 (16:13 +0000)] 
doc: describe "New programs" consistently in NEWS

* NEWS: s/New commands/New programs/

8 months agobuild: update gnulib submodule to latest
Paul Eggert [Mon, 18 Nov 2024 07:00:34 +0000 (23:00 -0800)] 
build: update gnulib submodule to latest

Also, copy bootstrap from gnulib/build-aux/bootstrap.

8 months agofactor: pacify -Wunused-macros
Paul Eggert [Sat, 16 Nov 2024 20:45:34 +0000 (13:45 -0700)] 
factor: pacify -Wunused-macros

* src/factor.c: Also use __GMP_GNUC_PREREQ

8 months agols: refactor gobble_file get_scontext
Paul Eggert [Fri, 15 Nov 2024 01:35:49 +0000 (17:35 -0800)] 
ls: refactor gobble_file get_scontext

* src/ls.c (gobble_file): Simplify by pulling get_scontext
out of ‘if’.

8 months agotests: ls: also test security context output for symlinks
Pádraig Brady [Tue, 12 Nov 2024 11:34:07 +0000 (11:34 +0000)] 
tests: ls: also test security context output for symlinks

* tests/ls/selinux.sh: Test symlinks as well as files.

8 months agotests: avoid false failure with --disable-selinux
Pádraig Brady [Mon, 11 Nov 2024 19:54:18 +0000 (19:54 +0000)] 
tests: avoid false failure with --disable-selinux

* tests/ls/selinux-segfault.sh: Move recent addition to ...
* tests/ls/selinux.sh: ... this new test that uses require_selinux_
to skip appropriately when we've built without selinux support.
Also add a non root test that checks we output '.' along with the
mode for files, to indicate a security context is present.
* tests/local.mk (Reference the new test).

8 months agols: fix security context indication in --long mode
Pádraig Brady [Mon, 11 Nov 2024 18:55:19 +0000 (18:55 +0000)] 
ls: fix security context indication in --long mode

* src/ls.c (gobble_file): Always get the security context with -l
so that we can indicate a context with '.' if present.

8 months agobuild: update gnulib submodule to latest
Paul Eggert [Mon, 11 Nov 2024 16:52:12 +0000 (08:52 -0800)] 
build: update gnulib submodule to latest

This also fixes a problem with ls -Z when configured with
--disable-acl, reported by Pádraig Brady
<https://bugs.gnu.org/73418#52>.
* src/ls.c (gobble_file): Pass ACL_GET_SCONTEXT to
file_has_aclinfo, if -Z is used.

8 months agobuild: update gnulib to latest
Pádraig Brady [Mon, 11 Nov 2024 14:54:03 +0000 (14:54 +0000)] 
build: update gnulib to latest

* NEWS: Mention the fix to nproc honoring the affinity mask
on systems with more than 1024 processors.

8 months agols: add test case for ls -Z bug
Paul Eggert [Sun, 10 Nov 2024 00:51:02 +0000 (16:51 -0800)] 
ls: add test case for ls -Z bug

Problem reported by Pádraig Brady <https://bugs.gnu.org/73418#35>.
This bug was fixed by the recent gnulib update.
* tests/ls/selinux-segfault.sh:
Also test for ls -Z on broken symlinks.

8 months agobuild: update gnulib submodule to latest
Paul Eggert [Sat, 9 Nov 2024 18:29:14 +0000 (10:29 -0800)] 
build: update gnulib submodule to latest

8 months agotests: avoid false failure on older valgrind
Pádraig Brady [Sat, 9 Nov 2024 16:55:33 +0000 (16:55 +0000)] 
tests: avoid false failure on older valgrind

* src/shuf.c (main): In dev mode call randint_all_free()
to avoid false failure with valgrind 3.16.1 at least.
Note this partially reinstates commit v9.0-109-g0106b5a4b.
This was noticed on a debian 11 system running CI tests.

8 months agoseq: seq_fast always exits now
Paul Eggert [Sat, 9 Nov 2024 07:16:45 +0000 (23:16 -0800)] 
seq: seq_fast always exits now

* src/seq.c (seq_fast): Always exit.  Don’t bother freeing
just before exit.

8 months agoseq: simplify cmp calls
Paul Eggert [Sat, 9 Nov 2024 07:10:00 +0000 (23:10 -0800)] 
seq: simplify cmp calls

* src/seq.c (seq_fast): Call cmp in just one place, not two.
Redo loop structure to make it work.

8 months agoseq: use full_write instead of fwrite
Paul Eggert [Sat, 9 Nov 2024 04:17:54 +0000 (20:17 -0800)] 
seq: use full_write instead of fwrite

* src/seq.c: Include full-write.h.
(seq_fast): Since we’re doing all the buffering work anyway,
we might as well use syscalls instead of stdio to write.
Use full_write instead of fwrite.

8 months agoseq: simplify output buffer management
Paul Eggert [Sat, 9 Nov 2024 03:55:54 +0000 (19:55 -0800)] 
seq: simplify output buffer management

* src/seq.c (seq_fast): Simplify by using an output buffer of
known size (BUFSIZ) on the stack, rather than a heap buffer that
might grow.  For the number buffer, don’t bother appending NUL
since nobody uses the NUL, and xpalloc from nullptr not p0 since
we need to move the buffer data by hand anyway.

8 months agoseq: omit unnecessary malloc for upper bound
Paul Eggert [Fri, 8 Nov 2024 20:28:27 +0000 (12:28 -0800)] 
seq: omit unnecessary malloc for upper bound

* src/seq.c (seq_fast): Speed up test for "inf".
Do not allocate and free a copy of B, as it is fine as-is.

8 months agoseq: simplify cmp
Paul Eggert [Fri, 8 Nov 2024 20:08:57 +0000 (12:08 -0800)] 
seq: simplify cmp

* src/seq.c (cmp): Simplify, and change some size_t to idx_t.
(INITIAL_ALLOC_DIGITS): Now a constant, not a macro.

8 months agoseq: explicate incr
Paul Eggert [Fri, 8 Nov 2024 17:35:35 +0000 (09:35 -0800)] 
seq: explicate incr

* src/seq.c (incr): Change API to make the code easier to follow,
and also to avoid undefined behavior on hypothetical platforms
where '9' == INT_MAX (!).  Caller changed.

8 months agoenv: prefer xpalloc to xrealloc
Paul Eggert [Fri, 8 Nov 2024 08:09:19 +0000 (00:09 -0800)] 
env: prefer xpalloc to xrealloc

* src/env.c (extract_varname): Prefer free+xpalloc to
xrealloc, since the old buffer contents don’t matter.

8 months agoshuf: prefer xpalloc to xnrealloc
Paul Eggert [Fri, 8 Nov 2024 08:01:01 +0000 (00:01 -0800)] 
shuf: prefer xpalloc to xnrealloc

* src/shuf.c (RESERVOIR_LINES_INCREMENT): Remove.
All uses removed.
(read_input_reservoir_sampling, main):
Prefer idx_t to size_t for sizes related to xpalloc.
(read_input_reservoir_sampling): Prefer xpalloc to xnrealloc.

8 months agopwd: prefer xpalloc to xnrealloc
Paul Eggert [Fri, 8 Nov 2024 07:24:14 +0000 (23:24 -0800)] 
pwd: prefer xpalloc to xnrealloc

* src/pwd.c (struct file_name, file_name_prepend):
Prefer idx_t to size_t for sizes related to xpalloc,
(file_name_init): Don’t overflow if PATH_MAX == INT_MAX.
(file_name_prepend): Prefer xpalloc to by-hand resizing.
Simplify by using memcpy return value.

8 months agodu: prefer xpalloc to xnrealloc
Paul Eggert [Fri, 8 Nov 2024 06:56:44 +0000 (22:56 -0800)] 
du: prefer xpalloc to xnrealloc

* src/du.c (prev_level, process_file):
Prefer idx_t to size_t for sizes related to xpalloc,
and to nesting levels (since that’s what fts_level does anyway).
(process_file): Prefer xpalloc to xnrealloc.

8 months agodf: prefer xpalloc to xnrealloc
Paul Eggert [Fri, 8 Nov 2024 06:45:32 +0000 (22:45 -0800)] 
df: prefer xpalloc to xnrealloc

* src/df.c (ncolumns, nrows, print_table, get_header, get_dev):
Prefer idx_t to size_t for sizes related to xpalloc.
(ncolumns_alloc, nrows_alloc): New static vars.
(alloc_table_row, alloc_field): Prefer xpalloc to xnrealloc.

8 months agobasenc: prefer xpalloc to xnrealloc
Paul Eggert [Fri, 8 Nov 2024 06:32:41 +0000 (22:32 -0800)] 
basenc: prefer xpalloc to xnrealloc

* src/basenc.c (prepare_inbuf): Prefer xpalloc to xnrealloc.

8 months agols: prefer xpalloc to xnrealloc
Paul Eggert [Fri, 8 Nov 2024 06:30:09 +0000 (22:30 -0800)] 
ls: prefer xpalloc to xnrealloc

* src/ls.c (cwd_n_alloc, cwd_n_used, clear_files)
(extract_dirs_from_files, initialize_ordering_vector)
(update_current_files_info, sort_files, print_current_files)
(print_many_per_line, print_horizontal, print_with_separator)
(init_column_info, calculate_columns):
Prefer idx_t to size_t for sizes related to xpalloc.
(main): Let the compiler fold constants.
(gobble_file, init_column_info): Use xpalloc, not xnrealloc.
(print_many_per_line): Fix very-unlikely integer overflow.

8 months agodf: simplify via xasprintf
Paul Eggert [Fri, 8 Nov 2024 01:16:14 +0000 (17:16 -0800)] 
df: simplify via xasprintf

* src/df.c: Include xvasprintf.h.
(get_header, get_dev): Simplify by using xasprintf and xstrdup
rather than doing the error checking ourselves.

8 months agocsplit: port to IDX_MAX < INT_MAX
Paul Eggert [Fri, 8 Nov 2024 01:15:12 +0000 (17:15 -0800)] 
csplit: port to IDX_MAX < INT_MAX

* src/csplit.c (max_out): Defend against unlikely IDX_MAX < INT_MAX.

8 months agopr: prefer xpalloc to x2realloc
Paul Eggert [Fri, 8 Nov 2024 00:39:35 +0000 (16:39 -0800)] 
pr: prefer xpalloc to x2realloc

* src/pr.c (buff_allocated, main):
Prefer idx_t to size_t for sizes.
(main, store_char): Use xpalloc, not x2realloc.
(init_store_cols): Check for multiplication overflow ourselves
and use ximalloc, not xnmalloc.  This is a bit simpler.
* src/system.h (X2REALLOC): Remove; no longer used.

8 months agood: prefer xpalloc to x2realloc
Paul Eggert [Thu, 7 Nov 2024 23:11:37 +0000 (15:11 -0800)] 
od: prefer xpalloc to x2realloc

* src/od.c (string_min, dump_strings): Prefer idx_t to size_t for
sizes.  Use xpalloc, not x2realloc.

8 months agofold: prefer xpalloc to x2realloc
Paul Eggert [Thu, 7 Nov 2024 23:04:50 +0000 (15:04 -0800)] 
fold: prefer xpalloc to x2realloc

* src/fold.c (fold_file): Prefer idx_t to size_t for sizes.
Use xpalloc, not x2realloc.

8 months agosort: prefer xpalloc to x2nrealloc
Paul Eggert [Thu, 7 Nov 2024 22:25:17 +0000 (14:25 -0800)] 
sort: prefer xpalloc to x2nrealloc

* src/sort.c (struct buffer, temp_dir_count, temp_dir_alloc)
(create_temp_file, add_temp_dir, fillbuf):
Prefer idx_t to ptrdiff_t/size_t for nonnegative directory counts.
(add_temp_dir, fillbuf): Use xpalloc, not x2nrealloc.
* src/system.h (X2NREALLOC): Remove; no longer used.

8 months agocut,numfmt: prefer xpalloc to x2nrealloc
Paul Eggert [Thu, 7 Nov 2024 22:17:14 +0000 (14:17 -0800)] 
cut,numfmt: prefer xpalloc to x2nrealloc

* src/set-fields.c (n_frp, n_frp_allocated, complement_rp, set_fields):
Prefer idx_t to ptrdiff_t/size_t for nonnegative sizes.
(add_range_pair): Use xpalloc, not x2nrealloc.

8 months agoptx: prefer xpalloc to x2nrealloc
Paul Eggert [Thu, 7 Nov 2024 22:09:26 +0000 (14:09 -0800)] 
ptx: prefer xpalloc to x2nrealloc

* src/ptx.c (line_width, gap_size, WORD, WORD_TABLE)
(maximum_word_length, reference_max_width, occurs_alloc)
(number_of_occurs, half_line_width, truncation_string_length)
(compare_words, search_table, digest_word_file)
(find_occurs_in_text, fix_output_parameters)
(generate_all_output, main, find_occurs_in_text)
(fix_output_parameters, generate_all_output):
Prefer idx_t to ptrdiff_t/size_t for nonnegative sizes.
(first, second): Remove macros, replacing them with locals.
(search_table): Use hi (for highest + 1) to simplify.
Avoid unlikely overflow by not computing lo + hi.
(digest_word_file, find_occurs_in_text): Use xpalloc, not x2nrealloc.

8 months agood: prefer xpalloc to x2nrealloc
Paul Eggert [Thu, 7 Nov 2024 20:58:49 +0000 (12:58 -0800)] 
od: prefer xpalloc to x2nrealloc

* src/od.c (n_specs, n_specs_allocated, write_block, get_lcm, main):
Use idx_t instead of size_t for some sizes, so that we can
use xpalloc.
(decode_format_string): Prefer xpalloc to X2NREALLOC.

8 months agoexpand: check for colno overflow
Paul Eggert [Thu, 7 Nov 2024 20:51:04 +0000 (12:51 -0800)] 
expand: check for colno overflow

* src/expand-common.c (get_next_tab_column): Check for tab
stop overflow here.  All callers changed to not check.
* src/expand.c (expand): Use colno for column number.

8 months agols: fix aclinfo cache bug
Paul Eggert [Thu, 7 Nov 2024 20:32:21 +0000 (12:32 -0800)] 
ls: fix aclinfo cache bug

Found when testing on a new platform with a new file system.
* src/ls.c (file_has_aclinfo_cache): For failures, also cache
return value, scontext, and scontext_err, and when using cached
values make sure buf and size have reasonable values for
aclinfo_free etc.

8 months agols: use Gnulib’s unsupported errno list
Paul Eggert [Thu, 7 Nov 2024 16:57:42 +0000 (08:57 -0800)] 
ls: use Gnulib’s unsupported errno list

* bootstrap.conf (gnulib_modules): Add acl-permissions, which
supplies acl_errno_valid, and which we are already using
indirectly via file-has-acl.
* src/ls.c (errno_unsupported): Remove.  All calls replaced
by !acl_errno_valid.

8 months agoexpand: use signed colno
Paul Eggert [Thu, 7 Nov 2024 02:04:35 +0000 (18:04 -0800)] 
expand: use signed colno

* src/expand-common.h (colno): Now intmax_t, not uintmax_t.

8 months agoexpand: refactor to introduce ‘colno’
Paul Eggert [Thu, 7 Nov 2024 01:56:15 +0000 (17:56 -0800)] 
expand: refactor to introduce ‘colno’

* src/expand-common.h (colno): New typedef.
All uses of uintmax_t for column numbers replaced by colno.
* src/expand-common.c (add_tab_stop): Use xpalloc
instead of X2NREALLOC, and use ckd_add to check for overflow.

8 months agoexpand: prefer xpalloc to x2nrealloc
Paul Eggert [Thu, 7 Nov 2024 00:31:18 +0000 (16:31 -0800)] 
expand: prefer xpalloc to x2nrealloc

* src/expand-common.c (max_column_width, n_tabs_allocated)
(first_free_tab, add_tab_stop, parse_tab_stops, validate_tab_stops)
(get_next_tab_column):
Use idx_t for sizes.  All uses changed.
(add_tab_stop): Use xpalloc instead of X2NREALLOC.
Use ckd_add to check for overflow, instead of doing it by hand.

8 months agoenv: prefer xpalloc to x2nrealloc
Paul Eggert [Thu, 7 Nov 2024 00:21:15 +0000 (16:21 -0800)] 
env: prefer xpalloc to x2nrealloc

* src/env.c (usvars_alloc): Use idx_t for size.
(append_unset_var): Use xpalloc instead of x2nrealloc.

8 months agochroot: expand heap a bit less aggressively
Paul Eggert [Thu, 7 Nov 2024 00:18:54 +0000 (16:18 -0800)] 
chroot: expand heap a bit less aggressively

* src/chroot.c (parse_additional_groups, main):
Prefer idx_t to size_t for sizes.
(parse_additional_groups): Use xpalloc instead of x2nrealloc.

8 months agomaint: expand heap a bit less aggressively
Paul Eggert [Thu, 7 Nov 2024 00:16:25 +0000 (16:16 -0800)] 
maint: expand heap a bit less aggressively

* gl/lib/heap.c (struct heap, heap_alloc, heap_insert)
(heapify_down, heapify_up): Prefer idx_t to size_t for sizes.
(heap_insert): Use xpalloc instead of x2nrealloc.
(heapify_down): Return void since no caller cares about value.
* gl/modules/heap: Depend on idx.

9 months agobuild: Regenerate distributed built files in $(top_srcdir)
Bruno Haible [Sun, 3 Nov 2024 23:11:40 +0000 (00:11 +0100)] 
build: Regenerate distributed built files in $(top_srcdir)

* src/local.mk (src/dircolors.h, src/fs-is-local.h, src/fs.h): Generate
in $(top_srcdir).

9 months agocksum: add support for --algorithm=crc32b
Pádraig Brady [Fri, 1 Nov 2024 15:11:55 +0000 (15:11 +0000)] 
cksum: add support for --algorithm=crc32b

  $ echo -n '123456789' | cksum --raw -a crc32b | basenc --base16
  CBF43926

* bootstrap.conf: Explicitly depend on the crc module.
* doc/coreutils.texi (cksum): Add "crc32b" as an argument to -a.
* src/cksum.c (crc32b_sum_stream): A new function similar to
crc_sum_stream, but which does not include the length in
the CRC calculation.
* src/cksum.h: Add crc32b_sum_stream prototype.
* src/digest.c: Add "crc32b" as an argument to -a.
* tests/cksum/cksum.sh: Refactor to test both crc and crc32b.
* tests/cksum/cksum-a.sh: Add "crc32b" case.
* tests/cksum/cksum-base64.pl: Likewise.
* tests/misc/read-errors.sh: Likewise.
* NEWS: Mention the new feature.

9 months agotest: add string operators added by POSIX 2024
Collin Funk [Sat, 2 Nov 2024 03:49:16 +0000 (20:49 -0700)] 
test: add string operators added by POSIX 2024

* src/test.c (binop): Recognize the ">" and "<" operators.
(three_arguments): Likewise.
(binary_operator): Implement the "<" and ">" operators.
(usage): Add operators to --help output.
* tests/test/test.pl (@Tests): Add functionality tests.
* doc/coreutils.texi (test invocation, String tests): Document new
operators.
* NEWS: Mention the new feature.

9 months agodoc: mention new timeout short options in NEWS
Pádraig Brady [Fri, 1 Nov 2024 15:58:04 +0000 (15:58 +0000)] 
doc: mention new timeout short options in NEWS

* NEWS: Mention the timeout -f and -p options.

9 months agostty: adjust --help to match POSIX 2024
Collin Funk [Fri, 1 Nov 2024 05:43:18 +0000 (22:43 -0700)] 
stty: adjust --help to match POSIX 2024

* src/stty.c (usage): Mark cols, rows, and size as standardized by
POSIX.
* doc/coreutils.texi (Special): Likewise.

9 months agodoc: fix timeout --help for -p
Pádraig Brady [Fri, 1 Nov 2024 12:42:41 +0000 (12:42 +0000)] 
doc: fix timeout --help for -p

* src/timeout.c (usage): Fix typo of period with comma.
* tests/timeout/timeout.sh: Only test a single option variant,
as tests/misc/usage_vs_getopt.sh suffices for basic option validation.

9 months agotimeout: add -f and -p short options as per POSIX 2024
Pádraig Brady [Wed, 30 Oct 2024 12:45:58 +0000 (12:45 +0000)] 
timeout: add -f and -p short options as per POSIX 2024

* src/timeout.c: Support -f and -p short options, corresponding to
--foreground and --preserve-status respectively.  This adds
compatability with POSIX 2024 and OpenBSD.
(usage): Separate translations, and reorder the option descriptions.
* doc/coreutils.texi (timeout invocation): Adjust accordingly,
and also reorder the option descriptions alphabetically.
* tests/timeout/timeout.sh: Also test short option variants.

9 months agotests: cksum: verify --check with comments
Sylvestre Ledru [Fri, 18 Oct 2024 20:30:01 +0000 (22:30 +0200)] 
tests: cksum: verify --check with comments

* tests/cksum/cksum-c.sh: Add a test case with a comment.

9 months agotests: improve ls --dired with symlink testing
Sylvestre Ledru [Thu, 17 Oct 2024 20:26:43 +0000 (22:26 +0200)] 
tests: improve ls --dired with symlink testing

* tests/ls/dired.sh: Verify ls --dired with symlink.

9 months agomaint: add syntax-check to ensure all gl/ files are distributed
Pádraig Brady [Mon, 14 Oct 2024 12:06:44 +0000 (13:06 +0100)] 
maint: add syntax-check to ensure all gl/ files are distributed

* cfg.mk (sc_gldist_missing): Add a new target to ensure we don't
forget to distribute any new gl/ files.
* gl/local.mk: Remove generation comment since it's
now encapsulated in the syntax-check, which outputs a consumable
diff to make any future adjustments.
Also adjust ordering to that of the C locale used in the syntax check.

9 months agobuild: distribute the gl/ directory in the tarballs
Bruno Haible [Mon, 14 Oct 2024 10:26:15 +0000 (11:26 +0100)] 
build: distribute the gl/ directory in the tarballs

Suggested by Michael Pratt in
<https://mail.gnu.org/archive/html/coreutils/2024-10/msg00010.html>.

* gl/local.mk: New file, based on gettext/gnulib-local/Makefile.am.
* Makefile.am: Include it.

9 months agocp,mv: align the descriptions of long options
Masatake YAMATO [Sat, 12 Oct 2024 16:28:10 +0000 (01:28 +0900)] 
cp,mv: align the descriptions of long options

* src/cp.c (usage): Adjust white spaces for --update.
* src/mv.c (usage): Ditto.
Fixes https://bugs.gnu.org/73772

9 months agochroot,whoami: use uintmax_t for printing uids
Collin Funk [Mon, 7 Oct 2024 05:19:51 +0000 (22:19 -0700)] 
chroot,whoami: use uintmax_t for printing uids

* src/chroot.c (main): Cast the uid to uintmax_t instead of int.
* src/whoami.c (main): Cast the uid to uintmax_t instead of unsigned
long int.

9 months agomaint: adjust check-ls-dircolors to recent change in ls.c
Bernhard Voelker [Sun, 6 Oct 2024 14:09:26 +0000 (16:09 +0200)] 
maint: adjust check-ls-dircolors to recent change in ls.c

'make distcheck' would fail since commit 75b34c77e43a, because the
comparison by check-ls-dircolors fails.

* Makefile.am (check-ls-dircolors): Adjust sed(1) expression to the
changed data initialization.

10 months agols: fix spurious output with -Z
Pádraig Brady [Thu, 3 Oct 2024 14:15:48 +0000 (15:15 +0100)] 
ls: fix spurious output with -Z

* src/ls.c (gobble_file): Only output an error if there actually
was an error.

10 months agotests: ls: don't always skip a capability test
Pádraig Brady [Thu, 3 Oct 2024 11:32:45 +0000 (12:32 +0100)] 
tests: ls: don't always skip a capability test

* tests/ls/no-cap.sh: Move to being a root only test, since
commit v9.5-132-g2a6bed933 we now need to call setcap
to make the test effective.  Otherwise we would have always
just skipped the test.

10 months agols: tune usage of getxattr/stat syscalls
Paul Eggert [Thu, 3 Oct 2024 04:11:02 +0000 (21:11 -0700)] 
ls: tune usage of getxattr/stat syscalls

Update gnulib submodule to latest.  This changes the file_has_aclinfo
API, so at the same time do the following changes to ls.c, which
adjusts to these changes among other things.
* src/ls.c (filetype_d_type, d_type_filetype): New static constants.
(format_needs_capability): New static var.
(main): Set and use it.  Don’t set format_needs_stat merely
because print_scontext, as we needn’t call stat to get the
scontext.  Instead, set format_needs_type if print_scontext but
not format_needs_stat.
(print_dir): Use new static tables to determine filetype
more efficiently.
(file_has_aclinfo_cache): Adjust to Gnulib file_has_aclinfo API change.
(gobble_file): Check stat if format_needs_type but the type is
unknown.  Be conservative, and when deciding whether to check stat
but the type is unknown, assume it might be directory.  Similarly
for normal files when classifying; if the type is unknown assume
it might be normal.  Use new static constants and IFTODT to
compute filetype more straightforwardly.  Get ACLs and check for
capability less often.
(get_color_indicator): Omit unnecessary call to is_colored (C_CAP),
since f->has_capability can be true only if is_colored (C_CAP).