authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-20 20:54:15-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-22 09:41:44-07:00
logcc334b4ee2c8dcceba4f8c6739207f5ddfa6a358
tree2cc7af0fc8a5879bed1f9559ba1f9728ef5d346f
parent1dcea220a4daf537c1a75835de45076fac429895

std.tar.Writer: fix 32-bit


1 files changed, 10 insertions(+), 3 deletions(-)

lib/std/tar/Writer.zig+10-3
...@@ -55,7 +55,7 @@ pub fn writeFile(...@@ -55,7 +55,7 @@ pub fn writeFile(
5555
56 try w.underlying_writer.writeAll(@ptrCast((&header)[0..1]));56 try w.underlying_writer.writeAll(@ptrCast((&header)[0..1]));
57 _ = try w.underlying_writer.sendFileAll(file_reader, .unlimited);57 _ = try w.underlying_writer.sendFileAll(file_reader, .unlimited);
58 try w.writePadding(size);58 try w.writePadding64(size);
59}59}
6060
61pub const WriteFileStreamError = Error || std.Io.Reader.StreamError;61pub const WriteFileStreamError = Error || std.Io.Reader.StreamError;
...@@ -71,7 +71,7 @@ pub fn writeFileStream(...@@ -71,7 +71,7 @@ pub fn writeFileStream(
71) WriteFileStreamError!void {71) WriteFileStreamError!void {
72 try w.writeHeader(.regular, sub_path, "", size, options);72 try w.writeHeader(.regular, sub_path, "", size, options);
73 try reader.streamExact64(w.underlying_writer, size);73 try reader.streamExact64(w.underlying_writer, size);
74 try w.writePadding(size);74 try w.writePadding64(size);
75}75}
7676
77/// Writes file using bytes buffer `content` for size and file content.77/// Writes file using bytes buffer `content` for size and file content.
...@@ -172,7 +172,14 @@ fn writeExtendedHeader(w: *Writer, typeflag: Header.FileType, buffers: []const [...@@ -172,7 +172,14 @@ fn writeExtendedHeader(w: *Writer, typeflag: Header.FileType, buffers: []const [
172}172}
173173
174fn writePadding(w: *Writer, bytes: usize) std.Io.Writer.Error!void {174fn writePadding(w: *Writer, bytes: usize) std.Io.Writer.Error!void {
175 const pos = bytes % block_size;175 return writePaddingPos(w, bytes % block_size);
176}
177
178fn writePadding64(w: *Writer, bytes: u64) std.Io.Writer.Error!void {
179 return writePaddingPos(w, @intCast(bytes % block_size));
180}
181
182fn writePaddingPos(w: *Writer, pos: usize) std.Io.Writer.Error!void {
176 if (pos == 0) return;183 if (pos == 0) return;
177 try w.underlying_writer.splatByteAll(0, block_size - pos);184 try w.underlying_writer.splatByteAll(0, block_size - pos);
178}185}