Daniel Hofstetter
18e67e0d05
Merge pull request #8364 from julian-klode/setup-localization-symlinks
...
Setup localization for utility symlinks
2025-07-22 10:41:13 +02:00
Julian Andres Klode
abb5300068
install, mkdir: Handle dir/./ like dir/.
...
The dir/. special case was handled correctly, but dir/./ was not,
breaking gcc builds, which run:
../../../../src/libstdc++-v3/../install-sh -c -d debug/./
Bug-Ubuntu: https://bugs.launchpad.net/bugs/2117466
2025-07-22 09:44:15 +02:00
Daniel Hofstetter
a1a2734527
Merge pull request #8359 from willshuttleworth/stty-refactor
...
CICD / Style/cargo-deny (push) Waiting to run
CICD / Style/deps (push) Waiting to run
CICD / Documentation/warnings (push) Waiting to run
CICD / MinRustV (push) Waiting to run
CICD / Dependencies (push) Waiting to run
CICD / Build/Makefile (push) Blocked by required conditions
CICD / Build/stable (push) Blocked by required conditions
CICD / Build/nightly (push) Blocked by required conditions
CICD / Binary sizes (push) Blocked by required conditions
CICD / Build (push) Blocked by required conditions
CICD / Tests/BusyBox test suite (push) Blocked by required conditions
CICD / Tests/Toybox test suite (push) Blocked by required conditions
CICD / Code Coverage (push) Waiting to run
CICD / Separate Builds (push) Waiting to run
CICD / Test all features separately (push) Blocked by required conditions
CICD / Build/SELinux (push) Blocked by required conditions
GnuTests / Run GNU tests (push) Waiting to run
Android / Test builds (push) Waiting to run
Code Quality / Style/toml (push) Waiting to run
Code Quality / Style/Python (push) Waiting to run
Code Quality / Style/format (push) Waiting to run
Code Quality / Style/lint (push) Waiting to run
Code Quality / Style/spelling (push) Waiting to run
Code Quality / Pre-commit hooks (push) Waiting to run
FreeBSD / Style and Lint (push) Waiting to run
FreeBSD / Tests (push) Waiting to run
stty: refactor arg processing loop
2025-07-21 14:32:17 +02:00
Will Shuttleworth
f836889ff2
stty: refactor arg processing loop
2025-07-21 07:43:08 -04:00
Julian Andres Klode
1a53232e71
Setup localization for utility symlinks
...
If we are invoked via utility symlinks such as "ln", we need to
setup localization before calling the utility's main function.
Fixes : #8332
2025-07-21 12:50:53 +02:00
Daniel Hofstetter
1a8f99f7eb
Merge pull request #8352 from yonatan-linik/fix-od-positive-exp-fmt
...
CICD / Style/cargo-deny (push) Waiting to run
CICD / Build (push) Blocked by required conditions
CICD / Style/deps (push) Waiting to run
CICD / Documentation/warnings (push) Waiting to run
CICD / MinRustV (push) Waiting to run
CICD / Test all features separately (push) Blocked by required conditions
CICD / Dependencies (push) Waiting to run
CICD / Build/Makefile (push) Blocked by required conditions
CICD / Build/stable (push) Blocked by required conditions
CICD / Build/nightly (push) Blocked by required conditions
CICD / Binary sizes (push) Blocked by required conditions
CICD / Tests/BusyBox test suite (push) Blocked by required conditions
CICD / Tests/Toybox test suite (push) Blocked by required conditions
CICD / Code Coverage (push) Waiting to run
CICD / Separate Builds (push) Waiting to run
CICD / Build/SELinux (push) Blocked by required conditions
GnuTests / Run GNU tests (push) Waiting to run
Android / Test builds (push) Waiting to run
Code Quality / Style/format (push) Waiting to run
Code Quality / Style/lint (push) Waiting to run
Code Quality / Style/spelling (push) Waiting to run
Code Quality / Style/toml (push) Waiting to run
Code Quality / Style/Python (push) Waiting to run
Code Quality / Pre-commit hooks (push) Waiting to run
FreeBSD / Style and Lint (push) Waiting to run
FreeBSD / Tests (push) Waiting to run
od: Fixes float formatting in scientific notation
2025-07-21 11:00:57 +02:00
Etienne Cordonnier
c6119934d8
remove PROJECT_NAME_FOR_VERSION_STRING
...
This fixes out-of-tree builds which are using --manifest-path and ignoring .cargo/config.toml because of https://github.com/rust-lang/cargo/issues/2930 :
```
git clone https://github.com/uutils/coreutils.git
mkdir test && cd test
cargo build --manifest-path=../coreutils/Cargo.toml
```
This also fixes installation of coreutils from crates.io, which also ignores .cargo/config.toml:
```
cargo install coreutils --locked
```
Using `option_env` is not possible because `concat!` needs a string literal.
I don't see a need to change the project name using an environment variable, so let's keep things simple and simply remove it to fix this bug.
Fixes https://github.com/uutils/coreutils/issues/7992
Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
2025-07-20 23:10:52 +02:00
Yonatan Linik
fe4e8e234c
od: Fixes float formatting in scientific notation
...
GNU's od adds a "+" after the "e".
Fixes [#8346 ](https://github.com/uutils/coreutils/issues/8346 )
2025-07-18 22:40:18 +03:00
Daniel Hofstetter
8a8e03eb77
l10n: replace \n with a new line in ftl files
2025-07-18 10:48:01 +02:00
Daniel Hofstetter
4e281313ad
od: fix typo in help
2025-07-17 14:41:06 +02:00
Gabriele Belluardo
8c69980c95
chore(cp): simplify return statement in handle_no_preserve_mode function
2025-07-17 12:19:50 +02:00
Gabriele Belluardo
ff40cb8b09
fix(clippy): allow inefficient_to_string lint in test
2025-07-17 12:19:49 +02:00
Gabriele Belluardo
7b700ccae2
fix(clippy): silent more rules --all-targets --all-features arguments
2025-07-17 12:19:48 +02:00
Martin Kunkel
24a556b8b7
tail: show end of device
...
gnu coreutils will show end of device for block devices.
In current implementation this is skipped as a block devices
are recognized as untailable.
The change ensures that we first try to output the end of any
file and only then tell the observer that the file is not
observable.
2025-07-16 18:54:40 +02:00
yuankunzhang
a8fe603284
stty: support sane settings
2025-07-16 22:33:33 +08:00
Nicolas Boichat
ccad817415
uucore: format: Use .into_owned() for from_utf8_lossy()
...
Suggested by Gemini and I think that's not a bad idea.
2025-07-16 00:28:34 +02:00
Nicolas Boichat
668cefb2e4
uucore: format: Separate function to parse numbers starting with a quote
...
After this, we can use a common extract_value function.
2025-07-16 00:28:34 +02:00
Nicolas Boichat
9ddb8092e7
uucore: num_parser: Copy PartialMatch String in ExtendedParserError
...
In one case, we'll need an actual owned String in PartialMatch,
so it's easier to just use that. Removes a bunch of lifetime things
in the code too.
2025-07-16 00:28:34 +02:00
Nicolas Boichat
5b6a617024
uucore: format: Have get_num return T directly (not result)
...
And fix all the callers, e.g. all the next_ functions.
2025-07-16 00:28:34 +02:00
Nicolas Boichat
51453f833e
uucore: num_parser: Add note about where literals are parsed
2025-07-16 00:28:34 +02:00
Andrew Liebenow
961a27acff
printf: accept non-UTF-8 input in FORMAT and ARGUMENT arguments
...
Other implementations of `printf` permit arbitrary data to be passed
to `printf`. The only restriction is that a null byte terminates
FORMAT and ARGUMENT argument strings (since they are C strings).
The current implementation only accepts FORMAT and ARGUMENT
arguments that are valid UTF-8 (this is being enforced by clap).
This commit removes the UTF-8 validation by switching to OsStr
and OsString.
This allows users to use `printf` to transmit or reformat null-safe
but not UTF-8-safe data, such as text encoded in an 8-bit text
encoding. See the `non_utf_8_input` test for an example (ISO-8859-1
text).
[drinkcat: also squashed in this commit to ease rebase]
Author: Justin Tracey <jdt.dev@unsuspicious.click>
uucore, printf: improve non-UTF-8 format arguments
This fixes handling of format arguments, in part by eliminating duplicate
implementations. Utilities with format arguments other than printf will no
longer accept things like "'a" as numbers, etc.
Co-authored-by: Justin Tracey <jdt.dev@unsuspicious.click>
2025-07-16 00:28:34 +02:00
Dorian Péron
50704da6e8
Merge pull request #8336 from tgrez/main
...
cat: handle broken pipe gracefully
2025-07-15 20:56:46 +02:00
Dorian Péron
4d08b9d554
Merge pull request #8341 from cakebaker/echo_output_version
...
echo: show version when `--version` is the only argument
2025-07-15 19:37:48 +02:00
Tomasz Guz
4406b403b2
cat: handle broken pipe gracefully
2025-07-14 18:25:15 +02:00
Daniel Hofstetter
9c08dd9851
echo: show version when using --version
2025-07-14 12:31:32 +02:00
Sylvestre Ledru
4439f7e03d
du: create the string into the main thread to avoid some translations issue
...
should fix tests/du/inodes.sh
2025-07-14 19:23:04 +09:00
Daniel Hofstetter
afbe90feaf
Merge pull request #8310 from RGBCube/echo-help
...
CICD / Style/cargo-deny (push) Waiting to run
CICD / Build (push) Blocked by required conditions
CICD / Style/deps (push) Waiting to run
CICD / Documentation/warnings (push) Waiting to run
CICD / MinRustV (push) Waiting to run
CICD / Test all features separately (push) Blocked by required conditions
CICD / Dependencies (push) Waiting to run
CICD / Build/Makefile (push) Blocked by required conditions
CICD / Build/stable (push) Blocked by required conditions
CICD / Build/nightly (push) Blocked by required conditions
CICD / Binary sizes (push) Blocked by required conditions
CICD / Tests/BusyBox test suite (push) Blocked by required conditions
CICD / Tests/Toybox test suite (push) Blocked by required conditions
CICD / Code Coverage (push) Waiting to run
CICD / Separate Builds (push) Waiting to run
CICD / Build/SELinux (push) Blocked by required conditions
GnuTests / Run GNU tests (push) Waiting to run
Android / Test builds (push) Waiting to run
Code Quality / Style/toml (push) Waiting to run
Code Quality / Style/format (push) Waiting to run
Code Quality / Style/Python (push) Waiting to run
Code Quality / Style/lint (push) Waiting to run
Code Quality / Style/spelling (push) Waiting to run
Code Quality / Pre-commit hooks (push) Waiting to run
FreeBSD / Style and Lint (push) Waiting to run
FreeBSD / Tests (push) Waiting to run
echo: print help if not posixly correct and only argument is --help
2025-07-14 10:34:30 +02:00
RGBCube
3ea679a29e
echo: print help if not posixly corrent and only argument is --help
2025-07-12 01:37:07 +03:00
Julian Andres Klode
b585e98dac
cp: Fix --no-dereference --parents with symlink source
...
If the source is a symbolic link pointing at a directory,
--parents was ignored, as we entered the "copy as directory"
code path.
Fixes : #8330
2025-07-11 08:09:10 +02:00
Yuri Astrakhan
c7b981f260
chore: fix expl_impl_clone_on_copy lint
...
auto-derived clone generates identical assembly: https://rust.godbolt.org/z/GvenxKcKo
2025-07-10 17:46:01 -04:00
Daniel Hofstetter
685969e275
Merge pull request #8327 from tgrez/main
...
CICD / Build (push) Blocked by required conditions
CICD / Style/cargo-deny (push) Waiting to run
CICD / Test all features separately (push) Blocked by required conditions
CICD / Style/deps (push) Waiting to run
CICD / Documentation/warnings (push) Waiting to run
CICD / MinRustV (push) Waiting to run
CICD / Dependencies (push) Waiting to run
CICD / Build/Makefile (push) Blocked by required conditions
CICD / Build/stable (push) Blocked by required conditions
CICD / Build/nightly (push) Blocked by required conditions
CICD / Binary sizes (push) Blocked by required conditions
CICD / Tests/BusyBox test suite (push) Blocked by required conditions
CICD / Tests/Toybox test suite (push) Blocked by required conditions
CICD / Code Coverage (push) Waiting to run
CICD / Separate Builds (push) Waiting to run
CICD / Build/SELinux (push) Blocked by required conditions
GnuTests / Run GNU tests (push) Waiting to run
Android / Test builds (push) Waiting to run
Code Quality / Style/Python (push) Waiting to run
Code Quality / Style/toml (push) Waiting to run
Code Quality / Style/format (push) Waiting to run
Code Quality / Style/lint (push) Waiting to run
Code Quality / Style/spelling (push) Waiting to run
Code Quality / Pre-commit hooks (push) Waiting to run
FreeBSD / Style and Lint (push) Waiting to run
FreeBSD / Tests (push) Waiting to run
tail: handle broken pipe gracefully
2025-07-10 16:17:37 +02:00
Tomasz Guz
f04ed45a0f
tail: handle broken pipe gracefully
2025-07-10 14:54:02 +02:00
Will Shuttleworth
a2711f06ad
stty: add min and time settings into combination
2025-07-10 08:19:27 -04:00
Will Shuttleworth
93fc669258
stty: add combination settings
2025-07-10 08:19:27 -04:00
Daniel Hofstetter
745ae4b10f
Merge pull request #8292 from RenjiSann/collating
...
CICD / Style/cargo-deny (push) Waiting to run
CICD / Test all features separately (push) Blocked by required conditions
CICD / Build (push) Blocked by required conditions
CICD / Style/deps (push) Waiting to run
CICD / Documentation/warnings (push) Waiting to run
CICD / MinRustV (push) Waiting to run
CICD / Dependencies (push) Waiting to run
CICD / Build/Makefile (push) Blocked by required conditions
CICD / Build/stable (push) Blocked by required conditions
CICD / Build/nightly (push) Blocked by required conditions
CICD / Binary sizes (push) Blocked by required conditions
CICD / Tests/BusyBox test suite (push) Blocked by required conditions
CICD / Tests/Toybox test suite (push) Blocked by required conditions
CICD / Code Coverage (push) Waiting to run
CICD / Separate Builds (push) Waiting to run
CICD / Build/SELinux (push) Blocked by required conditions
GnuTests / Run GNU tests (push) Waiting to run
Android / Test builds (push) Waiting to run
Code Quality / Style/format (push) Waiting to run
Code Quality / Style/lint (push) Waiting to run
Code Quality / Style/spelling (push) Waiting to run
Code Quality / Style/toml (push) Waiting to run
Code Quality / Style/Python (push) Waiting to run
Code Quality / Pre-commit hooks (push) Waiting to run
FreeBSD / Style and Lint (push) Waiting to run
FreeBSD / Tests (push) Waiting to run
i18n: further work, expr support
2025-07-09 16:24:13 +02:00
Johnothan King
6d30b9110a
tr: Fix regression causing read error with sockets ( #8083 )
...
* tr: Fix regression causing read error with sockets
The test used for determining if a file descriptor
tested with fstat points to a directory is traditionally
done by using the S_IFMT mask[^1][^2], e.g.:
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
In Rust, this translates to 'm & libc::S_IFMT == libc::S_IFDIR'.
is_stdin_directory() uses 'has!(mode, S_IFDIR)', which is
**not** equivalent and causes non-directory sockets to be
incorrectly recognized as directories. This causes uu-tr
to break when used with all sockets created with socketpair,
including ksh93 pipes[^3]. Below is an example Rust program
demonstrating why the current check is bogus:
fn main() {
use nix::sys::socket::{socketpair, SockFlag, AddressFamily, SockType};
use nix::sys::stat::fstat;
use libc::{S_IFDIR, S_IFMT, mode_t};
let (_fd1, fd2) = socketpair(AddressFamily::Unix, SockType::Stream, None, SockFlag::empty()).unwrap();
let mode = fstat(&fd2).unwrap().st_mode as mode_t;
if mode & S_IFMT == S_IFDIR { // Equivalent to S_ISDIR()
println!("Not reached"); // Not a dir, so unreachable
}
if mode & S_IFDIR == S_IFDIR { // Bogus check for S_IFDIR
println!("BAD");
}
}
- is_stdin_directory(): Fix the regression introduced in 3e4221a4
by replacing the bogus check with one equivalent to S_ISDIR().
- test_tr.rs: Add a regression test for this bug.
[^1]: https://sourceware.org/git/?p=glibc.git;a=blob;f=io/sys/stat.h;h=4bea9e9a#l123
[^2]: https://git.musl-libc.org/cgit/musl/tree/include/sys/stat.h?id=047a1639#n51
[^3]: cc5e0692/src/cmd/ksh93/sh/io.c (L98-L102)
Fixes https://github.com/uutils/coreutils/issues/7658
* Add comment explaining rationale
Also fix cargo clippy lint.
(In case it isn't obvious, I'm fairly new to Rust)
* Fix more lint
2025-07-09 15:47:16 +02:00
Dorian Peron
82a06e757b
expr: add locale-aware substr
2025-07-09 15:34:07 +02:00
Dorian Peron
8c565ece3e
expr: add locale-aware length
2025-07-09 15:34:07 +02:00
Dorian Peron
7bed9b5a3b
expr: add locale-aware comparison
2025-07-09 15:34:07 +02:00
Dorian Peron
5ec652b59a
expr: add locale-aware index
2025-07-09 15:34:07 +02:00
Dorian Peron
a669a84801
expr: Handle non UTF8 inputs
2025-07-09 15:34:07 +02:00
Yuri Astrakhan
206281e29b
chore: fix uninlined_format_args lint
...
I used this command, plus some manual fixes:
```sh
__CARGO_FIX_YOLO=1 cargo clippy --fix --all-targets --workspace --all-features --allow-dirty
```
2025-07-09 10:50:36 +02:00
Daniel Hofstetter
33a6209833
Merge pull request #8321 from nyurik/unnecessary_semicolon
...
chore: fix unnecessary_semicolon lint
2025-07-09 10:36:05 +02:00
Yuri Astrakhan
4a2634989c
chore: fix unnecessary_semicolon lint
...
I used this command:
```sh
__CARGO_FIX_YOLO=1 cargo clippy --fix --all-targets --workspace --all-features --allow-dirty
```
2025-07-09 09:43:52 +02:00
Yuri Astrakhan
c433b45682
chore: convert comments to markdown docs
...
A lot of functions had reasonable description using `//` instead of `///`. This PR converts them to proper markdown and fixes a few minor styling issues.
2025-07-08 23:34:16 -04:00
Dorian Peron
4b78537432
i18n: add collating
2025-07-08 12:02:48 +02:00
Dorian Peron
bb8744f115
i18n: small refactor, add decimal stuff
2025-07-08 12:02:48 +02:00
Daniel Hofstetter
f5a862c55d
Merge pull request #8315 from bvinc/head_elide_tail
...
CICD / Build (push) Blocked by required conditions
CICD / Style/cargo-deny (push) Waiting to run
CICD / Style/deps (push) Waiting to run
CICD / Documentation/warnings (push) Waiting to run
CICD / MinRustV (push) Waiting to run
CICD / Dependencies (push) Waiting to run
CICD / Build/Makefile (push) Blocked by required conditions
CICD / Build/stable (push) Blocked by required conditions
CICD / Build/nightly (push) Blocked by required conditions
CICD / Binary sizes (push) Blocked by required conditions
CICD / Tests/BusyBox test suite (push) Blocked by required conditions
CICD / Tests/Toybox test suite (push) Blocked by required conditions
CICD / Code Coverage (push) Waiting to run
CICD / Separate Builds (push) Waiting to run
CICD / Test all features separately (push) Blocked by required conditions
CICD / Build/SELinux (push) Blocked by required conditions
GnuTests / Run GNU tests (push) Waiting to run
Android / Test builds (push) Waiting to run
Code Quality / Style/format (push) Waiting to run
Code Quality / Style/lint (push) Waiting to run
Code Quality / Style/spelling (push) Waiting to run
Code Quality / Style/toml (push) Waiting to run
Code Quality / Style/Python (push) Waiting to run
Code Quality / Pre-commit hooks (push) Waiting to run
FreeBSD / Style and Lint (push) Waiting to run
FreeBSD / Tests (push) Waiting to run
head: fix meaning of ---presume-input-pipe
2025-07-08 09:23:44 +02:00
Brian Vincent
20d26aa074
head: fix meaning of ---presume-input-pipe
...
The option ---presume-input-pipe is debug option that should
disable the seeking optimization, not force it to read stdin.
This fixes the GNU test head-elide-tail.
2025-07-07 18:37:48 -07:00
RGBCube
f1436f3949
echo: cleanup
2025-07-08 01:01:27 +02:00