Commit | Line | Data |
---|---|---|
ad787160 C |
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 | * | |
ed554bc5 | 33 | * @(#)compat.h 8.13 (Berkeley) 2/21/94 |
ad787160 C |
34 | */ |
35 | ||
36 | #ifndef _COMPAT_H_ | |
37 | #define _COMPAT_H_ | |
38 | ||
ed554bc5 C |
39 | #include <sys/types.h> |
40 | ||
ad787160 C |
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 | |
ed554bc5 C |
46 | typedef unsigned char u_char; /* 4.[34]BSD names. */ |
47 | typedef unsigned int u_int; | |
ad787160 C |
48 | typedef unsigned long u_long; |
49 | typedef unsigned short u_short; | |
ad787160 C |
50 | #endif |
51 | ||
52 | /* If your system doesn't typedef size_t, change the 0 to a 1. */ | |
53 | #if 0 | |
ed554bc5 C |
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. */ | |
ad787160 C |
60 | #endif |
61 | ||
ad787160 C |
62 | /* |
63 | * If your system doesn't have the POSIX type for a signal mask, | |
64 | * change the 0 to a 1. | |
65 | */ | |
ed554bc5 | 66 | #if 0 /* POSIX 1003.1 signal mask type. */ |
ad787160 C |
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 | */ | |
ed554bc5 C |
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) | |
ad787160 | 90 | |
ed554bc5 C |
91 | #define SIG_BLOCK 1 |
92 | #define SIG_UNBLOCK 2 | |
93 | #define SIG_SETMASK 3 | |
ad787160 C |
94 | |
95 | static int __sigtemp; /* For the use of sigprocmask */ | |
96 | ||
ed554bc5 C |
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) | |
ad787160 C |
108 | #endif |
109 | ||
ad787160 C |
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 | |
ed554bc5 C |
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. */ | |
ad787160 C |
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 | #define memmove(a, b, n) bcopy(b, a, n) | |
133 | #endif | |
134 | ||
135 | /* | |
136 | * 32-bit machine. The db routines are theoretically independent of | |
137 | * the size of u_shorts and u_longs, but I don't know that anyone has | |
138 | * ever actually tried it. At a minimum, change the following #define's | |
139 | * if you are trying to compile on a different type of system. | |
140 | */ | |
141 | #ifndef USHRT_MAX | |
142 | #define USHRT_MAX 0xFFFF | |
143 | #define ULONG_MAX 0xFFFFFFFF | |
144 | #endif | |
145 | ||
ed554bc5 | 146 | #ifndef O_ACCMODE /* POSIX 1003.1 access mode mask. */ |
ad787160 C |
147 | #define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR) |
148 | #endif | |
149 | ||
ed554bc5 | 150 | #ifndef _POSIX2_RE_DUP_MAX /* POSIX 1003.2 RE limit. */ |
ad787160 C |
151 | #define _POSIX2_RE_DUP_MAX 255 |
152 | #endif | |
153 | ||
154 | /* | |
155 | * If you can't provide lock values in the open(2) call. Note, this | |
156 | * allows races to happen. | |
157 | */ | |
ed554bc5 | 158 | #ifndef O_EXLOCK /* 4.4BSD extension. */ |
ad787160 C |
159 | #define O_EXLOCK 0 |
160 | #endif | |
161 | ||
ed554bc5 | 162 | #ifndef O_SHLOCK /* 4.4BSD extension. */ |
ad787160 C |
163 | #define O_SHLOCK 0 |
164 | #endif | |
165 | ||
166 | #ifndef EFTYPE | |
167 | #define EFTYPE EINVAL /* POSIX 1003.1 format errno. */ | |
168 | #endif | |
169 | ||
170 | #ifndef WCOREDUMP /* 4.4BSD extension */ | |
171 | #define WCOREDUMP(a) 0 | |
172 | #endif | |
173 | ||
174 | #ifndef STDERR_FILENO | |
175 | #define STDIN_FILENO 0 /* ANSI C #defines */ | |
176 | #define STDOUT_FILENO 1 | |
177 | #define STDERR_FILENO 2 | |
178 | #endif | |
179 | ||
180 | #ifndef SEEK_END | |
181 | #define SEEK_SET 0 /* POSIX 1003.1 seek values */ | |
182 | #define SEEK_CUR 1 | |
183 | #define SEEK_END 2 | |
184 | #endif | |
185 | ||
ed554bc5 C |
186 | #ifndef _POSIX_VDISABLE /* POSIX 1003.1 disabling char. */ |
187 | #define _POSIX_VDISABLE 0 /* Some systems used 0. */ | |
188 | #endif | |
189 | ||
ed554bc5 C |
190 | #ifndef TCSASOFT /* 4.4BSD extension. */ |
191 | #define TCSASOFT 0 | |
ad787160 C |
192 | #endif |
193 | ||
ed554bc5 | 194 | #ifndef _POSIX2_RE_DUP_MAX /* POSIX 1003.2 values. */ |
ad787160 C |
195 | #define _POSIX2_RE_DUP_MAX 255 |
196 | #endif | |
197 | ||
198 | #ifndef NULL /* ANSI C #defines NULL everywhere. */ | |
199 | #define NULL 0 | |
200 | #endif | |
201 | ||
ed554bc5 | 202 | #ifndef MAX /* Usually found in <sys/param.h>. */ |
ad787160 C |
203 | #define MAX(_a,_b) ((_a)<(_b)?(_b):(_a)) |
204 | #endif | |
ed554bc5 | 205 | #ifndef MIN /* Usually found in <sys/param.h>. */ |
ad787160 C |
206 | #define MIN(_a,_b) ((_a)<(_b)?(_a):(_b)) |
207 | #endif | |
208 | ||
ed554bc5 C |
209 | /* Default file permissions. */ |
210 | #ifndef DEFFILEMODE /* 4.4BSD extension. */ | |
211 | #define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH) | |
212 | #endif | |
213 | ||
214 | #ifndef S_ISDIR /* POSIX 1003.1 file type tests. */ | |
215 | #define S_ISDIR(m) ((m & 0170000) == 0040000) /* directory */ | |
216 | #define S_ISCHR(m) ((m & 0170000) == 0020000) /* char special */ | |
217 | #define S_ISBLK(m) ((m & 0170000) == 0060000) /* block special */ | |
218 | #define S_ISREG(m) ((m & 0170000) == 0100000) /* regular file */ | |
219 | #define S_ISFIFO(m) ((m & 0170000) == 0010000) /* fifo */ | |
ed554bc5 | 220 | #endif |
fd88f5c5 | 221 | #ifndef S_ISLNK /* BSD POSIX 1003.1 extensions */ |
ed554bc5 C |
222 | #define S_ISLNK(m) ((m & 0170000) == 0120000) /* symbolic link */ |
223 | #define S_ISSOCK(m) ((m & 0170000) == 0140000) /* socket */ | |
224 | #endif | |
225 | ||
226 | /* The type of a va_list. */ | |
227 | #ifndef _BSD_VA_LIST_ /* 4.4BSD #define. */ | |
ad787160 C |
228 | #define _BSD_VA_LIST_ char * |
229 | #endif | |
230 | ||
231 | #endif /* !_COMPAT_H_ */ |