#[derive(Debug)]
pub enum MarkPath<'a>
{
ByDirectoryFileDescriptor
{
directory: &'a DirectoryFileDescriptor,
},
AbsolutePath
{
absolute_path: &'a CStr,
},
RelativeToDirectoryFileDescriptor
{
relative_path: &'a CStr,
directory: &'a DirectoryFileDescriptor,
},
}
impl<'a> MarkPath<'a>
{
#[inline(always)]
pub(crate) fn to_dirfd_and_pathname(&'a self) -> (RawFd, *const c_char)
{
use self::MarkPath::*;
match self
{
&ByDirectoryFileDescriptor { directory } => (directory.as_raw_fd(), null()),
&AbsolutePath { absolute_path } => (-1, absolute_path.as_ptr()),
&RelativeToDirectoryFileDescriptor { directory, relative_path } => (directory.as_raw_fd(), relative_path.as_ptr()),
}
}
}