Futher tweaks & fixes

This commit is contained in:
Caleb J. Gardner
2025-08-08 06:34:31 -05:00
parent b50f28026f
commit 1eceb8d899
2 changed files with 24 additions and 19 deletions
+18 -14
View File
@@ -64,21 +64,25 @@ pub fn File(comptime T: type) type {
},
.file => |f| {
out.data_reader = try .init(rdr, inode);
if (f.hasFragment()) {
try out.data_reader.?.addFragment(
try rdr.frag_table.get(f.frag_idx),
f.frag_offset,
);
}
_ = f;
//TODO: fragments
// if (f.hasFragment()) {
// try out.data_reader.?.addFragment(
// try rdr.frag_table.get(f.frag_idx),
// f.frag_offset,
// );
// }
},
.ext_file => |f| {
out.data_reader = try .init(rdr, inode);
if (f.hasFragment()) {
try out.data_reader.?.addFragment(
try rdr.frag_table.get(f.frag_idx),
f.frag_offset,
);
}
_ = f;
//TODO: Fragments
// if (f.hasFragment()) {
// try out.data_reader.?.addFragment(
// try rdr.frag_table.get(f.frag_idx),
// f.frag_offset,
// );
// }
},
else => {},
}
@@ -274,7 +278,7 @@ pub fn File(comptime T: type) type {
continue;
};
var thr = std.Thread.spawn(.{ .allocator = self.rdr.alloc }, extractReal, .{
fil,
&fil,
op,
ext_path,
errs,
@@ -451,7 +455,7 @@ pub fn File(comptime T: type) type {
};
}
fn extractRegFinish(
self: Self,
self: *Self,
op: ExtractionOptions,
path: []const u8,
fil_errs: *std.ArrayList(anyerror),
+6 -5
View File
@@ -61,7 +61,7 @@ const DecompCompletion = struct {
return self.errs.items.len > 0;
}
fn condWait(self: *DecompCompletion) void {
self.cond.wait(self.mut);
self.cond.wait(&self.mut);
}
};
@@ -148,7 +148,7 @@ pub fn DataReader(comptime T: type) type {
pub fn writeToNoBlock(self: *Self, wrt: anytype, comptime finish: anytype, finish_args: anytype) !void {
comptime std.debug.assert(std.meta.hasFn(@TypeOf(wrt), "write") or std.meta.hasFn(@TypeOf(wrt), "pwrite"));
errdefer self.completions.clear();
errdefer self.completion.clear();
var write_thr = try std.Thread.spawn(
.{ .allocator = self.alloc },
writeThread,
@@ -161,7 +161,8 @@ pub fn DataReader(comptime T: type) type {
decompThread,
.{ self, i },
) catch |err| {
self.completion.addErr(err) catch {};
self.completion.addErr(err);
continue;
};
thr.detach();
}
@@ -184,11 +185,11 @@ pub fn DataReader(comptime T: type) type {
});
if (idx == self.sizes.len and self.frag != null) {
@memcpy(block, self.frag.?);
return;
return block;
}
if (size.uncompressed) {
_ = try self.rdr.pread(block, self.offsets[idx]);
return;
return block;
}
_ = try self.comp.decompress(
1024 * 1024,