From 4b6221922db6e8c9f252a816abc2cd75374304d6 Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Sun, 28 Dec 2025 22:17:11 -0800 Subject: [PATCH] Dir: add openDirC method which takes non-terminated slice but expects a single name or less --- Dir.zig | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Dir.zig b/Dir.zig index 9f48194d58a871a6260fd9b7117baf7373639026..281a2b606169d112c6df9c2db56cdfa0eb73cdad 100644 --- a/Dir.zig +++ b/Dir.zig @@ -30,6 +30,13 @@ pub fn openDir(self: Dir, sub_path: [:0]const u8, flags: OpenDirFlags) !Dir { if (os == .linux) return .{ .fd = @enumFromInt(try sys_linux.openat(@intFromEnum(self.fd), sub_path.ptr, sys_linux.O.RDONLY | sys_linux.O.DIRECTORY)) }; } +pub fn openDirC(self: Dir, sub_path: []const u8, flags: OpenDirFlags) !Dir { + std.debug.assert(sub_path.len <= sys_linux.NAME_MAX); + var buf: [sys_linux.NAME_MAX + 1]u8 = undefined; + @memcpy(buf[0..sub_path.len], sub_path); + buf[sub_path.len] = 0; + return openDir(self, buf[0..sub_path.len :0], flags); +} pub const OpenDirFlags = packed struct { // -- 2.54.0