1 | /*- |
2 | * Copyright (c) 1991, 1993 |
3 | * The Regents of the University of California. All rights reserved. |
4 | * |
5 | * Redistribution and use in source and binary forms, with or without |
6 | * modification, are permitted provided that the following conditions |
7 | * are met: |
8 | * 1. Redistributions of source code must retain the above copyright |
9 | * notice, this list of conditions and the following disclaimer. |
10 | * 2. Redistributions in binary form must reproduce the above copyright |
11 | * notice, this list of conditions and the following disclaimer in the |
12 | * documentation and/or other materials provided with the distribution. |
13 | * 3. All advertising materials mentioning features or use of this software |
14 | * must display the following acknowledgement: |
15 | * This product includes software developed by the University of |
16 | * California, Berkeley and its contributors. |
17 | * 4. Neither the name of the University nor the names of its contributors |
18 | * may be used to endorse or promote products derived from this software |
19 | * without specific prior written permission. |
20 | * |
21 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
22 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
23 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
24 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
25 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
26 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
27 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
28 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
29 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
30 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
31 | * SUCH DAMAGE. |
32 | * |
33 | * @(#)compat.h 8.13 (Berkeley) 2/21/94 |
34 | */ |
35 | |
36 | #ifndef _COMPAT_H_ |
37 | #define _COMPAT_H_ |
38 | |
39 | #include <sys/types.h> |
40 | |
41 | /* |
42 | * If your system doesn't typedef u_long, u_short, or u_char, change |
43 | * the 0 to a 1. |
44 | */ |
45 | #if 0 |
46 | typedef unsigned char u_char; /* 4.[34]BSD names. */ |
47 | typedef unsigned int u_int; |
48 | typedef unsigned long u_long; |
49 | typedef unsigned short u_short; |
50 | #endif |
51 | |
52 | /* If your system doesn't typedef size_t, change the 0 to a 1. */ |
53 | #if 0 |
54 | typedef unsigned int size_t; /* POSIX, 4.[34]BSD names. */ |
55 | #endif |
56 | |
57 | /* If your system doesn't typedef ssize_t, change the 0 to a 1. */ |
58 | #if 0 |
59 | typedef int ssize_t; /* POSIX names. */ |
60 | #endif |
61 | |
62 | /* |
63 | * If your system doesn't have the POSIX type for a signal mask, |
64 | * change the 0 to a 1. |
65 | */ |
66 | #if 0 /* POSIX 1003.1 signal mask type. */ |
67 | typedef unsigned int sigset_t; |
68 | #endif |
69 | |
70 | /* |
71 | * If your system's vsprintf returns a char *, not an int, |
72 | * change the 0 to a 1. |
73 | */ |
74 | #if 0 |
75 | #define VSPRINTF_CHARSTAR |
76 | #endif |
77 | |
78 | /* |
79 | * If you don't have POSIX 1003.1 signals, the signal code surrounding the |
80 | * temporary file creation is intended to block all of the possible signals |
81 | * long enough to create the file and unlink it. All of this stuff is |
82 | * intended to use old-style BSD calls to fake POSIX 1003.1 calls. |
83 | */ |
84 | #ifdef NO_POSIX_SIGNALS |
85 | #define sigemptyset(set) (*(set) = 0) |
86 | #define sigfillset(set) (*(set) = ~(sigset_t)0, 0) |
87 | #define sigaddset(set,signo) (*(set) |= sigmask(signo), 0) |
88 | #define sigdelset(set,signo) (*(set) &= ~sigmask(signo), 0) |
89 | #define sigismember(set,signo) ((*(set) & sigmask(signo)) != 0) |
90 | |
91 | #define SIG_BLOCK 1 |
92 | #define SIG_UNBLOCK 2 |
93 | #define SIG_SETMASK 3 |
94 | |
95 | static int __sigtemp; /* For the use of sigprocmask */ |
96 | |
97 | /* Repeated test of oset != NULL is to avoid "*0". */ |
98 | #define sigprocmask(how, set, oset) \ |
99 | ((__sigtemp = \ |
100 | (((how) == SIG_BLOCK) ? \ |
101 | sigblock(0) | *(set) : \ |
102 | (((how) == SIG_UNBLOCK) ? \ |
103 | sigblock(0) & ~(*(set)) : \ |
104 | ((how) == SIG_SETMASK ? \ |
105 | *(set) : sigblock(0))))), \ |
106 | ((oset) ? (*(oset ? oset : set) = sigsetmask(__sigtemp)) : \ |
107 | sigsetmask(__sigtemp)), 0) |
108 | #endif |
109 | |
110 | /* |
111 | * If your system doesn't have an include file with the appropriate |
112 | * byte order set, make sure you specify the correct one. |
113 | */ |
114 | #ifndef BYTE_ORDER |
115 | #define LITTLE_ENDIAN 1234 /* LSB first: i386, vax */ |
116 | #define BIG_ENDIAN 4321 /* MSB first: 68000, ibm, net */ |
117 | #define BYTE_ORDER BIG_ENDIAN /* Set for your system. */ |
118 | #endif |
119 | |
120 | #if defined(SYSV) || defined(SYSTEM5) |
121 | #define index(a, b) strchr(a, b) |
122 | #define rindex(a, b) strrchr(a, b) |
123 | #define bzero(a, b) memset(a, 0, b) |
124 | #define bcmp(a, b, n) memcmp(a, b, n) |
125 | #define bcopy(a, b, n) memmove(b, a, n) |
126 | #endif |
127 | |
128 | #if defined(BSD) || defined(BSD4_3) |
129 | #define strchr(a, b) index(a, b) |
130 | #define strrchr(a, b) rindex(a, b) |
131 | #define memcmp(a, b, n) bcmp(a, b, n) |
132 | #ifndef memmove |
133 | #define memmove(a, b, n) bcopy(b, a, n) |
134 | #endif |
135 | #endif |
136 | |
137 | /* |
138 | * 32-bit machine. The db routines are theoretically independent of |
139 | * the size of u_shorts and u_longs, but I don't know that anyone has |
140 | * ever actually tried it. At a minimum, change the following #define's |
141 | * if you are trying to compile on a different type of system. |
142 | */ |
143 | #ifndef USHRT_MAX |
144 | #define USHRT_MAX 0xFFFF |
145 | #define ULONG_MAX 0xFFFFFFFF |
146 | #endif |
147 | |
148 | #ifndef O_ACCMODE /* POSIX 1003.1 access mode mask. */ |
149 | #define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR) |
150 | #endif |
151 | |
152 | #ifndef _POSIX2_RE_DUP_MAX /* POSIX 1003.2 RE limit. */ |
153 | #define _POSIX2_RE_DUP_MAX 255 |
154 | #endif |
155 | |
156 | /* |
157 | * If you can't provide lock values in the open(2) call. Note, this |
158 | * allows races to happen. |
159 | */ |
160 | #ifndef O_EXLOCK /* 4.4BSD extension. */ |
161 | #define O_EXLOCK 0 |
162 | #endif |
163 | |
164 | #ifndef O_SHLOCK /* 4.4BSD extension. */ |
165 | #define O_SHLOCK 0 |
166 | #endif |
167 | |
168 | #ifndef EFTYPE |
169 | #define EFTYPE EINVAL /* POSIX 1003.1 format errno. */ |
170 | #endif |
171 | |
172 | #ifndef WCOREDUMP /* 4.4BSD extension */ |
173 | #define WCOREDUMP(a) 0 |
174 | #endif |
175 | |
176 | #ifndef STDERR_FILENO |
177 | #define STDIN_FILENO 0 /* ANSI C #defines */ |
178 | #define STDOUT_FILENO 1 |
179 | #define STDERR_FILENO 2 |
180 | #endif |
181 | |
182 | #ifndef SEEK_END |
183 | #define SEEK_SET 0 /* POSIX 1003.1 seek values */ |
184 | #define SEEK_CUR 1 |
185 | #define SEEK_END 2 |
186 | #endif |
187 | |
188 | #ifndef _POSIX_VDISABLE /* POSIX 1003.1 disabling char. */ |
189 | #define _POSIX_VDISABLE 0 /* Some systems used 0. */ |
190 | #endif |
191 | |
192 | #ifndef TCSASOFT /* 4.4BSD extension. */ |
193 | #define TCSASOFT 0 |
194 | #endif |
195 | |
196 | #ifndef _POSIX2_RE_DUP_MAX /* POSIX 1003.2 values. */ |
197 | #define _POSIX2_RE_DUP_MAX 255 |
198 | #endif |
199 | |
200 | #ifndef NULL /* ANSI C #defines NULL everywhere. */ |
201 | #define NULL 0 |
202 | #endif |
203 | |
204 | #ifndef MAX /* Usually found in <sys/param.h>. */ |
205 | #define MAX(_a,_b) ((_a)<(_b)?(_b):(_a)) |
206 | #endif |
207 | #ifndef MIN /* Usually found in <sys/param.h>. */ |
208 | #define MIN(_a,_b) ((_a)<(_b)?(_a):(_b)) |
209 | #endif |
210 | |
211 | /* Default file permissions. */ |
212 | #ifndef DEFFILEMODE /* 4.4BSD extension. */ |
213 | #define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH) |
214 | #endif |
215 | |
216 | #ifndef S_ISDIR /* POSIX 1003.1 file type tests. */ |
217 | #define S_ISDIR(m) ((m & 0170000) == 0040000) /* directory */ |
218 | #define S_ISCHR(m) ((m & 0170000) == 0020000) /* char special */ |
219 | #define S_ISBLK(m) ((m & 0170000) == 0060000) /* block special */ |
220 | #define S_ISREG(m) ((m & 0170000) == 0100000) /* regular file */ |
221 | #define S_ISFIFO(m) ((m & 0170000) == 0010000) /* fifo */ |
222 | #endif |
223 | #ifndef S_ISLNK /* BSD POSIX 1003.1 extensions */ |
224 | #define S_ISLNK(m) ((m & 0170000) == 0120000) /* symbolic link */ |
225 | #define S_ISSOCK(m) ((m & 0170000) == 0140000) /* socket */ |
226 | #endif |
227 | |
228 | /* The type of a va_list. */ |
229 | #ifndef _BSD_VA_LIST_ /* 4.4BSD #define. */ |
230 | #define _BSD_VA_LIST_ char * |
231 | #endif |
232 | |
233 | #endif /* !_COMPAT_H_ */ |
234 | |