MFC: An off-by-one malloc size was corrupting the installer's memory,
[dragonfly.git] / contrib / tcsh-6 / tc.wait.h
blob4bda506ef9a1eb42f7b9f34a36288d0a87c2b463
1 /* $Header: /p/tcsh/cvsroot/tcsh/tc.wait.h,v 3.14 2004/12/25 21:15:08 christos Exp $ */
2 /*
3 * tc.wait.h: <sys/wait.h> for machines that don't have it or have it and
4 * is incorrect.
5 */
6 /*-
7 * Copyright (c) 1980, 1991 The Regents of the University of California.
8 * All rights reserved.
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:
13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution.
18 * 3. Neither the name of the University nor the names of its contributors
19 * may be used to endorse or promote products derived from this software
20 * without specific prior written permission.
22 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 * SUCH DAMAGE.
34 #ifndef _h_tc_wait
35 #define _h_tc_wait
38 * a little complicated #include <sys/wait.h>! :-(
39 * We try to use the system's wait.h when we can...
42 #if SYSVREL > 0 && !defined(linux) && !defined(__GNU__) && !defined(__GLIBC__)
43 # ifdef hpux
44 # ifndef __hpux
45 # define NEEDwait
46 # else
47 # ifndef POSIX
48 # define _BSD
49 # endif
50 # ifndef _CLASSIC_POSIX_TYPES
51 # define _CLASSIC_POSIX_TYPES
52 # endif
53 # include <sys/wait.h> /* 7.0 fixed it again */
54 # endif /* __hpux */
55 # else /* hpux */
56 # if (defined(OREO) || defined(IRIS4D) || defined(POSIX)) && !defined(_VMS_POSIX)
57 # include <sys/wait.h>
58 # else /* OREO || IRIS4D || POSIX */
59 # define NEEDwait
60 # endif /* OREO || IRIS4D || POSIX */
61 # endif /* hpux */
62 #else /* SYSVREL == 0 || glibc */
63 # ifdef _MINIX
64 # undef NEEDwait
65 # include "mi.wait.h"
66 # else
67 # ifndef WINNT_NATIVE
68 # include <sys/wait.h>
69 # endif /* WINNT_NATIVE */
70 # endif /* _MINIX */
71 #endif /* SYSVREL == 0 || glibc */
73 #ifdef NEEDwait
75 * This wait is for big-endians and little endians
77 union wait {
78 int w_status;
79 # ifdef _SEQUENT_
80 struct {
81 unsigned short w_Termsig:7;
82 unsigned short w_Coredump:1;
83 unsigned short w_Retcode:8;
84 } w_T;
85 struct {
86 unsigned short w_Stopval:8;
87 unsigned short w_Stopsig:8;
88 } w_S;
91 # define w_termsig w_T.w_Termsig
92 # define w_coredump w_T.w_Coredump
93 # define w_retcode w_T.w_Retcode
94 # define w_stopval w_S.w_Stopval
95 # define w_stopsig w_S.w_Stopsig
96 # else /* _SEQUENT_ */
97 # if defined(vax) || defined(__vax__) || defined(i386) || defined(_I386) || defined(__i386__)
98 union {
99 struct {
100 unsigned int w_Termsig:7;
101 unsigned int w_Coredump:1;
102 unsigned int w_Retcode:8;
103 unsigned int w_Dummy:16;
104 } w_T;
105 struct {
106 unsigned int w_Stopval:8;
107 unsigned int w_Stopsig:8;
108 unsigned int w_Dummy:16;
109 } w_S;
110 } w_P;
111 # else /* mc68000 || sparc || ??? */
112 # if defined(_CRAY) || defined(ANY_OTHER_64BIT_MACHINE)
113 # define DUMMY_BITS 48
114 # else /* _CRAY */
115 # define DUMMY_BITS 16
116 # endif /* _CRAY */
117 union {
118 struct {
119 unsigned int w_Dummy:DUMMY_BITS;
120 unsigned int w_Retcode:8;
121 unsigned int w_Coredump:1;
122 unsigned int w_Termsig:7;
123 } w_T;
124 struct {
125 unsigned int w_Dummy:DUMMY_BITS;
126 unsigned int w_Stopsig:8;
127 unsigned int w_Stopval:8;
128 } w_S;
129 } w_P;
130 # endif /* vax || __vax__ || i386 || _I386 || __i386__ */
133 # define w_termsig w_P.w_T.w_Termsig
134 # define w_coredump w_P.w_T.w_Coredump
135 # define w_retcode w_P.w_T.w_Retcode
136 # define w_stopval w_P.w_S.w_Stopval
137 # define w_stopsig w_P.w_S.w_Stopsig
138 # endif /* _SEQUENT_ */
141 # ifndef WNOHANG
142 # define WNOHANG 1 /* dont hang in wait */
143 # endif
145 # ifndef WUNTRACED
146 # define WUNTRACED 2 /* tell about stopped, untraced children */
147 # endif
149 # define WSTOPPED 0177
150 # define WIFSTOPPED(x) ((x).w_stopval == WSTOPPED)
151 # define WIFSIGNALED(x) (((x).w_stopval != WSTOPPED) && ((x).w_termsig != 0))
153 #endif /* NEEDwait */
155 #endif /* _h_tc_wait */