pub(crate) const MAGIC: u32 = 0x28cd3d45;
pub(crate) const PAD_SIZE: u64 = 512;
pub(crate) const PAGE_SIZE: u32 = 4096;
pub(crate) const SUPPORTED_FLAGS: u32 = 0x000000ff
| FLAG_HOLES
| FLAG_WRONG_SIGNATURE
| FLAG_SHIFTED_ROOT_OFFSET
| FLAG_EXT_BLOCK_POINTERS;
pub(crate) const FLAG_FSID_VERSION_2: u32 = 0x00000001; #[allow(dead_code)]
pub(crate) const FLAG_SORTED_DIRS: u32 = 0x00000002; pub(crate) const FLAG_HOLES: u32 = 0x00000100; pub(crate) const FLAG_WRONG_SIGNATURE: u32 = 0x00000200; pub(crate) const FLAG_SHIFTED_ROOT_OFFSET: u32 = 0x00000400; pub(crate) const FLAG_EXT_BLOCK_POINTERS: u32 = 0x00000800;
pub const S_IFMT: u32 = 0o170000;
pub const S_IFDIR: u32 = 0o040000;
pub const S_IFREG: u32 = 0o100000;
pub const S_IFLNK: u32 = 0o120000;
pub const S_IFIFO: u32 = 0o010000;
pub const S_IFBLK: u32 = 0o060000;
pub const S_IFCHR: u32 = 0o020000;
pub const S_IFSOCK: u32 = 0o140000;
#[allow(non_snake_case)]
pub fn S_ISDIR(mode: u32) -> bool {
(mode & S_IFMT) == S_IFDIR
}
#[allow(non_snake_case)]
pub fn S_ISREG(mode: u32) -> bool {
(mode & S_IFMT) == S_IFREG
}
#[allow(non_snake_case)]
pub fn S_ISLNK(mode: u32) -> bool {
(mode & S_IFMT) == S_IFLNK
}
#[allow(non_snake_case)]
pub fn S_ISCHR(mode: u32) -> bool {
(mode & S_IFMT) == S_IFCHR
}
#[allow(non_snake_case)]
pub fn S_ISBLK(mode: u32) -> bool {
(mode & S_IFMT) == S_IFBLK
}
#[allow(non_snake_case)]
pub fn S_ISFIFO(mode: u32) -> bool {
(mode & S_IFMT) == S_IFIFO
}
#[allow(non_snake_case)]
pub fn S_ISSOCK(mode: u32) -> bool {
(mode & S_IFMT) == S_IFSOCK
}
pub const ROMBUFFER_BITS: u32 = 13;
pub const ROMBUFFERSIZE: u64 = 1 << ROMBUFFER_BITS;
pub const ROMBUFFERMASK: u64 = ROMBUFFERSIZE - 1;
pub(crate) fn major(dev: u32) -> u32 {
(dev >> 8) & 0xfff
}
pub(crate) fn minor(dev: u32) -> u32 {
(dev & 0xff) | ((dev >> 12) & 0xffffff00)
}
pub const BLK_FLAG_UNCOMPRESSED: u32 = 1 << 31;
pub const BLK_FLAG_DIRECT_PTR: u32 = 1 << 30;
pub const BLK_FLAGS: u32 = BLK_FLAG_UNCOMPRESSED | BLK_FLAG_DIRECT_PTR;
pub const BLK_DIRECT_PTR_SHIFT: u32 = 2;