Further work on inode decoding
This commit is contained in:
+21
-6
@@ -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,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user