Commit Graph
5125 Commits
Author SHA1 Message Date
lauchimoon cc2b734fa1 sort: use locale_cmp when all selectors have equal ordering 2026-07-10 17:31:15 -03:00
wtcpython cd80f634b4 touch: parse unpadded dates in local time 2026-07-10 15:33:14 +02:00
xtqqczze 0f72a5b5fb clippy: fix byte_char_slices lint
https://rust-lang.github.io/rust-clippy/master/index.html#byte_char_slices
2026-07-09 16:57:23 +02:00
xtqqczze 091dbbb32c clippy: fix manual_assert_eq lint
https://rust-lang.github.io/rust-clippy/master/index.html#manual_assert_eq
2026-07-09 16:57:23 +02:00
xtqqczze 86ad2c25b8 clippy: fix useless_borrows_in_formatting lint
https://rust-lang.github.io/rust-clippy/master/index.html#useless_borrows_in_formatting
2026-07-09 16:57:23 +02:00
Pascal Bachor 18e1df7204 ls: allow detached --sort, --format, --time, --block-size 2026-07-09 14:35:53 +02:00
Daniel Hofstetter b42827c9b2 touch: remove unnecessary error msg (#13325) 2026-07-09 13:17:29 +02:00
wtcpython 8bf313b966 touch: report original input in -t timestamp error message
parse_timestamp would report the century/year-prefixed internal form
in the 'invalid date ts format' error instead of the user's original
input (e.g. '202026-04-10' for input '2026-04-10'). Reference the
original string so the message matches what was typed.
2026-07-09 09:41:20 +02:00
Chaganti-Reddy ff3f37d678 cp: don't panic on write error when printing --verbose output. Fixes #13060 2026-07-08 13:25:39 +02:00
weili 5d71e9a1ee kill: report write errors when listing signals instead of panicking
`kill -l`, `kill -l <sig>`, `kill --list`, and `kill --table` printed their
output with `println!`, whose internal `io::stdout().write_fmt().unwrap()`
aborts the process (SIGABRT, exit 134) when the stdout write fails — e.g.
`kill -l TERM > /dev/full`.

Write the signal listing to a buffered stdout and propagate the `io::Error`
via `?`, so a failed write reports `kill: write error: <reason>` and exits 1,
matching procps-ng `kill` (GNU coreutils ships no standalone `kill`). Add a
`kill-error-write-error` locale key (en-US, fr-FR) and a regression test that
lists signals to `/dev/full`.
2026-07-08 09:39:34 +02:00
Favilances e1fa1f8348 kill: accept SIGIO as alias for SIGPOLL 2026-07-07 14:59:18 +02:00
Simon Johnsson 8d24882809 fix(cp): remove overrides_with_all from flag group (#13258)
* fix(cp): remove overrides_with_all from flag group

The -a/-L/-H/-P/-d flags form a mutual-exclusion group for symlink
handling. Previously, claps overrides_with_all handled precedence by
stripping earlier flags. However, -a is a composite flag (-dR
--preserve=all), and stripping it wholesale loses recursive and
--preserve=all.

Fix: remove overrides_with_all from all five flags. All coexist in
the clap match. Precedence is now handled in overriding_order:
- Add DEREFERENCE, NO_DEREFERENCE, CLI_SYMBOLIC_LINKS to the order
- Derive both dereference and cli_dereference from the last flag
  in the mutual-exclusion group

Fixes: #13207

Also fixes:
- -dL: no longer loses Attributes::LINKS
- -aH: dereference correctly respects last-flag-wins

* fix(cp): logic and spelling fixes

* src/uu/cp/src/cp.rs

  Change unnecessary binary match to equals comparison instead.

  Thanks @KiChjang!
2026-07-07 10:50:59 +02:00
Nikola Lukovic 2adb6cdac8 cp: implement sparse copy support for windows (#12686) 2026-07-07 10:05:49 +02:00
oech3 a7551d7757 test_chmod.rs: remove an ignored test covered by check-safe-traversal.sh (#13298) 2026-07-07 08:44:44 +02:00
Sylvestre Ledru 60d3a22fe7 date: test HH:MM am/pm in combined date-time input
parse_datetime 0.15 accepts a 12-hour meridiem suffix on a combined
date+time (e.g. `2024-06-15 12:00 PM`); enable and extend the
previously-ignored regression test.

Fixes https://github.com/uutils/parse_datetime/issues/282
2026-07-06 11:30:33 +02:00
Sylvestre Ledru a610427a4b date: floor %s output for negative fractional epochs
jiff renders %s by truncating toward zero, but GNU date floors toward
negative infinity (e.g. `@-1.5` -> -2, not -1). Every other field jiff
produces already matches GNU, so rewrite only the %s specifier to the
floored epoch second (via parse_datetime's unix_epoch_second) before
handing the format string to jiff.

Fixes https://github.com/uutils/parse_datetime/issues/283
2026-07-06 11:30:33 +02:00
Sylvestre Ledru a79377fc90 ls: simplify tab size parsing and loop the tabsize tests 2026-07-06 10:23:48 +02:00
Devel a1763bfbfc bug(ls): when --tabsize is a negative number ls successeds instead of rejecting it (#13278) 2026-07-05 17:11:02 +02:00
Sylvestre Ledru 2c2f1b0c1f tail: treat a watched file replaced by a symlink as untailable (#12661)
Under --follow=name, handle_event used metadata() (which follows symlinks),
so a watched file swapped for a symlink was silently followed to the link
target, exfiltrating its contents. Check symlink_metadata() and report the
replacement as an untailable symbolic link, matching GNU.
2026-07-05 14:03:30 +02:00
Sylvestre Ledru 4430794550 mv: regression test + strace check for cross-device O_NOFOLLOW (#10015) (#12468)
* mv: regression test + strace check for cross-device O_NOFOLLOW (#10015)

* spell-checker: add ELOOP to jargon wordlist
2026-07-05 12:52:35 +02:00
Pascal Bachor 70408d84bd numfmt: require equals for --header (#13273) 2026-07-05 12:44:54 +02:00
Sylvestre Ledru 51529dcb70 shuf: don't truncate -o output when input or random source fails (#13113)
* shuf: don't truncate -o output when input or random source fails

* Update comment to include 'GHSA' in spell-checker
2026-07-04 17:55:34 +02:00
Sylvestre Ledru 419a4d7cd1 ls: treat '.' and '..' command-line args as directories, not symlinks (#12656) 2026-07-04 17:54:40 +02:00
RelunSec 0c164039c3 fix(ptx): missing filename in error messages (#13251)
* fix(ptx): missing filename in error messages

Fixes https://github.com/uutils/coreutils/issues/13036

* Add tests

* Test the full error message
2026-07-03 16:27:35 +02:00
Eyüp Can Akman 32d7015993 csplit: include the file name in output-file errors
csplit leaked the raw OS error when it could not create a split file,
e.g. `csplit: IO error: Permission denied (os error 13)`. GNU reports the
file name and a plain message: `csplit: xx00: Permission denied`.

The file-creation error now carries the file name, and the `IoError` display
drops the `IO error:` prefix and the raw `(os error N)` code so the other
output paths read the same way.

Closes #13118
2026-07-03 16:08:19 +02:00