From aaea5467f1a8b4c2ce7129ee7bc6bf2e11544167 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Sat, 30 May 2026 19:42:55 -0700 Subject: [PATCH] add copy_file_range --- mod.zig | 7 +++++++ test.zig | 2 ++ 2 files changed, 9 insertions(+) diff --git a/mod.zig b/mod.zig index ed174aa8566c8d482af72e0acdeb2f79807647e3..acba211c8070bec14aca736f307c9757a62ce13e 100644 --- a/mod.zig +++ b/mod.zig @@ -2811,6 +2811,7 @@ pub const libc = struct { pub extern fn sched_getaffinity(pid: pid_t, cpusetsize: usize, mask: *cpu_set_t) c_int; pub extern fn getrandom(buf: [*]u8, size: usize, flags: c_uint) isize; pub extern fn flock(fd: c_int, op: c_int) c_int; + pub extern fn copy_file_range(fd_int: c_int, off_in: ?*off_t, fd_out: c_int, off_out: ?*off_t, size: usize, flags: c_uint) isize; }; comptime { @@ -3727,3 +3728,9 @@ pub fn fchmod(fd: c_int, mode: mode_t) !void { if (rc == -1) return errno.fromInt(errno.fromLibC()); std.debug.assert(rc == 0); } +pub fn copy_file_range(fd_int: c_int, off_in: ?*off_t, fd_out: c_int, off_out: ?*off_t, size: usize, flags: c_uint) errno.Error!usize { + const rc = libc.copy_file_range(fd_int, off_in, fd_out, off_out, size, flags); + if (rc == -1) return errno.fromInt(errno.fromLibC()); + std.debug.assert(rc >= 0); + return @intCast(rc); +} diff --git a/test.zig b/test.zig index aec2685b985375be1a8485262d221340afa09c59..ca5073c67465695fff974f36ea9f970cf8cc2deb 100644 --- a/test.zig +++ b/test.zig @@ -81,4 +81,6 @@ test { _ = &linux.unlinkat; _ = &linux.lseek; _ = &linux.getcwd; + _ = &linux.fchmod; + _ = &linux.copy_file_range; } -- 2.54.0