A bit more messing around.

This commit is contained in:
Caleb Gardner
2025-05-13 10:24:17 -05:00
parent b4848de95d
commit 246d63d48a
5 changed files with 67 additions and 23 deletions
+44 -22
View File
@@ -63,29 +63,51 @@ const io = @import("std").io;
pub fn readInode(rdr: io.AnyReader, block_size: u64, alloc: std.heap.Allocator) !Inode {
const hdr = try rdr.readStruct(InodeHeader);
const data: InodeData = undefined;
switch (hdr.inode_type) {
.dir => data = .{
.dir = dir.readDirInode(rdr),
},
.ext_dir => data = .{
.ext_dir = try dir.readExtDirInode(rdr, alloc),
},
.file => data = .{
.file = try file.readFileInode(rdr, block_size, alloc),
},
.ext_file => data = .{
.ext_file = try file.readExtFileInode(rdr, block_size, alloc),
},
.symlink => data = .{
.block_device = try misc.readSymlinkInode(rdr, alloc),
},
.ext_symlink => data = .{
.ext_symlink = try sym.readExtSymlinkInode(rdr, alloc),
},
}
return Inode{
.header = hdr,
.data = data,
.data = switch (hdr.inode_type) {
.dir => .{
.dir = dir.readDirInode(rdr),
},
.ext_dir => .{
.ext_dir = try dir.readExtDirInode(rdr, alloc),
},
.file => .{
.file = try file.readFileInode(rdr, block_size, alloc),
},
.ext_file => .{
.ext_file = try file.readExtFileInode(rdr, block_size, alloc),
},
.symlink => .{
.block_device = try misc.readSymlinkInode(rdr, alloc),
},
.ext_symlink => .{
.ext_symlink = try sym.readExtSymlinkInode(rdr, alloc),
},
.block_device => .{
.block_device = try rdr.readStruct(misc.DeviceInode),
},
.ext_block_device => .{
.ext_block_device = try rdr.readStruct(misc.ExtDeviceInode),
},
.char_device => .{
.char_device = try rdr.readStruct(misc.DeviceInode),
},
.ext_char_device => .{
.ext_char_device = try rdr.readStruct(misc.ExtDeviceInode),
},
.fifo => .{
.fifo = try rdr.readStruct(misc.IPCInode),
},
.ext_fifo => .{
.ext_fifo = try rdr.readStruct(misc.ExtIPCInode),
},
.socket => .{
.socket = try rdr.readStruct(misc.IPCInode),
},
.ext_socket => .{
.ext_socket = try rdr.readStruct(misc.ExtIPCInode),
},
},
};
}