authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-05-01 19:20:42-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-01 16:35:28-07:00
logb3da216f1b36b76d8591e64ad1f51079b81bfa8e
tree5cc3739f152f375cd1622e67ee6edb9458cf304a
parentcbe592097541011232de6402a5b5a385b5075b59

std.io.BufferedReader: add readRemaining


1 files changed, 14 insertions(+), 0 deletions(-)

lib/std/io/BufferedReader.zig+14
...@@ -90,6 +90,20 @@ pub fn readAll(br: *BufferedReader, bw: *BufferedWriter, limit: Reader.Limit) Re...@@ -90,6 +90,20 @@ pub fn readAll(br: *BufferedReader, bw: *BufferedWriter, limit: Reader.Limit) Re
90 }90 }
91}91}
9292
93/// "Pump" data from the reader to the writer, handling `error.EndOfStream` as
94/// a success case.
95///
96/// Returns total number of bytes written to `bw`.
97pub fn readRemaining(br: *BufferedReader, bw: *BufferedWriter) Reader.RwRemainingError!usize {
98 var offset: usize = 0;
99 while (true) {
100 offset += br.read(bw, .unlimited) catch |err| switch (err) {
101 error.EndOfStream => return offset,
102 else => |e| return e,
103 };
104 }
105}
106
93/// Equivalent to `readVec` but reads at most `limit` bytes.107/// Equivalent to `readVec` but reads at most `limit` bytes.
94pub fn readVecLimit(br: *BufferedReader, data: []const []u8, limit: Reader.Limit) Reader.Error!usize {108pub fn readVecLimit(br: *BufferedReader, data: []const []u8, limit: Reader.Limit) Reader.Error!usize {
95 _ = br;109 _ = br;