zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit b7ba0b69b19a20523af751c0935882ddba579c8c (tree)
parent 574b33e65a6968928d359bc553c4e0c38312a3e9
Author: Andrew Kelley <andrew@ziglang.org>
Date:   Wed,  6 Mar 2024 18:35:04 -0700

std.io.Writer: add writeFile method

Diffstat:
Mlib/std/io/Writer.zig | 11+++++++++++
1 file changed, 11 insertions(+), 0 deletions(-)

diff --git a/lib/std/io/Writer.zig b/lib/std/io/Writer.zig @@ -58,3 +58,14 @@ pub fn writeStruct(self: Self, value: anytype) anyerror!void { comptime assert(@typeInfo(@TypeOf(value)).Struct.layout != .Auto); return self.writeAll(mem.asBytes(&value)); } + +pub fn writeFile(self: Self, file: std.fs.File) anyerror!void { + // TODO: figure out how to adjust std lib abstractions so that this ends up + // doing sendfile or maybe even copy_file_range under the right conditions. + var buf: [4000]u8 = undefined; + while (true) { + const n = try file.readAll(&buf); + try self.writeAll(buf[0..n]); + if (n < buf.len) return; + } +}