authorgravatar for quae@daurnimator.comdaurnimator <quae@daurnimator.com> 2020-11-19 02:31:55+11:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-01-11 16:48:56-07:00
log01d1a8a783883414bd694731c7c2bfbd054b9a46
treef81065bb75da1cfe42a03bc6b05d796de9fb2890
parente873668d38733d212eef9a317c9679305ff3b82e

std: use fifo.pump in writeFileAllUnseekable


1 files changed, 6 insertions(+), 8 deletions(-)

lib/std/fs/file.zig+6-8
...@@ -724,14 +724,12 @@ pub const File = struct {...@@ -724,14 +724,12 @@ pub const File = struct {
724724
725 try in_file.reader().skipBytes(args.in_offset, .{ .buf_size = 4096 });725 try in_file.reader().skipBytes(args.in_offset, .{ .buf_size = 4096 });
726726
727 var buffer: [4096]u8 = undefined;727 var fifo = std.fifo.LinearFifo(u8, .{ .Static = 4096 }).init();
728 const in_len = args.in_len orelse math.maxInt(u64);728 if (args.in_len) |len| {
729 var index: usize = 0;729 var stream = std.io.earlyEOFReader(in_file.reader(), len);
730 while (index < in_len) {730 try fifo.pump(stream.reader(), self.writer());
731 const ask = math.min(buffer.len, in_len - index);731 } else {
732 const amt = try in_file.read(buffer[0..ask]);732 try fifo.pump(in_file.reader(), self.writer());
733 if (amt == 0) break;
734 index += try self.write(buffer[0..amt]);
735 }733 }
736734
737 try self.writevAll(trailers);735 try self.writevAll(trailers);