| ... | @@ -127,6 +127,13 @@ pub fn makeOpenPath(self: Dir, sub_path: [:0]const u8, flags: OpenDirFlags) !Dir | ... | @@ -127,6 +127,13 @@ pub fn makeOpenPath(self: Dir, sub_path: [:0]const u8, flags: OpenDirFlags) !Dir |
| 127 | else => |e| return e, | 127 | else => |e| return e, |
| 128 | }; | 128 | }; |
| 129 | } | 129 | } |
| | 130 | pub fn makeOpenPathC(self: Dir, sub_path: []const u8, flags: OpenDirFlags) !Dir { |
| | 131 | std.debug.assert(sub_path.len <= sys.PATH_MAX); |
| | 132 | var buf: [sys.PATH_MAX + 1]u8 = undefined; |
| | 133 | @memcpy(buf[0..sub_path.len], sub_path); |
| | 134 | buf[sub_path.len] = 0; |
| | 135 | return makeOpenPath(self, buf[0..sub_path.len :0], flags); |
| | 136 | } |
| 130 | | 137 | |
| 131 | pub fn readlink(self: Dir, noalias sub_path: [:0]const u8, noalias buf: []u8) ![:0]u8 { | 138 | pub fn readlink(self: Dir, noalias sub_path: [:0]const u8, noalias buf: []u8) ![:0]u8 { |
| 132 | return sys.readlinkat(@intFromEnum(self.fd), sub_path, buf); | 139 | return sys.readlinkat(@intFromEnum(self.fd), sub_path, buf); |