#[derive(Clone, Copy, PartialEq, Eq, Debug)]
pub enum EntryType {
Regular,
Link,
Symlink,
Char,
Block,
Directory,
Fifo,
Continuous,
GNULongName,
GNULongLink,
GNUSparse,
XGlobalHeader,
XHeader,
#[doc(hidden)]
__Nonexhaustive(u8),
}
impl EntryType {
pub fn new(byte: u8) -> EntryType {
match byte {
b'\x00' |
b'0' => EntryType::Regular,
b'1' => EntryType::Link,
b'2' => EntryType::Symlink,
b'3' => EntryType::Char,
b'4' => EntryType::Block,
b'5' => EntryType::Directory,
b'6' => EntryType::Fifo,
b'7' => EntryType::Continuous,
b'x' => EntryType::XHeader,
b'g' => EntryType::XGlobalHeader,
b'L' => EntryType::GNULongName,
b'K' => EntryType::GNULongLink,
b'S' => EntryType::GNUSparse,
b => EntryType::__Nonexhaustive(b),
}
}
pub fn as_byte(&self) -> u8 {
match *self {
EntryType::Regular => b'0',
EntryType::Link => b'1',
EntryType::Symlink => b'2',
EntryType::Char => b'3',
EntryType::Block => b'4',
EntryType::Directory => b'5',
EntryType::Fifo => b'6',
EntryType::Continuous => b'7',
EntryType::XHeader => b'x',
EntryType::XGlobalHeader => b'g',
EntryType::GNULongName => b'L',
EntryType::GNULongLink => b'K',
EntryType::GNUSparse => b'S',
EntryType::__Nonexhaustive(b) => b,
}
}
pub fn file() -> EntryType {
EntryType::Regular
}
pub fn hard_link() -> EntryType {
EntryType::Link
}
pub fn symlink() -> EntryType {
EntryType::Symlink
}
pub fn character_special() -> EntryType {
EntryType::Char
}
pub fn block_special() -> EntryType {
EntryType::Block
}
pub fn dir() -> EntryType {
EntryType::Directory
}
pub fn fifo() -> EntryType {
EntryType::Fifo
}
pub fn contiguous() -> EntryType {
EntryType::Continuous
}
pub fn is_file(&self) -> bool {
self == &EntryType::Regular
}
pub fn is_hard_link(&self) -> bool {
self == &EntryType::Link
}
pub fn is_symlink(&self) -> bool {
self == &EntryType::Symlink
}
pub fn is_character_special(&self) -> bool {
self == &EntryType::Char
}
pub fn is_block_special(&self) -> bool {
self == &EntryType::Block
}
pub fn is_dir(&self) -> bool {
self == &EntryType::Directory
}
pub fn is_fifo(&self) -> bool {
self == &EntryType::Fifo
}
pub fn is_contiguous(&self) -> bool {
self == &EntryType::Continuous
}
pub fn is_gnu_longname(&self) -> bool {
self == &EntryType::GNULongName
}
pub fn is_gnu_sparse(&self) -> bool {
self == &EntryType::GNUSparse
}
pub fn is_gnu_longlink(&self) -> bool {
self == &EntryType::GNULongLink
}
pub fn is_pax_global_extensions(&self) -> bool {
self == &EntryType::XGlobalHeader
}
pub fn is_pax_local_extensions(&self) -> bool {
self == &EntryType::XHeader
}
}