Futher tweaks & fixes
This commit is contained in:
+18
-14
@@ -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
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user