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:
parent
f0a6112451
commit
5d14eb6a76
15
src/tools.rs
15
src/tools.rs
|
@ -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!{
|
||||||
|
|
Loading…
Reference in New Issue