diff --git a/src/file.zig b/src/file.zig index 3149444..534959d 100644 --- a/src/file.zig +++ b/src/file.zig @@ -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), diff --git a/src/reader/data.zig b/src/reader/data.zig index b1f4aa9..42a9b87 100644 --- a/src/reader/data.zig +++ b/src/reader/data.zig @@ -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,