weili a70f5ccd7c find: -ls: don't panic on an unmapped owner uid/gid
`find <file> -ls` panicked (exit 101) when the file's owning uid (or gid) had
no `/etc/passwd` (`/etc/group`) entry: it resolved the name with
`User::from_uid(...).unwrap().unwrap()`, and the inner unwrap aborts on the
`Ok(None)` that an unmapped id returns. Unmapped owners are routine (extracted
archives, NFS, deleted accounts, container images).

Resolve the uid/gid via `uucore::entries::uid2usr`/`gid2grp`, falling back to
the numeric id when there is no entry, matching GNU find (which prints the
number). These helpers already serialize the non-thread-safe getpwuid/getgrgid
behind a mutex, so reuse them rather than reimplementing the lookup.

Add a -ls integration test that chowns a file to an unmapped id and checks the
numeric fallback; it skips when the process lacks the privilege to do so.
2026-06-10 07:45:53 +02:00
2026-04-08 16:40:31 +02:00
2023-08-19 19:34:30 +02:00
2017-03-08 14:39:37 +00:00
2025-05-05 09:15:45 -07:00
2026-05-05 09:02:14 +02:00

findutils

Crates.io Discord License dependency status codecov

Rust implementation of GNU findutils: xargs, find, locate and updatedb. The goal is to be a full drop-in replacement of the original commands.

Run the GNU testsuite on rust/findutils:

bash util/build-gnu.sh

# To run a specific test:
bash util/build-gnu.sh tests/misc/help-version.sh

Comparing with GNU

Evolution over time - GNU testsuite Evolution over time - BFS testsuite

Build/run with BFS

bfs is a variant of the UNIX find command that operates breadth-first rather than depth-first.

bash util/build-bfs.sh

# To run a specific test:
bash util/build-bfs.sh posix/basic

For more details, see https://github.com/uutils/findutils-tracking/

S
Description
No description provided
Readme MIT 2.7 MiB
Languages
Rust 98.7%
Shell 1%
Python 0.3%