zig std: fix build failures

This commit is contained in:
Andrew Kelley 2025-08-08 17:17:38 -07:00
parent 8c9dfcbd0f
commit 045bb14897
5 changed files with 14 additions and 17 deletions

View File

@ -93,9 +93,12 @@ pub fn main() !void {
fn accept(context: *Context, connection: std.net.Server.Connection) void { fn accept(context: *Context, connection: std.net.Server.Connection) void {
defer connection.stream.close(); defer connection.stream.close();
var read_buffer: [8000]u8 = undefined; var recv_buffer: [4000]u8 = undefined;
var server = std.http.Server.init(connection, &read_buffer); var send_buffer: [4000]u8 = undefined;
while (server.state == .ready) { var conn_reader = connection.stream.reader(&recv_buffer);
var conn_writer = connection.stream.writer(&send_buffer);
var server = std.http.Server.init(conn_reader.interface(), &conn_writer.interface);
while (server.reader.state == .ready) {
var request = server.receiveHead() catch |err| switch (err) { var request = server.receiveHead() catch |err| switch (err) {
error.HttpConnectionClosing => return, error.HttpConnectionClosing => return,
else => { else => {
@ -175,8 +178,7 @@ fn serveSourcesTar(request: *std.http.Server.Request, context: *Context) !void {
const gpa = context.gpa; const gpa = context.gpa;
var send_buffer: [0x4000]u8 = undefined; var send_buffer: [0x4000]u8 = undefined;
var response = request.respondStreaming(.{ var response = try request.respondStreaming(&send_buffer, .{
.send_buffer = &send_buffer,
.respond_options = .{ .respond_options = .{
.extra_headers = &.{ .extra_headers = &.{
.{ .name = "content-type", .value = "application/x-tar" }, .{ .name = "content-type", .value = "application/x-tar" },
@ -191,11 +193,7 @@ fn serveSourcesTar(request: *std.http.Server.Request, context: *Context) !void {
var walker = try std_dir.walk(gpa); var walker = try std_dir.walk(gpa);
defer walker.deinit(); defer walker.deinit();
var adapter_buffer: [500]u8 = undefined; var archiver: std.tar.Writer = .{ .underlying_writer = &response.writer };
var response_writer = response.writer().adaptToNewApi();
response_writer.new_interface.buffer = &adapter_buffer;
var archiver: std.tar.Writer = .{ .underlying_writer = &response_writer.new_interface };
archiver.prefix = "std"; archiver.prefix = "std";
while (try walker.next()) |entry| { while (try walker.next()) |entry| {
@ -229,7 +227,6 @@ fn serveSourcesTar(request: *std.http.Server.Request, context: *Context) !void {
// intentionally omitting the pointless trailer // intentionally omitting the pointless trailer
//try archiver.finish(); //try archiver.finish();
try response_writer.new_interface.flush();
try response.end(); try response.end();
} }

View File

@ -387,11 +387,11 @@ pub fn GenericWriter(
} }
/// Helper for bridging to the new `Writer` API while upgrading. /// Helper for bridging to the new `Writer` API while upgrading.
pub fn adaptToNewApi(self: *const Self) Adapter { pub fn adaptToNewApi(self: *const Self, buffer: []u8) Adapter {
return .{ return .{
.derp_writer = self.*, .derp_writer = self.*,
.new_interface = .{ .new_interface = .{
.buffer = &.{}, .buffer = buffer,
.vtable = &.{ .drain = Adapter.drain }, .vtable = &.{ .drain = Adapter.drain },
}, },
}; };

View File

@ -83,11 +83,11 @@ pub fn writeFile(self: Self, file: std.fs.File) anyerror!void {
} }
/// Helper for bridging to the new `Writer` API while upgrading. /// Helper for bridging to the new `Writer` API while upgrading.
pub fn adaptToNewApi(self: *const Self) Adapter { pub fn adaptToNewApi(self: *const Self, buffer: []u8) Adapter {
return .{ return .{
.derp_writer = self.*, .derp_writer = self.*,
.new_interface = .{ .new_interface = .{
.buffer = &.{}, .buffer = buffer,
.vtable = &.{ .drain = Adapter.drain }, .vtable = &.{ .drain = Adapter.drain },
}, },
}; };

View File

@ -80,7 +80,7 @@ pub const Number = struct {
/// Deprecated in favor of `Writer.print`. /// Deprecated in favor of `Writer.print`.
pub fn format(writer: anytype, comptime fmt: []const u8, args: anytype) !void { pub fn format(writer: anytype, comptime fmt: []const u8, args: anytype) !void {
var adapter = writer.adaptToNewApi(); var adapter = writer.adaptToNewApi(&.{});
return adapter.new_interface.print(fmt, args) catch |err| switch (err) { return adapter.new_interface.print(fmt, args) catch |err| switch (err) {
error.WriteFailed => return adapter.err.?, error.WriteFailed => return adapter.err.?,
}; };

View File

@ -84,7 +84,7 @@ pub fn main() !void {
const output_buf = try allocator.alloc(u8, 1024 * 1024); const output_buf = try allocator.alloc(u8, 1024 * 1024);
var fbs = std.io.fixedBufferStream(output_buf); var fbs = std.io.fixedBufferStream(output_buf);
var adapter = fbs.writer().adaptToNewApi(); var adapter = fbs.writer().adaptToNewApi(&.{});
const w = &adapter.new_interface; const w = &adapter.new_interface;
try render(w, core_spec, exts.items); try render(w, core_spec, exts.items);
var output: [:0]u8 = @ptrCast(fbs.getWritten()); var output: [:0]u8 = @ptrCast(fbs.getWritten());