From 09b8f3eb5f661e682495dd5800db9f9b4237227d Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Sun, 5 Apr 2026 21:07:21 -0700 Subject: [PATCH] add Dir.rename() --- Dir.zig | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Dir.zig b/Dir.zig index f4753944e14a8918909f06694ac0b807372c7677..6c08ef28a0b8817a4783b753331d8b4ce51d1a4e 100644 --- a/Dir.zig +++ b/Dir.zig @@ -149,3 +149,18 @@ pub const Iterator = struct { type: sys.DT, }; }; + +pub fn rename(self: Dir, old: [:0]const u8, new: [:0]const u8) !void { + return sys.renameat(@intFromEnum(self.fd), old.ptr, @intFromEnum(self.fd), new.ptr); +} +pub fn renameC(self: Dir, old: []const u8, new: []const u8) !void { + std.debug.assert(old.len <= sys.NAME_MAX); + std.debug.assert(new.len <= sys.NAME_MAX); + var old_buf: [sys.NAME_MAX + 1]u8 = undefined; + var new_buf: [sys.NAME_MAX + 1]u8 = undefined; + @memcpy(old_buf[0..old.len], old); + @memcpy(new_buf[0..new.len], new); + old_buf[old.len] = 0; + new_buf[new.len] = 0; + return rename(self, old_buf[0..old.len :0], new_buf[0..new.len :0]); +} -- 2.54.0