Commit b7ba0b69b1

Andrew Kelley <andrew@ziglang.org>
2024-03-07 02:35:04
std.io.Writer: add writeFile method
1 parent 574b33e
Changed files (1)
lib
std
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;
+    }
+}