diff options
| author | LeRoyce Pearson <leroycepearson@geemili.xyz> | 2020-03-27 11:32:33 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-03-27 11:32:33 -0600 |
| commit | c7f4e68464e0ebd6e6d0f3230114d189e25e3dc9 (patch) | |
| tree | 1039973f89854e5256d86ecfecc87b2b61be46cd /lib/std/os.zig | |
| parent | 1a6c3aeec9226eba02655c77872bd01eaa9be711 (diff) | |
| parent | aec4967f36d16cfee43529bd341300f5f77af34a (diff) | |
| download | zig-c7f4e68464e0ebd6e6d0f3230114d189e25e3dc9.tar.gz zig-c7f4e68464e0ebd6e6d0f3230114d189e25e3dc9.zip | |
Merge branch 'master' into feature-file-locks
Diffstat (limited to 'lib/std/os.zig')
| -rw-r--r-- | lib/std/os.zig | 42 |
1 files changed, 26 insertions, 16 deletions
diff --git a/lib/std/os.zig b/lib/std/os.zig index 846943b050..48f4209ed3 100644 --- a/lib/std/os.zig +++ b/lib/std/os.zig @@ -2531,18 +2531,15 @@ pub const FStatError = error{ pub fn fstat(fd: fd_t) FStatError!Stat { var stat: Stat = undefined; - if (comptime std.Target.current.isDarwin()) { - switch (darwin.getErrno(darwin.@"fstat$INODE64"(fd, &stat))) { - 0 => return stat, - EINVAL => unreachable, - EBADF => unreachable, // Always a race condition. - ENOMEM => return error.SystemResources, - EACCES => return error.AccessDenied, - else => |err| return unexpectedErrno(err), - } - } - switch (errno(system.fstat(fd, &stat))) { + const symbol_name = if (comptime std.Target.current.isDarwin()) + "fstat$INODE64" + else if (std.Target.current.os.tag == .netbsd) + "__fstat50" + else + "fstat"; + + switch (errno(@field(system, symbol_name)(fd, &stat))) { 0 => return stat, EINVAL => unreachable, EBADF => unreachable, // Always a race condition. @@ -3401,7 +3398,13 @@ pub fn clock_gettime(clk_id: i32, tp: *timespec) ClockGetTimeError!void { } return; } - switch (errno(system.clock_gettime(clk_id, tp))) { + + const symbol_name = if (std.Target.current.os.tag == .netbsd) + "__clock_gettime50" + else + "clock_gettime"; + + switch (errno(@field(system, symbol_name)(clk_id, tp))) { 0 => return, EFAULT => unreachable, EINVAL => return error.UnsupportedClock, @@ -3423,7 +3426,12 @@ pub fn clock_getres(clk_id: i32, res: *timespec) ClockGetTimeError!void { return; } - switch (errno(system.clock_getres(clk_id, res))) { + const symbol_name = if (std.Target.current.os.tag == .netbsd) + "__clock_getres50" + else + "clock_getres"; + + switch (errno(@field(system, symbol_name)(clk_id, res))) { 0 => return, EFAULT => unreachable, EINVAL => return error.UnsupportedClock, @@ -3489,10 +3497,12 @@ pub const SigaltstackError = error{ } || UnexpectedError; pub fn sigaltstack(ss: ?*stack_t, old_ss: ?*stack_t) SigaltstackError!void { - if (builtin.os.tag == .windows or builtin.os.tag == .uefi or builtin.os.tag == .wasi) - @compileError("std.os.sigaltstack not available for this target"); + const symbol_name = if (std.Target.current.os.tag == .netbsd) + "__sigaltstack14" + else + "sigaltstack"; - switch (errno(system.sigaltstack(ss, old_ss))) { + switch (errno(@field(system, symbol_name)(ss, old_ss))) { 0 => return, EFAULT => unreachable, EINVAL => unreachable, |
