diff options
Diffstat (limited to 'src/passwd.rs')
-rw-r--r-- | src/passwd.rs | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/passwd.rs b/src/passwd.rs new file mode 100644 index 0000000..40ec947 --- /dev/null +++ b/src/passwd.rs @@ -0,0 +1,11 @@ +use libc::uid_t; +use std::ffi::CStr; + +pub fn get_uid_by_name<S: AsRef<CStr> + ?Sized>(name: &S) -> Option<uid_t> { + let passwd = unsafe { libc::getpwnam(name.as_ref().as_ptr()) }; + if !passwd.is_null() { + Some(unsafe { *passwd }.pw_uid) + } else { + None + } +} |