159 Commits

Author SHA1 Message Date
Chris Denton a07879b8ab tty: support printing msys2 tty path 2026-04-30 11:12:22 +02:00
oech3 09f677a3b1 workspace.wordlist.txt: drop unsafe vmsplice 2026-04-23 07:45:59 +02:00
Darren Schroeder ceb09c7014 ls: allow crate users to call ls without having to print everything to stdout (#9851)
* refactor uu_ls so that crate users can call the command without having
the internal print stdout output

* redo changes

* clippy

* help cspell understand dired

* rebase

* try and optimize for memory and speed performance.

update output handling to add streaming mode.

* work on ci issues, optimize uid and gid cache handling, improve dired output calculations

* test fx: change read_dir parameter to mutable reference in collect_directory_entries and enter_directory functions

* update documentation

* more perf tweaks

* fmt

* tweak perf

* Add back (and shorten) comment for 31_556_952

* Update src/uu/ls/src/ls.rs

Co-authored-by: Daniel Hofstetter <daniel.hofstetter@42dh.com>

* Update src/uu/ls/src/ls.rs

Co-authored-by: Daniel Hofstetter <daniel.hofstetter@42dh.com>

---------

Co-authored-by: Sylvestre Ledru <sylvestre@debian.org>
Co-authored-by: Daniel Hofstetter <daniel.hofstetter@42dh.com>
2026-04-17 14:26:23 +02:00
xtqqczze 5b54e084bb chore: remove unused entries from spelling wordlist 2026-04-16 14:06:35 +02:00
xtqqczze bec5c25387 chore: run cargo shear 2026-04-16 09:12:10 +02:00
Sylvestre Ledru 717140a13c ci: group openbsd log sections for easier failure triage 2026-04-15 09:37:30 +02:00
oech3 bfdf580f0e cat: do not splice() on FUSE 2026-04-12 16:33:58 +02:00
Anthony 36ac85b1f3 tests: add WASI integration test support via wasmtime 2026-04-12 15:19:04 +02:00
oech3 b6c5dd1325 coreutils: Protect against env -a for security (#10773)
This prevents an attacker from spoofing argv[0] to bypass apparmor restrictions.

- `env -a false ls` now correctly runs `ls` instead of dispatching as `false`
- Also works under masked `/proc` (does not rely on /proc/self/exe).

Closes #10135
2026-04-05 00:45:42 +02:00
Sylvestre Ledru 8c100daa66 ls: fall back to "." metadata for ".." on WASI (#11633)
* ls: fall back to "." metadata for ".." on WASI

On WASI the sandbox blocks access to the parent directory at the
preopened root, causing ls -a to show an error and display ".."
with question marks. Fall back to the current directory metadata
so the entry appears with valid information.
2026-04-04 22:21:07 +02:00
Sylvestre Ledru a58892c500 ignore some CI words 2026-04-03 18:57:24 +02:00
oech3 9eae6db10a cat: avoid pipe() if stdout is pipe 2026-04-02 09:54:24 +02:00
oech3 162abf9de4 cat: improve splice fast-path 2026-04-02 09:54:24 +02:00
Kevin Burke 6e18efb218 uucore: support realtime signals (RTMIN/RTMAX) in signal_by_name_or_value
`signal_by_name_or_value()` only looked up signals from the static
ALL_SIGNALS array, which doesn't include realtime signals. This caused
`timeout -s RTMAX`, `kill -s RTMIN`, and `env --default-signal=RTMAX`
to reject valid signal names.

Extend the function to fall back to realtime_signal_bounds() for both
name lookups and numeric values in the realtime range, matching the
behavior already present in signal_list_value_by_name_or_number().

Also fix timeout's report_if_verbose() to use signal_list_name_by_value
instead of signal_name_by_value, so verbose output doesn't panic for
realtime signal numbers.

Fixes GNU test: tests/env/env-signal-handler.sh

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-31 14:48:50 +02:00
oech3 21e3b1ea82 nice: Remove unsafe and reduce bin size (#11489) 2026-03-31 08:05:59 +02:00
oech3 572f3a2416 yes, coreutils: backport(enable) 2 GnuTests (#11480) 2026-03-25 08:24:32 +01:00
Daniel Tang 309efd892a docs(performance): Use gnuls where ls is uutils (#11342)
Some distributions have already adopted uutils as `/bin/ls`. Continuing
to compare against the binary at that path would only result in
comparing against a much older uutils version and fail to compare
against GNU Coreutils at all. Ubuntu 25.10 has prefixed GNU's binaries
with "gnu", so mention this to retain the intended behavior.
2026-03-15 23:54:09 +01:00
oech3 d327ee61ef Cargo.toml: Define feat_wasm (#11074) 2026-03-04 23:52:28 +01:00
Jake Abendroth 0c41299975 fix(install): prevent symlink race condition in install -D (fixes #10013) (#10140) 2026-02-14 21:47:33 +01:00
Dorian Péron 9459361524 Merge branch 'main' into hashsum-del-pre 2026-02-05 15:02:12 +01:00
Aaron Ang c9c78b2415 chore: run pre-commit on all files (#10119) 2026-02-04 22:12:53 +01:00
oech3 a010e0192d Remove the word: hashsums 2026-02-03 16:17:59 +09:00
Chris Dryden 67046f5df7 timeout: add all signal handlers, pass on signals to child, add ignored signal handling (#10254)
There was quite a bunch of different features missing in timeout, to start off, now that we have a mechanism to read the SIGPIPE handlers before they are overwritten by the rust runtime, it means that we can not propagate this signal down to the child processes if the signal is set to ignore.

This also includes all of the latest changes since 9.9 where the specific signal sent to timeout will be propagated instead of just defaulting to a TERM signal.
2026-01-26 20:41:39 +01:00
Sylvestre Ledru 6124866934 date: add locale-aware calendar support for era years (#10473)
Implements era year calculation for Buddhist, Persian Solar Hijri, and Ethiopian calendars based on locale detection. The %Y format specifier now outputs era-appropriate years while maintaining Gregorian calendar for ISO-8601 and RFC-3339 formats for interoperability.
2026-01-26 09:42:26 -08:00
Jan Verbeek 55e756f67a shuf: feature: Add --random-seed option
This adds a new option to get reproducible output from a seed. This
was already possible with --random-source, but doing that properly was
tricky and had poor performance.

Adding this option implies a commitment to keep using the exact same
algorithms in the future. For that reason we only use third-party
libraries for well-known algorithms and implement our own
distributions on top of that.

-----

As a teenager on King's Day I once used `shuf` for divination. People
paid €0.50 to enter a cramped tent and sat down next to me behind an
old netbook. I would ask their name and their sun sign and pipe this
information into `shuf --random-source=/dev/stdin`, which selected
pseudo-random dictionary words and `tee`d them into `espeak`.

If someone's name was too short `shuf` crashed with an end of file
error. --random-seed would have worked better.
2026-01-25 07:08:32 +01:00
Jan Verbeek a8fa8529a8 shuf: correctness: Make --random-source compatible with GNU shuf
When the --random-source option is used uutils shuf now gives
identical output to GNU shuf in many (but not all) cases. This is
helpful to users who use it to get deterministic output, e.g. by
combining it with `openssl` as suggested in the GNU info pages.

I reverse engineered the algorithm from GNU shuf's output. There may
be bugs.

Other modes of shuffling still use `rand`'s `ThreadRng`, though they
now sample a uniform distribution directly without going through the
slice helper trait.

Additionally, switch from `usize` to `u64` for `--input-range` and
`--head-count`. This way the same range of numbers can be generated on
32-bit platforms as on 64-bit platforms.
2026-01-25 07:05:39 +01:00
Jan Verbeek 3017ddad9e shuf: perf: Use itoa for integer formatting
This gives a 1.8× speedup over a stdlib formatted write for
`shuf -r -n1000000 -i1-1024`.

The original version of this commit replaced a formatted write, but
before it got merged main received optimized manual formatting from
another PR. The speedup of itoa over the manual write is around 1.1×,
much less dramatic.
2026-01-25 07:05:39 +01:00
Chris Dryden 525d1f88ec cp/mv: suppress xattr ENOTSUP errors for optional preservation (#10083)
* cp/mv: suppress xattr ENOTSUP errors for optional preservation

* mv: copy xattrs for symlink fallback and format tests

* cp: fix test expectation for GNU-compatible error format

* fix test portability for Android and xattr detection

---------

Co-authored-by: Sylvestre Ledru <sylvestre@debian.org>
2026-01-18 22:42:14 +01:00
Cả thế giới là Rust 309e3beff2 Merge pull request #9437 from naoNao89/sync-remove-unwrap
sync: Reset O_NONBLOCK flag after file validation to match GNU behavior
2026-01-18 18:36:17 +01:00
Dalton Caron b5bbabc18a install: prevent TOCTOU race attack (#10067)
* install: prevent TOCTOU race attack

* cspell: add TOCTOU acronym to jargon word list
2026-01-17 18:08:14 +01:00
Cả thế giới là Rust b3ad96f8a0 refactor(dirname): implement pure string manipulation per POSIX (#8936) 2026-01-17 17:36:28 +01:00
Chris Dryden 3441de92f2 tail: fix --pid with FIFO by using non-blocking open (#9663)
* tail: fix --pid with FIFO by using non-blocking open

* Address review comments: propagate fcntl errors and remove Windows stub

---------

Co-authored-by: Sylvestre Ledru <sylvestre@debian.org>
Co-authored-by: Sylvestre Ledru <sylvestre.ledru@gmail.com>
2026-01-10 12:39:14 +01:00
Sylvestre Ledru 0f182674ea Merge pull request #10150 from ChrisDryden/fix-rootfs-gnu-test-v2
ci: add df/skip-rootfs test to SMACK/ROOTFS CI
2026-01-09 23:21:51 +01:00
Chris Dryden b684d1606d seq: add SIGPIPE handling for GNU compatibility (#9657) 2026-01-09 23:20:59 +01:00
Christopher Dryden fc60a33f96 ci: add df/skip-rootfs test to SMACK/ROOTFS CI 2026-01-09 20:54:51 +00:00
Chris Dryden b5a49f33b5 tac: use temp file for stdin to respect TMPDIR and handle disk-full errors (#10094) 2026-01-09 20:31:46 +01:00
Jake Abendroth 30239e69a3 feat: Expand safe directory traversal to all Unix platforms and fix related type conversions. (#9792)
---------

Co-authored-by: Sylvestre Ledru <sylvestre@debian.org>
2026-01-09 08:22:56 +01:00
Cả thế giới là Rust 9cc2e096d8 fix: handle write errors gracefully instead of panicking
Fixes #9769

Changed error.print().unwrap() to let _ = error.print() to prevent
panic when writing to /dev/full. Added regression test in test_cat.rs.
2026-01-05 09:00:36 +00:00
Guillem L. Jara c30593a40a fix(stat, mknod): replace custom (flawed in stat) logic with libc's.
Now uucore::fs reexports libc's major(), minor() and makedev() directives.
2026-01-01 19:49:10 +01:00
Chris Dryden c8790e6743 stty: use stdin for TTY operations instead of /dev/tty (#9881)
* stty: use stdin for TTY operations instead of /dev/tty

* Add tests for stty stdin behavior and fix platform-specific error messages

---------

Co-authored-by: Sylvestre Ledru <sylvestre@debian.org>
2025-12-31 20:02:05 +01:00
mattsu da543cb76e fix(wc):GNU wc-cpu.sh (#9144)
* wc: align SIMD policy integration

- use SimdPolicy::detect with hardware feature labeling
- keep SIMD behavior respecting GLIBC_TUNABLES
- consolidate wc SIMD debug output and tests

* refactor(wc): simplify SIMD feature collection in debug output

- Changed multi-line SIMD feature vector creation to a single-line expression for improved readability and consistency with surrounding code.
- No functional changes; only stylistic refactoring in the wc debug logic.

* feat(wc): enhance debug output for SIMD hardware support limitations

Add new localization strings and logic to provide detailed debug information when SIMD support is limited by GLIBC_TUNABLES, including lists of disabled and enabled features. Refactor SIMD allowance check for better accuracy in detecting runtime support.

* refactor: consolidate SIMD feature handling in wc command

Refactor SIMD feature detection and reporting in the wc utility by introducing a WcSimdFeatures struct to group enabled, disabled, and runtime-disabled features. This replaces multiple separate functions with a single function, improving code organization and efficiency by reducing redundant iterations over feature lists. Also rename helper functions for clarity and update debug output logic accordingly.

* Update src/uu/wc/src/wc.rs

Co-authored-by: Dorian Péron <72708393+RenjiSann@users.noreply.github.com>

* Update src/uu/wc/locales/en-US.ftl

Co-authored-by: Dorian Péron <72708393+RenjiSann@users.noreply.github.com>

* Update src/uu/wc/locales/fr-FR.ftl

Co-authored-by: Dorian Péron <72708393+RenjiSann@users.noreply.github.com>

* feat(wc): import show_error for enhanced error reporting

Add the show_error import from uucore to enable better error handling in the wc utility, allowing for consistent error messages in line with the project's style.

---------

Co-authored-by: Dorian Péron <72708393+RenjiSann@users.noreply.github.com>
2025-12-27 01:06:08 +01:00
Cả thế giới là Rust ec063a7c37 Added unit tests for stty.rs to improve test coverage (#9094)
* stty: Add 101 unit tests and 16 integration tests to improve coverage

Add comprehensive test coverage for stty:

Unit tests (src/uu/stty/src/stty.rs):
- Flag struct methods and builder pattern (7 tests)
- Control character parsing and formatting (19 tests)
- All combination settings expansion (26 tests)
- Termios modification functions (13 tests)
- String-to-flag/combo/baud parsing (19 tests)
- TermiosFlag trait implementations (5 tests)
- Helper and utility functions (10 tests)
- Trait implementations (2 tests)

Integration tests (tests/by-util/test_stty.rs):
- Help and version output validation (2 tests)
- Invalid argument handling (3 tests)
- Control character overflow validation (2 tests)
- Grouped flag removal validation (1 test)
- File argument error handling (1 test)
- Conflicting print modes (1 test)
- Additional TTY-dependent tests (6 tests, ignored in CI)

Unit test coverage improved from 0% to 43.76% (207/473 lines).
Integration tests validate argument parsing and error handling.

Addresses #9061

* stty: Add essential unit tests and integration tests to improve coverage

- Added 11 essential unit tests for complex internal functions:
  * Control character parsing (string_to_control_char)
  * Control character formatting (control_char_to_string)
  * Combination settings expansion (combo_to_flags)
  * Terminal size parsing with overflow handling (parse_rows_cols)
  * Sane control character defaults (get_sane_control_char)

- Added 16 integration tests for command behavior:
  * Help/version output validation
  * Invalid argument handling
  * Control character overflow validation
  * Grouped flag removal validation
  * File argument error handling
  * Conflicting print modes
  * TTY-dependent tests (marked as ignored for CI)

Unit tests focus on complex parsing logic that's difficult to test via
integration tests. Integration tests validate actual command behavior.

Coverage improved from 0% to 43.76% (207/473 lines).

Fixes #9061

* stty: Add comprehensive unit and integration tests for error handling

- Add unit tests for parse_rows_cols() with edge cases and wraparound
- Add unit tests for string_to_baud() with platform-specific handling
- Add unit tests for string_to_combo() with all combo modes
- Add 17 integration tests for missing arguments and invalid inputs
- Enhance test_invalid_arg() with better error message assertions
- Update coverage script for improved reporting

Coverage improved from 22.26% to 23.14% regions.

* stty: Add Debug and PartialEq derives for test assertions

- Add #[derive(Debug, PartialEq)] to AllFlags enum
- Add PartialEq to Flag struct derives
- Enables assert_eq! macro usage in unit tests

* stty: Fix formatting and clippy warnings in tests

- Replace assert_eq! with assert! for boolean comparisons
- Fix line wrapping for long logical expressions
- Use inline format string syntax (e.g., {err} instead of {})
- All 25 unit tests pass
- No clippy warnings

* stty: Add inline spell-checker ignores for test strings

- Add spell-checker:ignore comments for test data (notachar, notabaud, susp)
- Add spell-checker:ignore comments for French error strings (Valeur, entier, invalide)
- Fixes cspell validation without modifying global config

* perf: gate PartialEq derive to test builds only

The PartialEq derive was being compiled into release builds even though
it's only used in test code. This caused a 3.33% performance regression
in the du_human_balanced_tree benchmark due to increased binary size
affecting CPU cache efficiency.

Changes:
- stty.rs: Gate PartialEq derive on Flag<T> with #[cfg_attr(test, derive(PartialEq))]
- flags.rs: Gate PartialEq derive on AllFlags enum with #[cfg_attr(test, derive(PartialEq))]

This eliminates the performance regression while keeping all test code
functional and unchanged.

---------

Co-authored-by: Sylvestre Ledru <sylvestre@debian.org>
2025-12-27 00:48:07 +01:00
mattsu 57d3fce29e chroot: use execvp directly instead of process::Command (#9013)
* chroot: exec command with Command::exec and map errors

* test(chroot): add error handling and UID/GID retention tests

* chore(cspell): add noexec to jargon wordlist
2025-12-26 23:59:06 +01:00
Chris Dryden 66aea37a4b Enable cat, sort, readlink and tr tests in busybox test suite (#9850)
* Enable cat and sort tests in busybox test suite

* Adding Tr and Readlink feature flags
2025-12-26 09:24:54 +01:00
Cả thế giới là Rust 16f73503b3 feat(date): add locale-aware hour format detection (#9654)
Implement locale-aware 12-hour vs 24-hour time formatting that respects
LC_TIME environment variable preferences, matching GNU coreutils 9.9 behavior.

- Add locale.rs module with nl_langinfo() FFI for POSIX locale queries
- Detect locale hour format preference (12-hour vs 24-hour)
- Use OnceLock caching for performance (99% faster on repeated calls)
- Update default format to use locale-aware formatting
- Add integration tests for C and en_US locales

Fixes compatibility with GNU coreutils date-locale-hour.sh test.
2025-12-19 17:05:31 +01:00
Dorian Peron 231a857c5f Fix hardware capabilities detection; cksum --debug 2025-12-12 14:51:50 +01:00
mattsu 43dd238fea od: make GNU test od.pl pass (#9334)
* 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>
2025-11-28 08:23:55 +01:00
naoNao89 8d740257ac feat(uucore): add shared hardware detection module
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
2025-11-24 12:53:58 +01:00
mattsu 4a48c9e35e Merge pull request #9126 from mattsu2020/fold_fix
fix(fold): GNU fold-characters.sh test
2025-11-13 11:41:39 +01:00
Cả thế giới là Rust fd83181ac2 Fix EINTR handling in cat, od, and comm (#8946)
* fix: handle EINTR (signal interruptions) in cat, od, and comm

Add proper retry loops for ErrorKind::Interrupted in I/O operations
to handle signals like SIGUSR1 that can interrupt read/write calls.

This pattern is proven in production - identical to PR #6025 (merged
March 2024) which fixed dd's EINTR handling for GNU test dd/stats.sh.
The same pattern is already used in 9+ utilities (head, tail, tee, wc,
sort, sum, tr, shuf, dd) without issues.

Changes:
- cat: Fix write_fast() and write_lines() to retry on EINTR
- od: Fix PartialReader::read() in all three read paths
- comm: Fix are_files_identical() for both file readers
- tests: Add InterruptingReader/Writer test utilities

Historical context:
- Pattern validated by cre4ture's PR #6025 (dd EINTR fix)
- Matches existing implementations in dd/dd.rs:450,881
- POSIX best practice for signal-interrupted I/O

Fixes #1275

* fix: handle EINTR (signal interruptions) in cat, od, and comm

Add proper retry loops for ErrorKind::Interrupted in I/O operations to handle signals like SIGUSR1 that can interrupt read/write calls.

Pattern matches PR #6025 (dd EINTR fix) and is already used in 9+ utilities. Changes:
- cat: Fix write_fast() and write_lines() to retry on EINTR
- od: Fix PartialReader::read() in all three read paths
- comm: Fix are_files_identical() for both file readers
- tests: Add visible EINTR integration tests for CI

Addresses sylvestre's review feedback on code documentation and CI test visibility.

* style: apply cargo fmt formatting to EINTR changes

* test: fix EINTR integration test failures

- Fix comm test: use stdout_contains instead of stdout_only for tabbed output
- Fix od test: create new command instance to avoid 'already run this UCommand' error
- Remove unused imports and dead code to eliminate compiler warnings
- Both tests now pass without warnings or errors

* style: fix formatting and remove duplicate comment in od test

* ci: add EINTR and related technical terms to appropriate cspell dictionaries

- Add EINTR, eintr, nextest to jargon.wordlist.txt (technical/systems programming terms)
- Add SIGUSR, SIGINT, etc. to shell.wordlist.txt (POSIX signals)
- Add uutils, coreutils, ucmd, etc. to workspace.wordlist.txt (project-specific terms)
- Fixes CI cspell warnings for legitimate technical terminology
- Proper categorization follows existing dictionary structure
2025-10-26 13:59:47 +01:00