authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2025-12-28 22:17:11 -08:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2025-12-28 22:17:19 -08:00
log4b6221922db6e8c9f252a816abc2cd75374304d6
tree380e1c473f843c5d63dfd532ba2cc612d09e831a
parent6d281c3091979fcad6336112132a3930d7ef86fc

Dir: add openDirC method which takes non-terminated slice but expects a single name or less


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

Dir.zig+7
...@@ -30,6 +30,13 @@ pub fn openDir(self: Dir, sub_path: [:0]const u8, flags: OpenDirFlags) !Dir {...@@ -30,6 +30,13 @@ pub fn openDir(self: Dir, sub_path: [:0]const u8, flags: OpenDirFlags) !Dir {
30 if (os == .linux)30 if (os == .linux)
31 return .{ .fd = @enumFromInt(try sys_linux.openat(@intFromEnum(self.fd), sub_path.ptr, sys_linux.O.RDONLY | sys_linux.O.DIRECTORY)) };31 return .{ .fd = @enumFromInt(try sys_linux.openat(@intFromEnum(self.fd), sub_path.ptr, sys_linux.O.RDONLY | sys_linux.O.DIRECTORY)) };
32}32}
33pub fn openDirC(self: Dir, sub_path: []const u8, flags: OpenDirFlags) !Dir {
34 std.debug.assert(sub_path.len <= sys_linux.NAME_MAX);
35 var buf: [sys_linux.NAME_MAX + 1]u8 = undefined;
36 @memcpy(buf[0..sub_path.len], sub_path);
37 buf[sub_path.len] = 0;
38 return openDir(self, buf[0..sub_path.len :0], flags);
39}
3340
34pub const OpenDirFlags = packed struct {41pub const OpenDirFlags = packed struct {
35 //42 //