shitbox/src/cmd/whoami/mod.rs

32 lines
721 B
Rust
Raw Normal View History

2023-01-09 18:39:38 -05:00
use {
2023-01-10 18:28:33 -05:00
super::Cmd,
2023-01-09 18:39:38 -05:00
clap::Command,
libc::{geteuid, getpwuid},
std::ffi::CStr,
2023-01-09 18:39:38 -05:00
};
#[derive(Debug, Default)]
pub struct Whoami;
impl Cmd for Whoami {
fn cli(&self) -> clap::Command {
Command::new("whoami")
.about("print effective user name")
.author("Nathan Fisher")
}
fn run(&self, _matches: Option<&clap::ArgMatches>) -> Result<(), Box<dyn std::error::Error>> {
let pwnam = unsafe {
let pw = *getpwuid(geteuid());
CStr::from_ptr((pw).pw_name)
};
let pwnam = pwnam.to_str()?;
println!("{pwnam}");
Ok(())
}
fn path(&self) -> Option<crate::Path> {
Some(crate::Path::UsrBin)
}
}