1*7dd7cddfSDavid du Colombier /* Wrapper around the ugly sys/wait includes/ifdefs */ 2*7dd7cddfSDavid du Colombier /* $Id$ */ 3*7dd7cddfSDavid du Colombier 4*7dd7cddfSDavid du Colombier #ifdef HAVE_SYS_WAIT_H 5*7dd7cddfSDavid du Colombier # include <sys/wait.h> 6*7dd7cddfSDavid du Colombier #endif 7*7dd7cddfSDavid du Colombier 8*7dd7cddfSDavid du Colombier #ifndef POSIX_SYS_WAIT 9*7dd7cddfSDavid du Colombier /* Get rid of system macros (which probably use union wait) */ 10*7dd7cddfSDavid du Colombier # undef WIFCORED 11*7dd7cddfSDavid du Colombier # undef WIFEXITED 12*7dd7cddfSDavid du Colombier # undef WEXITSTATUS 13*7dd7cddfSDavid du Colombier # undef WIFSIGNALED 14*7dd7cddfSDavid du Colombier # undef WTERMSIG 15*7dd7cddfSDavid du Colombier # undef WIFSTOPPED 16*7dd7cddfSDavid du Colombier # undef WSTOPSIG 17*7dd7cddfSDavid du Colombier #endif /* POSIX_SYS_WAIT */ 18*7dd7cddfSDavid du Colombier 19*7dd7cddfSDavid du Colombier typedef int WAIT_T; 20*7dd7cddfSDavid du Colombier 21*7dd7cddfSDavid du Colombier #ifndef WIFCORED 22*7dd7cddfSDavid du Colombier # define WIFCORED(s) ((s) & 0x80) 23*7dd7cddfSDavid du Colombier #endif 24*7dd7cddfSDavid du Colombier #define WSTATUS(s) (s) 25*7dd7cddfSDavid du Colombier 26*7dd7cddfSDavid du Colombier #ifndef WIFEXITED 27*7dd7cddfSDavid du Colombier # define WIFEXITED(s) (((s) & 0xff) == 0) 28*7dd7cddfSDavid du Colombier #endif 29*7dd7cddfSDavid du Colombier #ifndef WEXITSTATUS 30*7dd7cddfSDavid du Colombier # define WEXITSTATUS(s) (((s) >> 8) & 0xff) 31*7dd7cddfSDavid du Colombier #endif 32*7dd7cddfSDavid du Colombier #ifndef WIFSIGNALED 33*7dd7cddfSDavid du Colombier # define WIFSIGNALED(s) (((s) & 0xff) != 0 && ((s) & 0xff) != 0x7f) 34*7dd7cddfSDavid du Colombier #endif 35*7dd7cddfSDavid du Colombier #ifndef WTERMSIG 36*7dd7cddfSDavid du Colombier # define WTERMSIG(s) ((s) & 0x7f) 37*7dd7cddfSDavid du Colombier #endif 38*7dd7cddfSDavid du Colombier #ifndef WIFSTOPPED 39*7dd7cddfSDavid du Colombier # define WIFSTOPPED(s) (((s) & 0xff) == 0x7f) 40*7dd7cddfSDavid du Colombier #endif 41*7dd7cddfSDavid du Colombier #ifndef WSTOPSIG 42*7dd7cddfSDavid du Colombier # define WSTOPSIG(s) (((s) >> 8) & 0xff) 43*7dd7cddfSDavid du Colombier #endif 44*7dd7cddfSDavid du Colombier 45*7dd7cddfSDavid du Colombier #if !defined(HAVE_WAITPID) && defined(HAVE_WAIT3) 46*7dd7cddfSDavid du Colombier /* always used with p == -1 */ 47*7dd7cddfSDavid du Colombier # define ksh_waitpid(p, s, o) wait3((s), (o), (struct rusage *) 0) 48*7dd7cddfSDavid du Colombier #else /* !HAVE_WAITPID && HAVE_WAIT3 */ 49*7dd7cddfSDavid du Colombier # define ksh_waitpid(p, s, o) waitpid((p), (s), (o)) 50*7dd7cddfSDavid du Colombier #endif /* !HAVE_WAITPID && HAVE_WAIT3 */ 51