diff options
author | Tomasz Kramkowski <tomasz@kramkow.ski> | 2023-01-27 14:22:33 +0000 |
---|---|---|
committer | Tomasz Kramkowski <tomasz@kramkow.ski> | 2023-01-27 14:22:33 +0000 |
commit | bdd8126b938de11272f79bb7f512316740469ed7 (patch) | |
tree | 5a46eaf4942f4a21552cf606b35effe5ac1c97c4 /openat/src/name.rs | |
parent | 6cef9f0fc159de4c9fd708050ec76adb4e74d390 (diff) | |
download | pam_usercg_rust-bdd8126b938de11272f79bb7f512316740469ed7.tar.gz pam_usercg_rust-bdd8126b938de11272f79bb7f512316740469ed7.tar.xz pam_usercg_rust-bdd8126b938de11272f79bb7f512316740469ed7.zip |
use cap-std
Diffstat (limited to 'openat/src/name.rs')
-rw-r--r-- | openat/src/name.rs | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/openat/src/name.rs b/openat/src/name.rs deleted file mode 100644 index c181db1..0000000 --- a/openat/src/name.rs +++ /dev/null @@ -1,76 +0,0 @@ -use std::ffi::{OsStr, CStr, CString}; -use std::path::{Path, PathBuf}; -use std::os::unix::ffi::OsStrExt; - -use crate::{Entry}; - - -/// The purpose of this is similar to `AsRef<Path>` but it's optimized for -/// things that can be directly used as `CStr` (which is type passed to -/// the underlying system call). -/// -/// This trait should be implemented for everything for which `AsRef<Path>` -/// is implemented -pub trait AsPath { - /// The return value of the `to_path` that holds data copied from the - /// original path (if copy is needed, otherwise it's just a reference) - type Buffer: AsRef<CStr>; - /// Returns `None` when path contains a zero byte - fn to_path(self) -> Option<Self::Buffer>; -} - -impl<'a> AsPath for &'a Path { - type Buffer = CString; - fn to_path(self) -> Option<CString> { - CString::new(self.as_os_str().as_bytes()).ok() - } -} - -impl<'a> AsPath for &'a PathBuf { - type Buffer = CString; - fn to_path(self) -> Option<CString> { - CString::new(self.as_os_str().as_bytes()).ok() - } -} - -impl<'a> AsPath for &'a OsStr { - type Buffer = CString; - fn to_path(self) -> Option<CString> { - CString::new(self.as_bytes()).ok() - } -} - -impl<'a> AsPath for &'a str { - type Buffer = CString; - fn to_path(self) -> Option<CString> { - CString::new(self.as_bytes()).ok() - } -} - -impl<'a> AsPath for &'a String { - type Buffer = CString; - fn to_path(self) -> Option<CString> { - CString::new(self.as_bytes()).ok() - } -} - -impl<'a> AsPath for String { - type Buffer = CString; - fn to_path(self) -> Option<CString> { - CString::new(self).ok() - } -} - -impl<'a> AsPath for &'a CStr { - type Buffer = &'a CStr; - fn to_path(self) -> Option<&'a CStr> { - Some(self) - } -} - -impl<'a> AsPath for &'a Entry { - type Buffer = &'a CStr; - fn to_path(self) -> Option<&'a CStr> { - Some(&self.name) - } -} |