tools.rs: new helper to get uid/gid for the sepcified system user.

Or is there an easier way to get that info?
This commit is contained in:
Dietmar Maurer 2019-02-15 15:33:12 +01:00
parent f0a6112451
commit 5d14eb6a76
1 changed files with 14 additions and 1 deletions

View File

@ -48,6 +48,7 @@ macro_rules! try_block {
{ $($token:tt)* } => {{ (|| -> Result<_,_> { $($token)* })() }} { $($token:tt)* } => {{ (|| -> Result<_,_> { $($token)* })() }}
} }
/// The `BufferedReader` trait provides a single function /// The `BufferedReader` trait provides a single function
/// `buffered_read`. It returns a reference to an internal buffer. The /// `buffered_read`. It returns a reference to an internal buffer. The
/// purpose of this traid is to avoid unnecessary data copies. /// purpose of this traid is to avoid unnecessary data copies.
@ -277,7 +278,19 @@ pub fn file_chunker<C, R>(
Ok(()) Ok(())
} }
/// Returns the hosts node name (UTS node name) // Returns the Unix uid/gid for the sepcified system user.
pub fn getpwnam_ugid(username: &str) -> Result<(libc::uid_t,libc::gid_t), Error> {
let info = unsafe { libc::getpwnam(std::ffi::CString::new(username).unwrap().as_ptr()) };
if info == std::ptr::null_mut() {
bail!("getwpnam '{}' failed", username);
}
let info = unsafe { *info };
Ok((info.pw_uid, info.pw_gid))
}
// Returns the hosts node name (UTS node name)
pub fn nodename() -> &'static str { pub fn nodename() -> &'static str {
lazy_static!{ lazy_static!{