Skip to content

Commit 4ae2cb8

Browse files
committed
Rename openFile to createFile and remove dir.close
1 parent 9014d19 commit 4ae2cb8

File tree

1 file changed

+11
-19
lines changed

1 file changed

+11
-19
lines changed

lib/std/zip.zig

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,8 @@ pub fn Iterator(comptime SeekableStream: type) type {
435435
uncompressed_size: u64,
436436
file_offset: u64,
437437

438-
/// Extract this entry. `extractor` must implement `openFile` and `openDir`.
438+
/// Extract this entry. `extractor` must implement `createFile` and `createDir`.
439+
/// The return type of `createFile` must implement `writer` and `close`.
439440
/// See also `extract`.
440441
pub fn extract_to(
441442
self: Entry,
@@ -534,8 +535,7 @@ pub fn Iterator(comptime SeekableStream: type) type {
534535
if (filename[filename.len - 1] == '/') {
535536
if (self.uncompressed_size != 0)
536537
return error.ZipBadDirectorySize;
537-
var dir = try extractor.openDir(filename[0 .. filename.len - 1]);
538-
dir.close();
538+
try extractor.createDir(filename[0 .. filename.len - 1]);
539539
return std.hash.Crc32.hash(&.{});
540540
}
541541

@@ -545,7 +545,7 @@ pub fn Iterator(comptime SeekableStream: type) type {
545545
local_data_header_offset;
546546
try stream.seekTo(local_data_file_offset);
547547
var limited_reader = std.io.limitedReader(stream.context.reader(), self.compressed_size);
548-
var file = try extractor.openFile(filename);
548+
var file = try extractor.createFile(filename);
549549
defer file.close();
550550
const crc = try decompress(
551551
self.compression_method,
@@ -575,16 +575,11 @@ pub fn Iterator(comptime SeekableStream: type) type {
575575
const FsExtractor = struct {
576576
dest: std.fs.Dir,
577577

578-
const VirtualDir = struct {
579-
fn close(_: VirtualDir) void {}
580-
};
581-
582-
fn openDir(self: @This(), name: []u8) !VirtualDir {
578+
fn createDir(self: @This(), name: []u8) !void {
583579
try self.dest.makePath(name);
584-
return VirtualDir{};
585580
}
586581

587-
fn openFile(self: @This(), name: []u8) !std.fs.File {
582+
fn createFile(self: @This(), name: []u8) !std.fs.File {
588583
if (std.fs.path.dirname(name)) |dirname| {
589584
var parent_dir = try self.dest.makeOpenPath(dirname, .{});
590585
defer parent_dir.close();
@@ -726,29 +721,26 @@ test "zip verify filenames" {
726721
try testZipError(error.ZipFilenameHasBackslash, .{ .name = "foo\\bar", .content = "", .compression = .store }, .{});
727722
}
728723

729-
test "zip extract file to buffer" {
724+
test "zip extract file to memory" {
730725
const test_files = [_]File{
731726
.{ .name = "a.txt", .content = "aaa", .compression = .store },
732727
};
733728

734729
var extracted = std.ArrayList(u8).init(std.testing.allocator);
735730
defer extracted.deinit();
736731
var extractor = struct {
737-
writer: ArrayList.Writer,
732+
writer: std.ArrayList(u8).Writer,
738733

739-
const ArrayList = std.ArrayList(u8);
740734
const Extractor = @This();
741735
const VirtualFile = struct {
742736
context: *Extractor,
743-
fn writer(self: @This()) ArrayList.Writer {
737+
fn writer(self: @This()) std.ArrayList(u8).Writer {
744738
return self.context.writer;
745739
}
746740
fn close(_: @This()) void {}
747741
};
748-
fn openDir(_: @This(), _: []u8) !VirtualFile {
749-
unreachable;
750-
}
751-
fn openFile(self: *@This(), _: []u8) !VirtualFile {
742+
fn createDir(_: @This(), _: []u8) !void {}
743+
fn createFile(self: *@This(), _: []u8) !VirtualFile {
752744
return VirtualFile{ .context = self };
753745
}
754746
}{ .writer = extracted.writer() };

0 commit comments

Comments
 (0)