authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-04-05 21:07:21 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-04-05 21:07:21 -07:00
log09b8f3eb5f661e682495dd5800db9f9b4237227d
tree608f27c94a092c5723a4620b591156c750d7da3a
parent94b0785cce29d5f5399e6069a15eee9c0f28cacc
signaturebadge-check Signed by SSH key SHA256:4hHJbtBRU58AYXwjL7fkz2fnQHdiye8x1QpTCQ0sHNw

add Dir.rename()


1 files changed, 15 insertions(+), 0 deletions(-)

Dir.zig+15
......@@ -149,3 +149,18 @@ pub const Iterator = struct {
149149 type: sys.DT,
150150 };
151151};
152
153pub fn rename(self: Dir, old: [:0]const u8, new: [:0]const u8) !void {
154 return sys.renameat(@intFromEnum(self.fd), old.ptr, @intFromEnum(self.fd), new.ptr);
155}
156pub fn renameC(self: Dir, old: []const u8, new: []const u8) !void {
157 std.debug.assert(old.len <= sys.NAME_MAX);
158 std.debug.assert(new.len <= sys.NAME_MAX);
159 var old_buf: [sys.NAME_MAX + 1]u8 = undefined;
160 var new_buf: [sys.NAME_MAX + 1]u8 = undefined;
161 @memcpy(old_buf[0..old.len], old);
162 @memcpy(new_buf[0..new.len], new);
163 old_buf[old.len] = 0;
164 new_buf[new.len] = 0;
165 return rename(self, old_buf[0..old.len :0], new_buf[0..new.len :0]);
166}