]>
Commit | Line | Data |
---|---|---|
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) | |
38 | typedef union wait WAIT; | |
39 | # define WSTATUS(t) (t.w_status) | |
40 | #else /* _POSIX_VERSION */ | |
41 | typedef 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_ */ |