xref: /freebsd/contrib/bmake/wait.h (revision 3955d011)
1*3955d011SMarcel Moolenaar /* NAME:
2*3955d011SMarcel Moolenaar  *	wait.h - compensate for what vendors leave out
3*3955d011SMarcel Moolenaar  *
4*3955d011SMarcel Moolenaar  * AUTHOR:
5*3955d011SMarcel Moolenaar  *	Simon J. Gerraty <sjg@crufty.net>
6*3955d011SMarcel Moolenaar  */
7*3955d011SMarcel Moolenaar /*
8*3955d011SMarcel Moolenaar  * RCSid:
9*3955d011SMarcel Moolenaar  *	$Id: wait.h,v 1.6 2002/11/26 07:53:06 sjg Exp $
10*3955d011SMarcel Moolenaar  *
11*3955d011SMarcel Moolenaar  *      @(#)Copyright (c) 1994, Simon J. Gerraty.
12*3955d011SMarcel Moolenaar  *
13*3955d011SMarcel Moolenaar  *      This is free software.  It comes with NO WARRANTY.
14*3955d011SMarcel Moolenaar  *      Permission to use, modify and distribute this source code
15*3955d011SMarcel Moolenaar  *      is granted subject to the following conditions.
16*3955d011SMarcel Moolenaar  *      1/ that the above copyright notice and this notice
17*3955d011SMarcel Moolenaar  *      are preserved in all copies and that due credit be given
18*3955d011SMarcel Moolenaar  *      to the author.
19*3955d011SMarcel Moolenaar  *      2/ that any changes to this code are clearly commented
20*3955d011SMarcel Moolenaar  *      as such so that the author does not get blamed for bugs
21*3955d011SMarcel Moolenaar  *      other than his own.
22*3955d011SMarcel Moolenaar  *
23*3955d011SMarcel Moolenaar  *      Please send copies of changes and bug-fixes to:
24*3955d011SMarcel Moolenaar  *      sjg@crufty.net
25*3955d011SMarcel Moolenaar  */
26*3955d011SMarcel Moolenaar 
27*3955d011SMarcel Moolenaar #include <sys/wait.h>
28*3955d011SMarcel Moolenaar 
29*3955d011SMarcel Moolenaar #ifdef sun386
30*3955d011SMarcel Moolenaar # define UNION_WAIT
31*3955d011SMarcel Moolenaar # define WEXITSTATUS(x) ((&x)->w_retcode)
32*3955d011SMarcel Moolenaar # define WTERMSIG(x) ((&x)->w_termsig)
33*3955d011SMarcel Moolenaar # define WSTOPSIG(x) ((&x)->w_stopsig)
34*3955d011SMarcel Moolenaar # define HAVE_WAIT4
35*3955d011SMarcel Moolenaar #endif
36*3955d011SMarcel Moolenaar 
37*3955d011SMarcel Moolenaar #ifndef WAIT_T
38*3955d011SMarcel Moolenaar # ifdef UNION_WAIT
39*3955d011SMarcel Moolenaar #   define WAIT_T union wait
40*3955d011SMarcel Moolenaar #   define WAIT_STATUS(x) (x).w_status
41*3955d011SMarcel Moolenaar # else
42*3955d011SMarcel Moolenaar #   define WAIT_T int
43*3955d011SMarcel Moolenaar #   define WAIT_STATUS(x) x
44*3955d011SMarcel Moolenaar # endif
45*3955d011SMarcel Moolenaar #endif
46*3955d011SMarcel Moolenaar 
47*3955d011SMarcel Moolenaar #ifndef WEXITSTATUS
48*3955d011SMarcel Moolenaar # define WEXITSTATUS(_X)       (((int)(_X)>>8)&0377)
49*3955d011SMarcel Moolenaar #endif
50*3955d011SMarcel Moolenaar #ifndef WSTOPPED
51*3955d011SMarcel Moolenaar # define WSTOPPED 0177
52*3955d011SMarcel Moolenaar #endif
53*3955d011SMarcel Moolenaar #ifndef WSTOPSIG
54*3955d011SMarcel Moolenaar # define WSTOPSIG(x) WSTOPPED
55*3955d011SMarcel Moolenaar #endif
56*3955d011SMarcel Moolenaar 
57*3955d011SMarcel Moolenaar #ifdef UNION_WAIT
58*3955d011SMarcel Moolenaar #ifndef WSET_STOPCODE
59*3955d011SMarcel Moolenaar #define WSET_STOPCODE(x, sig) ((&x)->w_stopsig = (sig))
60*3955d011SMarcel Moolenaar #endif
61*3955d011SMarcel Moolenaar #ifndef WSET_EXITCODE
62*3955d011SMarcel Moolenaar #define WSET_EXITCODE(x, ret, sig) ((&x)->w_termsig = (sig), (&x)->w_retcode = (ret))
63*3955d011SMarcel Moolenaar #endif
64*3955d011SMarcel Moolenaar #else
65*3955d011SMarcel Moolenaar #ifndef WSET_STOPCODE
66*3955d011SMarcel Moolenaar #define WSET_STOPCODE(x, sig) ((x) = ((sig) << 8) | 0177)
67*3955d011SMarcel Moolenaar #endif
68*3955d011SMarcel Moolenaar #ifndef WSET_EXITCODE
69*3955d011SMarcel Moolenaar #define WSET_EXITCODE(x, ret, sig) ((x) = (ret << 8) | (sig))
70*3955d011SMarcel Moolenaar #endif
71*3955d011SMarcel Moolenaar #endif
72*3955d011SMarcel Moolenaar 
73*3955d011SMarcel Moolenaar #ifndef HAVE_WAITPID
74*3955d011SMarcel Moolenaar # ifdef HAVE_WAIT4
75*3955d011SMarcel Moolenaar #   define waitpid(pid, statusp, flags)	 wait4(pid, statusp, flags, (char *)0)
76*3955d011SMarcel Moolenaar # else
77*3955d011SMarcel Moolenaar #   ifdef HAVE_WAIT3
78*3955d011SMarcel Moolenaar #     define waitpid(pid, statusp, flags) wait3(statusp, flags, (char *)0)
79*3955d011SMarcel Moolenaar #   endif
80*3955d011SMarcel Moolenaar # endif
81*3955d011SMarcel Moolenaar #endif
82