mirror of
https://github.com/odin-lang/Odin.git
synced 2026-04-20 05:20:28 +00:00
posix: fix test on netbsd
This commit is contained in:
@@ -408,7 +408,7 @@ SA_Flags_Bits :: enum c.int {
|
||||
RESTART = log2(SA_RESTART),
|
||||
// Cause extra information to be passed to signal handlers at the time of receipt of a signal.
|
||||
SIGINFO = log2(SA_SIGINFO),
|
||||
// Cause implemention not to create zombie processes or status information on child termination.
|
||||
// Cause implementation not to create zombie processes or status information on child termination.
|
||||
NOCLDWAIT = log2(SA_NOCLDWAIT),
|
||||
// Cause signal not to be automatically blocked on entry to signal handler.
|
||||
SA_NODEFER = log2(SA_NODEFER),
|
||||
|
||||
@@ -290,7 +290,7 @@ when ODIN_OS == .Darwin {
|
||||
|
||||
@(private)
|
||||
_WEXITSTATUS :: #force_inline proc "contextless" (x: c.int) -> c.int {
|
||||
return (x >> 8) & 0x000000ff
|
||||
return c.int((c.uint(x) >> 8) & 0xff)
|
||||
}
|
||||
|
||||
@(private)
|
||||
@@ -310,7 +310,7 @@ when ODIN_OS == .Darwin {
|
||||
|
||||
@(private)
|
||||
_WSTOPSIG :: #force_inline proc "contextless" (x: c.int) -> Signal {
|
||||
return Signal((x >> 8) & 0xff)
|
||||
return Signal(c.int((c.uint(x) >> 8) & 0xff))
|
||||
}
|
||||
|
||||
@(private)
|
||||
|
||||
@@ -249,10 +249,21 @@ test_signal :: proc(t: ^testing.T) {
|
||||
case 0:
|
||||
posix.exit(69)
|
||||
case:
|
||||
status: i32
|
||||
posix.waitpid(pid, &status, {})
|
||||
testing.expect(t, posix.WIFEXITED(status))
|
||||
testing.expect(t, posix.WEXITSTATUS(status) == 69)
|
||||
for {
|
||||
status: i32
|
||||
res := posix.waitpid(pid, &status, {})
|
||||
if res == -1 {
|
||||
if !testing.expect_value(t, posix.errno(), posix.Errno.EINTR) {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if posix.WIFEXITED(status) || posix.WIFSIGNALED(status) {
|
||||
testing.expect(t, posix.WIFEXITED(status))
|
||||
testing.expect(t, posix.WEXITSTATUS(status) == 69)
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user