xref: /plan9/sys/src/ape/cmd/pdksh/ksh_wait.h (revision 7dd7cddf99dd7472612f1413b4da293630e6b1bc)
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