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.
`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`.
* 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!
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
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
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.
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