Files
zig-squashfs/squashfs.zig
T
2025-05-13 22:29:45 -05:00

32 lines
796 B
Zig

const std = @import("std");
const fs = std.fs;
const Superblock = @import("superblock.zig").Superblock;
const Inode = @import("inode.zig").Inode;
pub const Reader = struct {
super: Superblock,
rdr: fs.File,
root: Inode,
alloc: std.heap.GeneralPurposeAllocator(.{}),
pub fn close(self: Reader) void {
self.rdr.close();
self.alloc.deinit();
}
};
pub fn newReader(filename: []const u8) !Reader {
const file = try std.fs.cwd().openFile(filename, .{});
errdefer file.close();
const alloc = std.heap.GeneralPurposeAllocator(.{}).init();
errdefer alloc.deinit();
const super = try file.reader().readStruct(Superblock);
try super.valid();
return Reader{
.super = super,
.rdr = file,
.alloc = alloc,
};
}