//! A file-system object. Represents a File or directory. const std = @import("std"); const dir = @import("inode_data/dir.zig"); const file = @import("inode_data/file.zig"); const misc = @import("inode_data/misc.zig"); pub const Ref = packed struct(u64) { block_offset: u16, block_start: u32, _: u16, }; pub const InodeType = enum(u16) { dir = 1, file, symlink, block_dev, char_dev, fifo, socket, ext_dir, ext_file, ext_symlink, ext_block_dev, ext_char_dev, ext_fifo, ext_socket, }; pub const InodeData = union(InodeType) { dir: dir.Dir, file: file.File, symlink: misc.Symlink, block_dev: misc.Dev, char_dev: misc.Dev, fifo: misc.IPC, socket: misc.IPC, ext_dir: dir.ExtDir, ext_file: file.ExtFile, ext_symlink: misc.ExtSymlink, ext_block_dev: misc.ExtDev, ext_char_dev: misc.ExtDev, ext_fifo: misc.ExtIPC, ext_socket: misc.ExtIPC, }; pub const Header = packed struct { inode_type: InodeType, permissions: u16, uid_idx: u16, gid_idx: u16, mod_time: u32, num: u32, }; const Inode = @This();