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 7 Bash is free software; you can redistribute it and/or modify it under 8 the terms of the GNU General Public License as published by the Free 9 Software Foundation; either version 2, or (at your option) any later 10 version. 11 12 Bash is distributed in the hope that it will be useful, but WITHOUT ANY 13 WARRANTY; without even the implied warranty of MERCHANTABILITY or 14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 15 for more details. 16 17 You should have received a copy of the GNU General Public License along 18 with Bash; see the file COPYING. If not, write to the Free Software 19 Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ 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_ */ 104