# etc-passwd
[](https://doc.rust-lang.org/cargo/reference/manifest.html#the-badges-section)
[](#license)
[](https://crates.io/crates/etc-passwd)
[](https://docs.rs/etc-passwd/)
[](https://doc.rust-lang.org/cargo/reference/manifest.html#the-rust-version-field)
[](https://github.com/gifnksm/etc-passwd/actions/workflows/rust-ci.yml)
[](https://codecov.io/gh/gifnksm/etc-passwd)
Get user information stored in the password file `/etc/passwd`.
This crate provides a safe wrapper for libc functions such as [`getpwnam_r(3)`] and [`getpwuid_r(3)`].
## Usage
Add this to your `Cargo.toml`:
```toml
[dependencies]
etc-passwd = "0.2.2"
```
## Examples
Get a current user information:
```rust
use etc_passwd::Passwd;
if let Some(passwd) = Passwd::current_user()? {
println!("current user name is: {}", passwd.name.to_str()?);
println!("your user id is: {}", passwd.uid);
println!("your group id is: {}", passwd.gid);
println!("your full name is: {}", passwd.gecos.to_str()?);
println!("your home directory is: {}", passwd.dir.to_str()?);
println!("your login shell is: {}", passwd.shell.to_str()?);
} else {
println!("oops! current user is not found... who are you?");
}
```
[`getpwnam_r(3)`]: https://man7.org/linux/man-pages/man3/getpwnam_r.3.html
[`getpwuid_r(3)`]: https://man7.org/linux/man-pages/man3/getpwuid_r.3.html
## Minimum supported Rust version (MSRV)
The minimum supported Rust version is **Rust 1.56.1**.
At least the last 3 versions of stable Rust are supported at any given time.
While a crate is pre-release status (0.x.x) it may have its MSRV bumped in a patch release.
Once a crate has reached 1.x, any MSRV bump will be accompanied with a new minor version.
## License
Licensed under either of
* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or <https://www.apache.org/licenses/LICENSE-2.0>)
* MIT license ([LICENSE-MIT](LICENSE-MIT) or <https://opensource.org/licenses/MIT>)
at your option.
### Contribution
Unless you explicitly state otherwise, any contribution intentionally
submitted for inclusion in the work by you, as defined in the Apache-2.0
license, shall be dual licensed as above, without any additional terms or
conditions.