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