From 78ba749bcb8e63cbe69b59831436d28562d27b88 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Tue, 12 Sep 2023 12:11:06 +0000 Subject: Add waitid() sysdep, and fuck OpenBSD Signed-off-by: Laurent Bercot --- src/libstddjb/cspawn.c | 7 ++++++- src/sysdeps/trywaitid.c | 12 ++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 src/sysdeps/trywaitid.c (limited to 'src') diff --git a/src/libstddjb/cspawn.c b/src/libstddjb/cspawn.c index cb89481..ea0da90 100644 --- a/src/libstddjb/cspawn.c +++ b/src/libstddjb/cspawn.c @@ -96,7 +96,12 @@ static inline pid_t cspawn_fork (char const *prog, char const *const *argv, char return pid ; } -#ifdef SKALIBS_HASPOSIXSPAWN + /* + guess who has a buggy posix_spawn() *and* doesn't have waitid() to work around it? + if you guessed OpenBSD, you're right! + */ + +#if defined(SKALIBS_HASPOSIXSPAWN) && (!defined(SKALIBS_HASPOSIXSPAWNEARLYRETURN) || defined(SKALIBS_HASWAITID)) #include #include diff --git a/src/sysdeps/trywaitid.c b/src/sysdeps/trywaitid.c new file mode 100644 index 0000000..76ceeea --- /dev/null +++ b/src/sysdeps/trywaitid.c @@ -0,0 +1,12 @@ +/* ISC license. */ + +#include +#include +#include + +int main (void) +{ + siginfo_t info ; + waitid(P_PID, 0, &info, WEXITED) ; + return 0 ; +} -- cgit v1.3.1