getpwnam: Give precise error message if we cannot lookup the user

This commit is contained in:
Albert S. 2020-09-14 19:45:58 +02:00
parent bb0b2886e9
commit 659f7bd320

View File

@ -82,6 +82,12 @@ fn getpwnam(username: &str) -> std::io::Result<Passwd> {
let username_ptr = username_c.as_ptr(); let username_ptr = username_c.as_ptr();
let pwnamresult: *mut libc::passwd = unsafe { libc::getpwnam(username_ptr) }; let pwnamresult: *mut libc::passwd = unsafe { libc::getpwnam(username_ptr) };
if pwnamresult.is_null() { if pwnamresult.is_null() {
if Error::last_os_error().raw_os_error().unwrap() == 0 {
return Err(Error::new(
ErrorKind::NotFound,
format!("The username '{}' was not found", username),
));
}
return Err(Error::new( return Err(Error::new(
Error::last_os_error().kind(), Error::last_os_error().kind(),
"Lookup of user failed: ".to_owned() + "Lookup of user failed: ".to_owned() +