| ... | @@ -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 | } |
| | 33 | pub 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 | } |
| 33 | | 40 | |
| 34 | pub const OpenDirFlags = packed struct { | 41 | pub const OpenDirFlags = packed struct { |
| 35 | // | 42 | // |