#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct EtcPasswdRecord<'a>
{
pub raw_user_name: &'a [u8],
#[allow(missing_docs)]
pub user_identifier: UserIdentifier,
#[allow(missing_docs)]
pub group_identifier: GroupIdentifier,
pub gecos: &'a [u8],
pub raw_home_directory: &'a [u8],
pub raw_shell: &'a [u8],
}
impl<'a> EtcPasswdRecord<'a>
{
#[inline(always)]
pub fn has_user_name(&self, user_name: &UserName) -> bool
{
user_name.equals_raw_name(self.raw_user_name)
}
#[inline(always)]
pub fn user_name(&self) -> Result<UserName, NulError>
{
Ok(UserName(CString::new(self.raw_user_name)?))
}
#[inline(always)]
pub fn home_directory(&self) -> PathBuf
{
Self::to_path_buf(self.raw_home_directory)
}
#[inline(always)]
pub fn shell(&self) -> PathBuf
{
Self::to_path_buf(self.raw_shell)
}
#[inline(always)]
fn to_path_buf(value: &'a [u8]) -> PathBuf
{
PathBuf::from(OsString::from_vec(value.to_vec()))
}
}