authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-22 17:07:19-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-22 17:07:19-07:00
log2e8dbcac9ab9f09e0890507c32ea2105c55cbf09
tree50b662820a18459e7bfcda40d735a2458e172a16
parent11a81bc659aa44caf084046e3e1048a4ca0957a6

zig std: update for new tar I/O API


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

lib/compiler/std-docs.zig+15-3
...@@ -60,7 +60,9 @@ pub fn main() !void {...@@ -60,7 +60,9 @@ pub fn main() !void {
60 const should_open_browser = force_open_browser orelse (listen_port == 0);60 const should_open_browser = force_open_browser orelse (listen_port == 0);
6161
62 const address = std.net.Address.parseIp("127.0.0.1", listen_port) catch unreachable;62 const address = std.net.Address.parseIp("127.0.0.1", listen_port) catch unreachable;
63 var http_server = try address.listen(.{});63 var http_server = try address.listen(.{
64 .reuse_address = true,
65 });
64 const port = http_server.listen_address.in.getPort();66 const port = http_server.listen_address.in.getPort();
65 const url_with_newline = try std.fmt.allocPrint(arena, "http://127.0.0.1:{d}/\n", .{port});67 const url_with_newline = try std.fmt.allocPrint(arena, "http://127.0.0.1:{d}/\n", .{port});
66 std.fs.File.stdout().writeAll(url_with_newline) catch {};68 std.fs.File.stdout().writeAll(url_with_newline) catch {};
...@@ -189,7 +191,11 @@ fn serveSourcesTar(request: *std.http.Server.Request, context: *Context) !void {...@@ -189,7 +191,11 @@ fn serveSourcesTar(request: *std.http.Server.Request, context: *Context) !void {
189 var walker = try std_dir.walk(gpa);191 var walker = try std_dir.walk(gpa);
190 defer walker.deinit();192 defer walker.deinit();
191193
192 var archiver = std.tar.writer(response.writer());194 var adapter_buffer: [500]u8 = undefined;
195 var response_writer = response.writer().adaptToNewApi();
196 response_writer.new_interface.buffer = &adapter_buffer;
197
198 var archiver: std.tar.Writer = .{ .underlying_writer = &response_writer.new_interface };
193 archiver.prefix = "std";199 archiver.prefix = "std";
194200
195 while (try walker.next()) |entry| {201 while (try walker.next()) |entry| {
...@@ -204,7 +210,13 @@ fn serveSourcesTar(request: *std.http.Server.Request, context: *Context) !void {...@@ -204,7 +210,13 @@ fn serveSourcesTar(request: *std.http.Server.Request, context: *Context) !void {
204 }210 }
205 var file = try entry.dir.openFile(entry.basename, .{});211 var file = try entry.dir.openFile(entry.basename, .{});
206 defer file.close();212 defer file.close();
207 try archiver.writeFile(entry.path, file);213 const stat = try file.stat();
214 var file_reader: std.fs.File.Reader = .{
215 .file = file,
216 .interface = std.fs.File.Reader.initInterface(&.{}),
217 .size = stat.size,
218 };
219 try archiver.writeFile(entry.path, &file_reader, stat.mtime);
208 }220 }
209221
210 {222 {