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(...@@ -1737,9 +1737,10 @@ pub fn writer_writeFile(
1737 const smaller_len = if (len_int == 0) max_count else @min(len_int, max_count);1737 const smaller_len = if (len_int == 0) max_count else @min(len_int, max_count);
1738 var off: std.os.linux.off_t = undefined;1738 var off: std.os.linux.off_t = undefined;
1739 const off_ptr: ?*std.os.linux.off_t = if (in_offset.toInt()) |offset| b: {1739 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;
1741 break :b &off;1741 break :b &off;
1742 } else null;1742 } else null;
1743 if (true) @panic("TODO");
1743 const n = std.os.linux.wrapped.sendfile(out_fd, in_fd, off_ptr, smaller_len) catch |err| switch (err) {1744 const n = std.os.linux.wrapped.sendfile(out_fd, in_fd, off_ptr, smaller_len) catch |err| switch (err) {
1744 error.UnsupportedOperation => break :sf,1745 error.UnsupportedOperation => break :sf,
1745 error.Unseekable => break :sf,1746 error.Unseekable => break :sf,
lib/std/io/BufferedReader.zig+11-8
...@@ -34,7 +34,7 @@ const eof_reader: std.io.Reader.VTable = .{...@@ -34,7 +34,7 @@ const eof_reader: std.io.Reader.VTable = .{
34 .streamReadVec = eof_streamReadVec,34 .streamReadVec = eof_streamReadVec,
35};35};
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 {
38 _ = context;38 _ = context;
39 _ = data;39 _ = data;
40 _ = splat;40 _ = splat;
...@@ -44,11 +44,11 @@ fn eof_writeSplat(context: ?*anyopaque, data: []const []const u8, splat: usize)...@@ -44,11 +44,11 @@ fn eof_writeSplat(context: ?*anyopaque, data: []const []const u8, splat: usize)
44fn eof_writeFile(44fn eof_writeFile(
45 context: ?*anyopaque,45 context: ?*anyopaque,
46 file: std.fs.File,46 file: std.fs.File,
47 offset: u64,47 offset: std.io.Writer.Offset,
48 len: Reader.FileLen,48 len: std.io.Writer.FileLen,
49 headers_and_trailers: []const []const u8,49 headers_and_trailers: []const []const u8,
50 headers_len: usize,50 headers_len: usize,
51) anyerror!Reader.Status {51) anyerror!usize {
52 _ = context;52 _ = context;
53 _ = file;53 _ = file;
54 _ = offset;54 _ = offset;
...@@ -73,14 +73,14 @@ fn eof_posReadVec(ctx: ?*anyopaque, data: []const []u8, offset: u64) anyerror!Re...@@ -73,14 +73,14 @@ fn eof_posReadVec(ctx: ?*anyopaque, data: []const []u8, offset: u64) anyerror!Re
73 return error.EndOfStream;73 return error.EndOfStream;
74}74}
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 {
77 _ = ctx;77 _ = ctx;
78 _ = bw;78 _ = bw;
79 _ = limit;79 _ = limit;
80 return error.EndOfStream;80 return error.EndOfStream;
81}81}
8282
83fn eof_streamReadVec(ctx: ?*anyopaque, data: []const []u8) Reader.Status {83fn eof_streamReadVec(ctx: ?*anyopaque, data: []const []u8) anyerror!Reader.Status {
84 _ = ctx;84 _ = ctx;
85 _ = data;85 _ = data;
86 return error.EndOfStream;86 return error.EndOfStream;
...@@ -91,13 +91,16 @@ pub fn initFixed(br: *BufferedReader, buffer: []const u8) void {...@@ -91,13 +91,16 @@ pub fn initFixed(br: *BufferedReader, buffer: []const u8) void {
91 br.* = .{91 br.* = .{
92 .seek = 0,92 .seek = 0,
93 .storage = .{93 .storage = .{
94 .buffer = .initBuffer(@constCast(buffer)),94 .buffer = .fromOwnedSlice(@constCast(buffer)),
95 .unbuffered_writer = .{95 .unbuffered_writer = .{
96 .context = undefined,96 .context = undefined,
97 .vtable = &eof_writer,97 .vtable = &eof_writer,
98 },98 },
99 },99 },
100 .unbuffered_reader = &.{ .context = undefined, .vtable = &eof_reader },100 .unbuffered_reader = .{
101 .context = undefined,
102 .vtable = &eof_reader,
103 },
101 };104 };
102}105}
103106
lib/std/io/BufferedWriter.zig+1-1
...@@ -50,7 +50,7 @@ pub fn initFixed(bw: *BufferedWriter, buffer: []u8) void {...@@ -50,7 +50,7 @@ pub fn initFixed(bw: *BufferedWriter, buffer: []u8) void {
50 .context = bw,50 .context = bw,
51 .vtable = &fixed_vtable,51 .vtable = &fixed_vtable,
52 },52 },
53 .buffer = buffer,53 .buffer = .initBuffer(buffer),
54 };54 };
55}55}
5656
lib/std/io/Reader.zig+5
...@@ -85,6 +85,11 @@ pub fn posReadAll(r: Reader, w: *std.io.BufferedWriter, start_offset: u64) anyer...@@ -85,6 +85,11 @@ pub fn posReadAll(r: Reader, w: *std.io.BufferedWriter, start_offset: u64) anyer
85 }85 }
86}86}
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
88/// Returns total number of bytes written to `w`.93/// Returns total number of bytes written to `w`.
89pub fn streamReadAll(r: Reader, w: *std.io.BufferedWriter) anyerror!usize {94pub fn streamReadAll(r: Reader, w: *std.io.BufferedWriter) anyerror!usize {
90 const vtable_streamRead = r.vtable.streamRead.?;95 const vtable_streamRead = r.vtable.streamRead.?;
lib/std/io/Writer.zig+4-4
...@@ -96,7 +96,7 @@ pub fn writeFile(...@@ -96,7 +96,7 @@ pub fn writeFile(
96pub fn unimplemented_writeFile(96pub fn unimplemented_writeFile(
97 context: ?*anyopaque,97 context: ?*anyopaque,
98 file: std.fs.File,98 file: std.fs.File,
99 offset: u64,99 offset: Offset,
100 len: FileLen,100 len: FileLen,
101 headers_and_trailers: []const []const u8,101 headers_and_trailers: []const []const u8,
102 headers_len: usize,102 headers_len: usize,
...@@ -136,7 +136,7 @@ fn null_writeSplat(context: ?*anyopaque, data: []const []const u8, splat: usize)...@@ -136,7 +136,7 @@ fn null_writeSplat(context: ?*anyopaque, data: []const []const u8, splat: usize)
136 const pattern = data[headers.len..];136 const pattern = data[headers.len..];
137 var written: usize = pattern.len * splat;137 var written: usize = pattern.len * splat;
138 for (headers) |bytes| written += bytes.len;138 for (headers) |bytes| written += bytes.len;
139 return .{ .len = written };139 return written;
140}140}
141141
142fn null_writeFile(142fn null_writeFile(
...@@ -156,12 +156,12 @@ fn null_writeFile(...@@ -156,12 +156,12 @@ fn null_writeFile(
156 const stat = try file.stat();156 const stat = try file.stat();
157 n += stat.size - off;157 n += stat.size - off;
158 for (headers_and_trailers[headers_len..]) |bytes| n += bytes.len;158 for (headers_and_trailers[headers_len..]) |bytes| n += bytes.len;
159 return .{ .len = n };159 return n;
160 }160 }
161 @panic("TODO stream from file until eof, counting");161 @panic("TODO stream from file until eof, counting");
162 }162 }
163 for (headers_and_trailers) |bytes| n += bytes.len;163 for (headers_and_trailers) |bytes| n += bytes.len;
164 return .{ .len = len.int() + n };164 return len.int() + n;
165}165}
166166
167test @"null" {167test @"null" {