]> git.ipfire.org Git - thirdparty/bash.git/blame - include/posixwait.h
Bash-4.4 patch 19
[thirdparty/bash.git] / include / posixwait.h
CommitLineData
d166f048
JA
1/* posixwait.h -- job control definitions from POSIX 1003.1 */
2
3/* Copyright (C) 1997 Free Software Foundation, Inc.
4
5 This file is part of GNU Bash, the Bourne Again SHell.
6
3185942a
JA
7 Bash is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
d166f048 11
3185942a
JA
12 Bash is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
d166f048 16
3185942a
JA
17 You should have received a copy of the GNU General Public License
18 along with Bash. If not, see <http://www.gnu.org/licenses/>.
19*/
d166f048
JA
20
21#if !defined (_POSIXWAIT_H_)
22# define _POSIXWAIT_H_
23
24/* If _POSIX_VERSION is not defined, we assume that <sys/wait.h> defines
25 a `union wait' and various macros used to manipulate it. Look in
26 unionwait.h for the things we expect to find. */
27#if defined (HAVE_SYS_WAIT_H)
28# include <sys/wait.h>
29#else /* !HAVE_SYS_WAIT_H */
30# if !defined (_POSIX_VERSION)
31# include "unionwait.h"
32# endif
33#endif /* !HAVE_SYS_WAIT_H */
34
35/* How to get the status of a job. For Posix, this is just an
36 int, but for other systems we have to crack the union wait. */
37#if !defined (_POSIX_VERSION)
38typedef union wait WAIT;
39# define WSTATUS(t) (t.w_status)
40#else /* _POSIX_VERSION */
41typedef int WAIT;
42# define WSTATUS(t) (t)
43#endif /* _POSIX_VERSION */
44
45/* Make sure that parameters to wait3 are defined. */
46#if !defined (WNOHANG)
47# define WNOHANG 1
48# define WUNTRACED 2
49#endif /* WNOHANG */
50
51/* More Posix P1003.1 definitions. In the POSIX versions, the parameter is
52 passed as an `int', in the non-POSIX version, as `union wait'. */
53#if defined (_POSIX_VERSION)
54
55# if !defined (WSTOPSIG)
56# define WSTOPSIG(s) ((s) >> 8)
57# endif /* !WSTOPSIG */
58
59# if !defined (WTERMSIG)
60# define WTERMSIG(s) ((s) & 0177)
61# endif /* !WTERMSIG */
62
63# if !defined (WEXITSTATUS)
64# define WEXITSTATUS(s) ((s) >> 8)
65# endif /* !WEXITSTATUS */
66
67# if !defined (WIFSTOPPED)
68# define WIFSTOPPED(s) (((s) & 0177) == 0177)
69# endif /* !WIFSTOPPED */
70
71# if !defined (WIFEXITED)
72# define WIFEXITED(s) (((s) & 0377) == 0)
73# endif /* !WIFEXITED */
74
75# if !defined (WIFSIGNALED)
76# define WIFSIGNALED(s) (!WIFSTOPPED(s) && !WIFEXITED(s))
77# endif /* !WIFSIGNALED */
78
79# if !defined (WIFCORED)
80# define WIFCORED(s) ((s) & 0200)
81# endif /* !WIFCORED */
82
83#else /* !_POSIX_VERSION */
84
85# if !defined (WSTOPSIG)
86# define WSTOPSIG(s) ((s).w_stopsig)
87# endif /* !WSTOPSIG */
88
89# if !defined (WTERMSIG)
90# define WTERMSIG(s) ((s).w_termsig)
91# endif /* !WTERMSIG */
92
93# if !defined (WEXITSTATUS)
94# define WEXITSTATUS(s) ((s).w_retcode)
95# endif /* !WEXITSTATUS */
96
97# if !defined (WIFCORED)
98# define WIFCORED(s) ((s).w_coredump)
99# endif /* !WIFCORED */
100
101#endif /* !_POSIX_VERSION */
102
103#endif /* !_POSIXWAIT_H_ */