diff options
| author | Igor Anić <igor.anic@gmail.com> | 2023-12-12 14:18:20 +0100 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2024-01-13 19:37:33 -0700 |
| commit | 76fe1f53d5b9cfae100854afe495e8b378d2dc9e (patch) | |
| tree | ba636c65aa00fee1390742052b5c121968c6bef8 /lib | |
| parent | a75fd4ff156abdd131c2b609b9b19573813838a0 (diff) | |
| download | zig-76fe1f53d5b9cfae100854afe495e8b378d2dc9e.tar.gz zig-76fe1f53d5b9cfae100854afe495e8b378d2dc9e.zip | |
tar: fix tests on 32-bit platforms
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/std/tar.zig | 20 | ||||
| -rw-r--r-- | lib/std/tar/test.zig | 5 |
2 files changed, 14 insertions, 11 deletions
diff --git a/lib/std/tar.zig b/lib/std/tar.zig index 4f6824de1f..376a6ad230 100644 --- a/lib/std/tar.zig +++ b/lib/std/tar.zig @@ -250,7 +250,7 @@ fn TarReader(comptime ReaderType: type) type { pub const File = struct { name: []const u8, // name of file, symlink or directory link_name: []const u8, // target name of symlink - size: usize, // size of the file in bytes + size: u64, // size of the file in bytes mode: u32, kind: Header.Kind, @@ -260,7 +260,7 @@ fn TarReader(comptime ReaderType: type) type { pub fn write(self: File, writer: anytype) !void { var buffer: [4096]u8 = undefined; - var n: usize = 0; + var n: u64 = 0; while (n < self.size) { const buf = buffer[0..@min(buffer.len, self.size - n)]; try self.reader.readNoEof(buf); @@ -308,9 +308,9 @@ fn TarReader(comptime ReaderType: type) type { } // Number of padding bytes in the last file block. - inline fn blockPadding(size: usize) usize { - const block_rounded = std.mem.alignForward(usize, size, Header.SIZE); // size rounded to te block boundary - return block_rounded - size; + inline fn blockPadding(size: u64) usize { + const block_rounded = std.mem.alignForward(u64, size, Header.SIZE); // size rounded to te block boundary + return @intCast(block_rounded - size); } /// Iterates through the tar archive as if it is a series of files. @@ -324,7 +324,7 @@ fn TarReader(comptime ReaderType: type) type { while (try self.readHeader()) |header| { const kind = header.kind(); - const size: usize = @intCast(try header.size()); + const size: u64 = try header.size(); self.padding = blockPadding(size); switch (kind) { @@ -349,16 +349,16 @@ fn TarReader(comptime ReaderType: type) type { }, // Prefix header types .gnu_long_name => { - self.file.name = try self.readString(size, &self.file_name_buffer); + self.file.name = try self.readString(@intCast(size), &self.file_name_buffer); }, .gnu_long_link => { - self.file.link_name = try self.readString(size, &self.link_name_buffer); + self.file.link_name = try self.readString(@intCast(size), &self.link_name_buffer); }, .extended_header => { // Use just attributes from last extended header. self.initFile(); - var rdr = paxReader(self.reader, size); + var rdr = paxReader(self.reader, @intCast(size)); while (try rdr.next()) |attr| { switch (attr.kind) { .path => { @@ -369,7 +369,7 @@ fn TarReader(comptime ReaderType: type) type { }, .size => { var buf: [64]u8 = undefined; - self.file.size = try std.fmt.parseInt(usize, try attr.value(&buf), 10); + self.file.size = try std.fmt.parseInt(u64, try attr.value(&buf), 10); }, } } diff --git a/lib/std/tar/test.zig b/lib/std/tar/test.zig index f6a9fa1cfd..1265050dd2 100644 --- a/lib/std/tar/test.zig +++ b/lib/std/tar/test.zig @@ -1,12 +1,15 @@ const std = @import("../std.zig"); +const builtin = @import("builtin"); const tar = std.tar; const assert = std.debug.assert; test "tar run Go test cases" { + if (builtin.os.tag == .wasi) return error.SkipZigTest; + const Case = struct { const File = struct { name: []const u8, - size: usize = 0, + size: u64 = 0, mode: u32 = 0, link_name: []const u8 = &[0]u8{}, kind: tar.Header.Kind = .normal, |
