mirror of
https://github.com/ziglang/zig.git
synced 2026-01-20 14:25:16 +00:00
netbsd: getFdPath: F_GETPATH implementation
This commit is contained in:
parent
1a403383c9
commit
e752606464
@ -690,13 +690,17 @@ pub const F = struct {
|
||||
pub const SETFD = 2;
|
||||
pub const GETFL = 3;
|
||||
pub const SETFL = 4;
|
||||
|
||||
pub const GETOWN = 5;
|
||||
pub const SETOWN = 6;
|
||||
|
||||
pub const GETLK = 7;
|
||||
pub const SETLK = 8;
|
||||
pub const SETLKW = 9;
|
||||
pub const CLOSEM = 10;
|
||||
pub const MAXFD = 11;
|
||||
pub const DUPFD_CLOEXEC = 12;
|
||||
pub const GETNOSIGPIPE = 13;
|
||||
pub const SETNOSIGPIPE = 14;
|
||||
pub const GETPATH = 15;
|
||||
|
||||
pub const RDLCK = 1;
|
||||
pub const WRLCK = 3;
|
||||
|
||||
@ -5195,6 +5195,23 @@ pub fn getFdPath(fd: fd_t, out_buffer: *[MAX_PATH_BYTES]u8) RealPathError![]u8 {
|
||||
const len = mem.indexOfScalar(u8, out_buffer[0..], @as(u8, 0)) orelse MAX_PATH_BYTES;
|
||||
return out_buffer[0..len];
|
||||
},
|
||||
.netbsd => {
|
||||
if (comptime builtin.os.version_range.semver.max.order(.{ .major = 10, .minor = 0 }) == .lt) {
|
||||
@compileError("querying for canonical path of a handle is unsupported on this host");
|
||||
}
|
||||
@memset(out_buffer, 0, MAX_PATH_BYTES);
|
||||
switch (errno(system.fcntl(fd, F.GETPATH, out_buffer))) {
|
||||
.SUCCESS => {},
|
||||
.ACCES => return error.AccessDenied,
|
||||
.BADF => return error.FileNotFound,
|
||||
.NOENT => return error.FileNotFound,
|
||||
.NOMEM => return error.SystemResources,
|
||||
.RANGE => return error.NameTooLong,
|
||||
else => |err| return unexpectedErrno(err),
|
||||
}
|
||||
const len = mem.indexOfScalar(u8, out_buffer[0..], @as(u8, 0)) orelse MAX_PATH_BYTES;
|
||||
return out_buffer[0..len];
|
||||
},
|
||||
else => @compileError("querying for canonical path of a handle is unsupported on this host"),
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user