Further work on inode decoding

This commit is contained in:
Caleb Gardner
2025-05-13 00:23:53 -05:00
parent b3a5ff8f94
commit b4848de95d
6 changed files with 53 additions and 36 deletions
+21 -6
View File
@@ -1,17 +1,32 @@
const std = @import("std");
const io = std.io;
const fs = std.fs;
const Superblock = @import("superblock.zig").Superblock;
const Inode = @import("inode.zig").Inode;
pub const Reader = struct {
super: Superblock,
rdr: io.AnyReader,
rdr: fs.File,
root: Inode,
alloc: std.heap.GeneralPurposeAllocator(.{}),
pub fn close(self: Reader) void {
self.rdr.close();
self.alloc.deinit();
}
};
pub fn newReader(rdr: io.AnyReader) !Reader {
const super = try rdr.readStruct(Superblock);
pub fn newReader(filename: []const u8) !Reader {
const file = try std.fs.cwd().openFile(filename, .{});
errdefer file.close();
const alloc = std.heap.GeneralPurposeAllocator(.{});
errdefer alloc.deinit();
const super = try file.reader().readStruct(Superblock);
try super.valid();
return Reader{
.super = super,
.rdr = rdr,
.rdr = file,
.alloc = alloc,
};
}
}