authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2025-04-10 01:34:56-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-01 16:35:26-07:00
log1501734747afb60c6b28adb0da1e49ff46a31f17
treef704e636b67bd1af144017a08a40356ae8f71862
parent5d22c588e27e264e16c15fb1639335465e6139e2

io: fix compile errors


5 files changed, 23 insertions(+), 14 deletions(-)

lib/std/fs/File.zig+2-1
......@@ -1737,9 +1737,10 @@ pub fn writer_writeFile(
17371737 const smaller_len = if (len_int == 0) max_count else @min(len_int, max_count);
17381738 var off: std.os.linux.off_t = undefined;
17391739 const off_ptr: ?*std.os.linux.off_t = if (in_offset.toInt()) |offset| b: {
1740 off = try std.math.cast(std.os.linux.off_t, offset);
1740 off = std.math.cast(std.os.linux.off_t, offset) orelse return error.Overflow;
17411741 break :b &off;
17421742 } else null;
1743 if (true) @panic("TODO");
17431744 const n = std.os.linux.wrapped.sendfile(out_fd, in_fd, off_ptr, smaller_len) catch |err| switch (err) {
17441745 error.UnsupportedOperation => break :sf,
17451746 error.Unseekable => break :sf,
lib/std/io/BufferedReader.zig+11-8
......@@ -34,7 +34,7 @@ const eof_reader: std.io.Reader.VTable = .{
3434 .streamReadVec = eof_streamReadVec,
3535};
3636
37fn eof_writeSplat(context: ?*anyopaque, data: []const []const u8, splat: usize) anyerror!Reader.Status {
37fn eof_writeSplat(context: ?*anyopaque, data: []const []const u8, splat: usize) anyerror!usize {
3838 _ = context;
3939 _ = data;
4040 _ = splat;
......@@ -44,11 +44,11 @@ fn eof_writeSplat(context: ?*anyopaque, data: []const []const u8, splat: usize)
4444fn eof_writeFile(
4545 context: ?*anyopaque,
4646 file: std.fs.File,
47 offset: u64,
48 len: Reader.FileLen,
47 offset: std.io.Writer.Offset,
48 len: std.io.Writer.FileLen,
4949 headers_and_trailers: []const []const u8,
5050 headers_len: usize,
51) anyerror!Reader.Status {
51) anyerror!usize {
5252 _ = context;
5353 _ = file;
5454 _ = offset;
......@@ -73,14 +73,14 @@ fn eof_posReadVec(ctx: ?*anyopaque, data: []const []u8, offset: u64) anyerror!Re
7373 return error.EndOfStream;
7474}
7575
76fn eof_streamRead(ctx: ?*anyopaque, bw: *std.io.BufferedWriter, limit: Reader.Limit) Reader.Status {
76fn eof_streamRead(ctx: ?*anyopaque, bw: *std.io.BufferedWriter, limit: Reader.Limit) anyerror!Reader.Status {
7777 _ = ctx;
7878 _ = bw;
7979 _ = limit;
8080 return error.EndOfStream;
8181}
8282
83fn eof_streamReadVec(ctx: ?*anyopaque, data: []const []u8) Reader.Status {
83fn eof_streamReadVec(ctx: ?*anyopaque, data: []const []u8) anyerror!Reader.Status {
8484 _ = ctx;
8585 _ = data;
8686 return error.EndOfStream;
......@@ -91,13 +91,16 @@ pub fn initFixed(br: *BufferedReader, buffer: []const u8) void {
9191 br.* = .{
9292 .seek = 0,
9393 .storage = .{
94 .buffer = .initBuffer(@constCast(buffer)),
94 .buffer = .fromOwnedSlice(@constCast(buffer)),
9595 .unbuffered_writer = .{
9696 .context = undefined,
9797 .vtable = &eof_writer,
9898 },
9999 },
100 .unbuffered_reader = &.{ .context = undefined, .vtable = &eof_reader },
100 .unbuffered_reader = .{
101 .context = undefined,
102 .vtable = &eof_reader,
103 },
101104 };
102105}
103106
lib/std/io/BufferedWriter.zig+1-1
......@@ -50,7 +50,7 @@ pub fn initFixed(bw: *BufferedWriter, buffer: []u8) void {
5050 .context = bw,
5151 .vtable = &fixed_vtable,
5252 },
53 .buffer = buffer,
53 .buffer = .initBuffer(buffer),
5454 };
5555}
5656
lib/std/io/Reader.zig+5
......@@ -85,6 +85,11 @@ pub fn posReadAll(r: Reader, w: *std.io.BufferedWriter, start_offset: u64) anyer
8585 }
8686}
8787
88/// Returns total number of bytes written to `w`.
89pub fn streamRead(r: Reader, w: *std.io.BufferedWriter, limit: Limit) anyerror!Status {
90 return r.vtable.streamRead.?(r.context, w, limit);
91}
92
8893/// Returns total number of bytes written to `w`.
8994pub fn streamReadAll(r: Reader, w: *std.io.BufferedWriter) anyerror!usize {
9095 const vtable_streamRead = r.vtable.streamRead.?;
lib/std/io/Writer.zig+4-4
......@@ -96,7 +96,7 @@ pub fn writeFile(
9696pub fn unimplemented_writeFile(
9797 context: ?*anyopaque,
9898 file: std.fs.File,
99 offset: u64,
99 offset: Offset,
100100 len: FileLen,
101101 headers_and_trailers: []const []const u8,
102102 headers_len: usize,
......@@ -136,7 +136,7 @@ fn null_writeSplat(context: ?*anyopaque, data: []const []const u8, splat: usize)
136136 const pattern = data[headers.len..];
137137 var written: usize = pattern.len * splat;
138138 for (headers) |bytes| written += bytes.len;
139 return .{ .len = written };
139 return written;
140140}
141141
142142fn null_writeFile(
......@@ -156,12 +156,12 @@ fn null_writeFile(
156156 const stat = try file.stat();
157157 n += stat.size - off;
158158 for (headers_and_trailers[headers_len..]) |bytes| n += bytes.len;
159 return .{ .len = n };
159 return n;
160160 }
161161 @panic("TODO stream from file until eof, counting");
162162 }
163163 for (headers_and_trailers) |bytes| n += bytes.len;
164 return .{ .len = len.int() + n };
164 return len.int() + n;
165165}
166166
167167test @"null" {