| ... | ... | @@ -5195,6 +5195,23 @@ pub fn getFdPath(fd: fd_t, out_buffer: *[MAX_PATH_BYTES]u8) RealPathError![]u8 { |
| 5195 | 5195 | const len = mem.indexOfScalar(u8, out_buffer[0..], @as(u8, 0)) orelse MAX_PATH_BYTES; |
| 5196 | 5196 | return out_buffer[0..len]; |
| 5197 | 5197 | }, |
| 5198 | .netbsd => { |
| 5199 | if (comptime builtin.os.version_range.semver.max.order(.{ .major = 10, .minor = 0 }) == .lt) { |
| 5200 | @compileError("querying for canonical path of a handle is unsupported on this host"); |
| 5201 | } |
| 5202 | @memset(out_buffer, 0, MAX_PATH_BYTES); |
| 5203 | switch (errno(system.fcntl(fd, F.GETPATH, out_buffer))) { |
| 5204 | .SUCCESS => {}, |
| 5205 | .ACCES => return error.AccessDenied, |
| 5206 | .BADF => return error.FileNotFound, |
| 5207 | .NOENT => return error.FileNotFound, |
| 5208 | .NOMEM => return error.SystemResources, |
| 5209 | .RANGE => return error.NameTooLong, |
| 5210 | else => |err| return unexpectedErrno(err), |
| 5211 | } |
| 5212 | const len = mem.indexOfScalar(u8, out_buffer[0..], @as(u8, 0)) orelse MAX_PATH_BYTES; |
| 5213 | return out_buffer[0..len]; |
| 5214 | }, |
| 5198 | 5215 | else => @compileError("querying for canonical path of a handle is unsupported on this host"), |
| 5199 | 5216 | } |
| 5200 | 5217 | } |