Feature-gated binary (--features completions) that generates bash/zsh/fish/
elvish/powershell completions from each tool's uu_app() definition.
Usage:
shadow-rs-completions passwd --shell bash
shadow-rs-completions --all --shell zsh --dir completions/
Also updates generate-completions.sh to use the new binary and adds
windows-sys skip to deny.toml for transitive clap dep.
Fixes#106
Fixes found by Gemini code review:
Fixes#18 — lock: TOCTOU race eliminated via lock-via-link pattern.
Write PID to temp file, hard_link() to lock path (atomic POSIX).
Two processes detecting stale lock simultaneously can't both win.
Fixes#19 — atomic: temp file created with 0o600 from the start.
Uses OpenOptions::create_new().mode() instead of File::create().
No window where shadow hashes are world-readable.
Fixes#20 — nscd: absolute paths (/usr/sbin/nscd, /usr/sbin/sss_cache).
Prevents PATH injection in setuid-root context.
Fixes#21 — error: thiserror derive replaces manual Display/Error impls.
Less code, less room for mistakes. #[from] for io::Error, #[source]
for IoPath.
Fixes#22 — parsers: splitn() iterator replaces Vec allocation.
Zero heap allocation for field splitting on every line.
Fixes#23 — deny.toml: license allowlist + advisory scanning.
cargo deny check passes (advisories ok, bans ok, licenses ok, sources ok).
142 tests passing on Debian/Alpine/Fedora, zero clippy warnings.