authorgravatar for igor.anic@gmail.comIgor Anić <igor.anic@gmail.com> 2023-12-12 18:50:25+01:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-01-13 19:37:33-07:00
log7923a53996f8d24ad27823db3a45a6dd4a2bf317
treefed74f66e4b311f1dfbf9a235ab957e529da511f
parente21a12e56b21aee956132dd5f68bc2349ce37c1a

tar: rename reader to iterator

Itarator has `next` function, iterates over tar files. When using from outside of module with `tar.` prefix makes more sense. var iter = tar.iterator(reader, null); while (try iter.next()) |file| { ... }

2 files changed, 24 insertions(+), 24 deletions(-)

lib/std/tar.zig+14-13
......@@ -225,14 +225,16 @@ fn nullStr(str: []const u8) []const u8 {
225225 return str;
226226}
227227
228pub fn tarReader(reader: anytype, diagnostics: ?*Options.Diagnostics) TarReader(@TypeOf(reader)) {
228/// Iterates over files in tar archive.
229/// `next` returns each file in `reader` tar archive.
230pub fn iterator(reader: anytype, diagnostics: ?*Options.Diagnostics) Iterator(@TypeOf(reader)) {
229231 return .{
230232 .reader = reader,
231233 .diagnostics = diagnostics,
232234 };
233235}
234236
235fn TarReader(comptime ReaderType: type) type {
237fn Iterator(comptime ReaderType: type) type {
236238 return struct {
237239 reader: ReaderType,
238240 diagnostics: ?*Options.Diagnostics,
......@@ -358,7 +360,7 @@ fn TarReader(comptime ReaderType: type) type {
358360 // Use just attributes from last extended header.
359361 self.initFile();
360362
361 var rdr = paxReader(self.reader, @intCast(size));
363 var rdr = paxIterator(self.reader, @intCast(size));
362364 while (try rdr.next()) |attr| {
363365 switch (attr.kind) {
364366 .path => {
......@@ -393,10 +395,10 @@ fn TarReader(comptime ReaderType: type) type {
393395 };
394396}
395397
396// Pax attributes reader.
397// Size is length of pax extended header in reader.
398fn paxReader(reader: anytype, size: usize) PaxReader(@TypeOf(reader)) {
399 return PaxReader(@TypeOf(reader)){
398/// Pax attributes iterator.
399/// Size is length of pax extended header in reader.
400fn paxIterator(reader: anytype, size: usize) PaxIterator(@TypeOf(reader)) {
401 return PaxIterator(@TypeOf(reader)){
400402 .reader = reader,
401403 .size = size,
402404 };
......@@ -408,7 +410,7 @@ const PaxAttributeKind = enum {
408410 size,
409411};
410412
411fn PaxReader(comptime ReaderType: type) type {
413fn PaxIterator(comptime ReaderType: type) type {
412414 return struct {
413415 size: usize, // cumulative size of all pax attributes
414416 reader: ReaderType,
......@@ -508,8 +510,7 @@ pub fn pipeToFileSystem(dir: std.fs.Dir, reader: anytype, options: Options) !voi
508510 },
509511 }
510512
511 var iter = tarReader(reader, options.diagnostics);
512
513 var iter = iterator(reader, options.diagnostics);
513514 while (try iter.next()) |file| {
514515 switch (file.kind) {
515516 .directory => {
......@@ -601,7 +602,7 @@ test "tar stripComponents" {
601602 try expectEqualStrings("c", try stripComponents("a/b/c", 2));
602603}
603604
604test "tar PaxReader" {
605test "tar PaxIterator" {
605606 const Attr = struct {
606607 kind: PaxAttributeKind,
607608 value: []const u8 = undefined,
......@@ -699,10 +700,10 @@ test "tar PaxReader" {
699700
700701 outer: for (cases) |case| {
701702 var stream = std.io.fixedBufferStream(case.data);
702 var rdr = paxReader(stream.reader(), case.data.len);
703 var iter = paxIterator(stream.reader(), case.data.len);
703704
704705 var i: usize = 0;
705 while (rdr.next() catch |err| {
706 while (iter.next() catch |err| {
706707 if (case.err) |e| {
707708 try std.testing.expectEqual(e, err);
708709 continue;
lib/std/tar/test.zig+10-11
......@@ -1,7 +1,6 @@
11const std = @import("../std.zig");
2const builtin = @import("builtin");
32const tar = std.tar;
4const assert = std.debug.assert;
3const testing = std.testing;
54
65test "tar run Go test cases" {
76 const Case = struct {
......@@ -318,33 +317,33 @@ test "tar run Go test cases" {
318317
319318 for (cases) |case| {
320319 var fsb = std.io.fixedBufferStream(case.data);
321 var iter = tar.tarReader(fsb.reader(), null);
320 var iter = tar.iterator(fsb.reader(), null);
322321 var i: usize = 0;
323322 while (iter.next() catch |err| {
324323 if (case.err) |e| {
325 try std.testing.expectEqual(e, err);
324 try testing.expectEqual(e, err);
326325 continue;
327326 } else {
328327 return err;
329328 }
330329 }) |actual| : (i += 1) {
331330 const expected = case.files[i];
332 try std.testing.expectEqualStrings(expected.name, actual.name);
333 try std.testing.expectEqual(expected.size, actual.size);
334 try std.testing.expectEqual(expected.kind, actual.kind);
335 try std.testing.expectEqual(expected.mode, actual.mode);
336 try std.testing.expectEqualStrings(expected.link_name, actual.link_name);
331 try testing.expectEqualStrings(expected.name, actual.name);
332 try testing.expectEqual(expected.size, actual.size);
333 try testing.expectEqual(expected.kind, actual.kind);
334 try testing.expectEqual(expected.mode, actual.mode);
335 try testing.expectEqualStrings(expected.link_name, actual.link_name);
337336
338337 if (case.chksums.len > i) {
339338 var md5writer = Md5Writer{};
340339 try actual.write(&md5writer);
341340 const chksum = md5writer.chksum();
342 try std.testing.expectEqualStrings(case.chksums[i], &chksum);
341 try testing.expectEqualStrings(case.chksums[i], &chksum);
343342 } else {
344343 if (!expected.truncated) try actual.skip(); // skip file content
345344 }
346345 }
347 try std.testing.expectEqual(case.files.len, i);
346 try testing.expectEqual(case.files.len, i);
348347 }
349348}
350349