* feat: Add support for long double floating-point numbers and refine general float formatting.
* feat: Enhance `od` error reporting for file I/O, width, and offset parsing, including overflow detection and input validation.
* feat: Improve long double parsing by converting f128 to f64, enhance overflow error reporting with `libc::ERANGE`, and prevent final offset printing on input errors.
* style: Apply minor formatting adjustments across the `od` module.
* refactor: simplify float formatting logic and update string handling syntax
* fix: Correct float formatting logic to use decimal for numbers within range and exponential otherwise.
* refactor(test): use helper function in test_calculate_alignment
Replace repetitive assert_eq! calls with a new assert_alignment helper
to improve test readability and reduce code duplication. The helper
encapsulates alignment checks for OutputInfo::calculate_alignment,
making tests clearer and easier to maintain.
* feat(cspell): add ERANGE to jargon wordlist
Added "ERANGE" to the dictionary to prevent spell checker flagging it as a misspelling, as it's a valid errno constant from C libraries.
* feat(od): improve width error handling and subnormal float output
Refactor width option parsing in OdOptions to use i18n-compatible error messages via translate! macro, consolidating redundant error branches for better maintainability. Enhance float formatting for f16 and bf16 by introducing format_binary16_like helper to properly display subnormal values with exponential notation, removing the obsolete format_float_simple function and adding subnormal detection functions for accurate representation in od's output.
* refactor(od): simplify format_item_bf16 by removing redundant variable
Remove unnecessary `value` variable in `format_item_bf16` function, eliminating
a redundant cast and inline `f` directly for clarity and minor efficiency gain.
* fix(od): standardize option names in error messages
Remove hardcoded "--" prefixes from localization strings in en-US.ftl and fr-FR.ftl, replacing with a computed display name that includes "--" and optionally the short form (e.g., "--option" or "--option, -s"). Update parse_bytes_option and read_bytes functions to pass an option_display_name, enabling consistent error message formatting across localizations. Add validation to reject zero width values as invalid arguments. Improves user experience by providing clearer, more consistent option references in error outputs.
* refactor: condense format! macro in format_item_bf16 for readability
Removed unnecessary line breaks in the format! expression, keeping the code more concise while maintaining functionality. This improves code style in the float printing module.
* fix(od): add external quoting for filenames in error messages
The MultifileReader now uses `fname.maybe_quote().external(true)` when displaying permission and I/O errors, ensuring filenames are properly quoted for user-facing output (e.g., handling special characters that might confuse shells). This prevents potential issues with filename display in error logs.
* refactor(od): Rename f128_to_f64 to u128_to_f64 for clarity
Renamed the function in input_decoder.rs from f128_to_f64 to u128_to_f64
to accurately reflect its purpose of converting u128 integer bits to f64,
improving code readability and reducing potential confusion over float types.
* refactor(od): simplify error handling in OdOptions using combinators
Use map_err and the try operator to replace a verbose match statement,
making the code more concise and idiomatic Rust. This improves readability
without altering functionality.
* Update src/uu/od/src/od.rs
Co-authored-by: Daniel Hofstetter <daniel.hofstetter@42dh.com>
* Update src/uu/od/src/od.rs
Co-authored-by: Daniel Hofstetter <daniel.hofstetter@42dh.com>
* Update src/uu/od/src/parse_inputs.rs
Co-authored-by: Daniel Hofstetter <daniel.hofstetter@42dh.com>
* Update src/uu/od/src/od.rs
Co-authored-by: Daniel Hofstetter <daniel.hofstetter@42dh.com>
* Update src/uu/od/src/parse_inputs.rs
Co-authored-by: Daniel Hofstetter <daniel.hofstetter@42dh.com>
* Update src/uu/od/src/parse_inputs.rs
Co-authored-by: Daniel Hofstetter <daniel.hofstetter@42dh.com>
* refactor(od): remove leaking from translated error messages in parse_offset_operand
Eliminated use of `.leak()` and unnecessary `.to_string()` calls on translated error strings in the `parse_offset_operand` function. This simplifies error handling, improves memory safety by avoiding intentional leaks, and makes the code cleaner without functional changes.
---------
Co-authored-by: Daniel Hofstetter <daniel.hofstetter@42dh.com>
* fix(seq): handle BrokenPipe like GNU
* test: add Unix-specific test for seq command broken pipe handling
- Ensures seq exits gracefully with code 0 and reports "Broken pipe" error on stderr when stdout pipe is prematurely closed
- Validates correct behavior for common scenario where output is piped to commands like head that terminate early
* refactor(test): translate Japanese comment to English in test_seq.rs
- Updated a comment in the test for broken pipe behavior to use English instead of Japanese, enhancing readability for non-Japanese speakers and aligning with project standards. No functional changes to the test logic.
* Implemented saved state parser for stty
* Add compatibility to macos flag type
* Added many example state parsing integration tests with GNU compatibility checks and documentation
* Spelling and formatting fixes
* Matching behaviour of adding the help command after invocations and spelling fixes
* GNU tests were being skipped because they were not at the sufficient version
* Fixed messaging error for invalid states to not show full path
* Normalizing the test output and reverting lib change
* Discovered that the limit depends on platform specific values derived from a LIBC value
* Spelling fixes and setting flags to 0 for cross platform compatibility
* Clippy fixes
* Disabling tests due to invalid printing of control chars and using GNU for printing
* Redisabling failing test as outside of the scope of this PR
* Adding g prefix support to normalize stderr
* Spell checker fixes
* Normalizing command for both gnu and uutils output
* removing single value from testing since it can be interpreted as Baud rate
* Fixing spelling mistake
Add shared CPU hardware capability detection in uucore to prevent
code duplication across utilities. This provides a unified interface
for detecting CPU features (AVX512, AVX2, PCLMUL, SSE2, ASIMD) and
respecting GLIBC_TUNABLES environment variable.
This unblocks PR #9088 (cksum --debug) and PR #9144 (wc --debug) by
providing a common implementation that both utilities can use.
Features:
- CPU feature detection with caching (singleton pattern)
- GLIBC_TUNABLES parsing for hwcaps restrictions
- Cross-platform support (x86/x86_64, aarch64)
- Comprehensive test coverage
- Zero-cost abstractions using std::arch
Implementation details:
- Uses std::arch feature detection (no external deps for detection)
- Adds cfg-if dependency for conditional compilation
- Feature-gated behind "hardware" feature flag
- Android excluded (no CPUID access in sandboxed environment)
Related: #9088, #9144
- Replace get_many().unwrap() with ok_or_else() to handle missing command
- Replace next().unwrap() with pattern matching for safety
- Replace tempdir().unwrap() with map_err() to handle temp dir failures
All stdbuf internal errors now properly exit with code 125 per GNU specification:
https://www.gnu.org/s/coreutils/manual/html_node/stdbuf-invocation.html
* Adding combining character support for fold
* add fullwidth to the spell ignore list
* addressing comments and cargo fmt fixes
* clippy fixes for test files
---------
Co-authored-by: Christopher Illarionova <drydench@amazon.com>
Co-authored-by: Sylvestre Ledru <sylvestre@debian.org>
* cp: allow directory merging when destination was just created
Previously, when copying to a destination that was created in the same
cp call, the operation would fail with "will not overwrite just-created"
for both files and directories. This change allows directories to be
merged (matching GNU cp behavior) while still preventing file
overwrites.
The fix checks if both the source and destination are directories
before allowing the merge. If either is a file, the original error
behavior is preserved to prevent accidental file overwrites.
Fixes the case where copying multiple directories to the same
destination path would incorrectly error instead of merging their
contents.
fixes: #9318
* test_cp: Update with the suggestion
Co-authored-by: Daniel Hofstetter <daniel.hofstetter@42dh.com>
---------
Co-authored-by: Daniel Hofstetter <daniel.hofstetter@42dh.com>
* Enhance mode parsing to support comma-separated mode strings in `parse` function. Add tests for comma-separated mode handling in file and directory creation.
* Add comprehensive tests for mode parsing in `parse` function, covering numeric, symbolic, and mixed modes, as well as handling of invalid inputs and umask considerations.
---------
Co-authored-by: Sylvestre Ledru <sylvestre@debian.org>
• Enable args_override_self(true) for repeated flags
• Remove unnecessary ArgAction::Append calls
• Fix tests to verify last value wins, not just succeeds
• Update test output validation for repeated flags
Fixes#9132