#[allow(missing_docs)]
#[derive(Debug)]
#[derive(Deserialize, Serialize)]
pub struct UsersDiagnostics
{
pub real: UserIdentifierDiagnostic,
pub effective: UserIdentifierDiagnostic,
pub saved_set: UserIdentifierDiagnostic,
pub audit_login: DiagnosticUnobtainableResult<Option<UserIdentifierDiagnostic>>,
}
impl UsersDiagnostics
{
fn gather(proc_path: &ProcPath, etc_path: &EtcPath, process_identifier_choice: ProcessIdentifierChoice) -> Self
{
let (real, effective, saved_set) = UserIdentifier::current_real_effective_and_saved_set();
Self
{
real: UserIdentifierDiagnostic::new(etc_path, real),
effective: UserIdentifierDiagnostic::new(etc_path, effective),
saved_set: UserIdentifierDiagnostic::new(etc_path, saved_set),
audit_login: match UserIdentifier::audit_login(proc_path, process_identifier_choice)
{
Err(cause) => Err(DiagnosticUnobtainable::from(cause)),
Ok(None) => Ok(None),
Ok(Some(audit_login)) => Ok(Some(UserIdentifierDiagnostic::new(etc_path, audit_login)))
},
}
}
}