Commit | Line | Data |
---|---|---|
5a739feb | 1 | /* |
792e6158 | 2 | * Copyright (c) 1983, 1995 Eric P. Allman |
31de980b KB |
3 | * Copyright (c) 1988, 1993 |
4 | * The Regents of the University of California. All rights reserved. | |
bee79b64 | 5 | * |
417f7a11 | 6 | * %sccs.include.redist.c% |
bee79b64 | 7 | * |
1618911b | 8 | * @(#)conf.h 8.192 (Berkeley) %G% |
bee79b64 | 9 | */ |
aeb2545d DF |
10 | |
11 | /* | |
12 | ** CONF.H -- All user-configurable parameters for sendmail | |
d947d433 EA |
13 | ** |
14 | ** Send updates to sendmail@CS.Berkeley.EDU so they will be | |
15 | ** included in the next release. | |
5a739feb EA |
16 | */ |
17 | ||
bdf2e9ed EA |
18 | struct rusage; /* forward declaration to get gcc to shut up in wait.h */ |
19 | ||
f43b04ce | 20 | # include <sys/param.h> |
82530719 | 21 | # include <sys/types.h> |
46300693 | 22 | # include <sys/stat.h> |
c2edb205 | 23 | # include <sys/file.h> |
0349f8cc | 24 | # include <sys/wait.h> |
f8a31c8e | 25 | # include <fcntl.h> |
39270cfd | 26 | # include <signal.h> |
5b7a2dfe EA |
27 | # include <netdb.h> |
28 | # include <pwd.h> | |
f43b04ce | 29 | |
ba6514e2 | 30 | /********************************************************************** |
5a739feb EA |
31 | ** Table sizes, etc.... |
32 | ** There shouldn't be much need to change these.... | |
ba6514e2 | 33 | **********************************************************************/ |
5a739feb | 34 | |
d36f8e5c | 35 | # define MAXLINE 2048 /* max line length */ |
f0a960f1 | 36 | # define MAXNAME 256 /* max length of a name */ |
5a739feb | 37 | # define MAXPV 40 /* max # of parms to mailers */ |
d36f8e5c | 38 | # define MAXATOM 200 /* max atoms per address */ |
5a739feb | 39 | # define MAXMAILERS 25 /* maximum mailers known to system */ |
91e25a39 | 40 | # define MAXRWSETS 200 /* max # of sets of rewriting rules */ |
5a739feb | 41 | # define MAXPRIORITIES 25 /* max values for Precedence: field */ |
8583ab39 | 42 | # define MAXMXHOSTS 20 /* max # of MX records */ |
8657d05f | 43 | # define SMTPLINELIM 990 /* maximum SMTP line length */ |
f43b04ce EA |
44 | # define MAXKEY 128 /* maximum size of a database key */ |
45 | # define MEMCHUNKSIZE 1024 /* chunk size for memory allocation */ | |
b0b636d1 | 46 | # define MAXUSERENVIRON 100 /* max envars saved, must be >= 3 */ |
9f7134c8 | 47 | # define MAXALIASDB 12 /* max # of alias databases */ |
3b2e4211 EA |
48 | # define MAXMAPSTACK 12 /* max # of stacked or sequenced maps */ |
49 | # define MAXTOCLASS 8 /* max # of message timeout classes */ | |
022362dd EA |
50 | # define MAXMIMEARGS 20 /* max args in Content-Type: */ |
51 | # define MAXMIMENESTING 20 /* max MIME multipart nesting */ | |
8a6b1962 | 52 | # define QUEUESEGSIZE 1000 /* increment for queue size */ |
8583ab39 | 53 | |
ba6514e2 | 54 | /********************************************************************** |
5a739feb | 55 | ** Compilation options. |
efe7f723 EA |
56 | ** #define these to 1 if they are available; |
57 | ** #define them to 0 otherwise. | |
a40faef5 | 58 | ** All can be overridden from Makefile. |
efe7f723 EA |
59 | **********************************************************************/ |
60 | ||
a40faef5 EA |
61 | # ifndef NETINET |
62 | # define NETINET 1 /* include internet support */ | |
63 | # endif | |
64 | ||
efe7f723 EA |
65 | # ifndef NAMED_BIND |
66 | # define NAMED_BIND 1 /* use Berkeley Internet Domain Server */ | |
67 | # endif | |
68 | ||
a40faef5 EA |
69 | # ifndef XDEBUG |
70 | # define XDEBUG 1 /* enable extended debugging */ | |
71 | # endif | |
72 | ||
73 | # ifndef MATCHGECOS | |
74 | # define MATCHGECOS 1 /* match user names from gecos field */ | |
75 | # endif | |
76 | ||
15a87016 EA |
77 | # ifndef DSN |
78 | # define DSN 1 /* include delivery status notification code */ | |
79 | # endif | |
80 | ||
a40faef5 EA |
81 | # if !defined(USERDB) && (defined(NEWDB) || defined(HESIOD)) |
82 | # define USERDB 1 /* look in user database */ | |
83 | # endif | |
84 | ||
8bc4f1c6 EA |
85 | # ifndef MIME8TO7 |
86 | # define MIME8TO7 1 /* 8->7 bit MIME conversions */ | |
87 | # endif | |
88 | ||
89 | # ifndef MIME7TO8 | |
90 | # define MIME7TO8 1 /* 7->8 bit MIME conversions */ | |
91 | # endif | |
92 | ||
a40faef5 EA |
93 | /********************************************************************** |
94 | ** "Hard" compilation options. | |
95 | ** #define these if they are available; comment them out otherwise. | |
96 | ** These cannot be overridden from the Makefile, and should really not | |
97 | ** be turned off unless absolutely necessary. | |
98 | **********************************************************************/ | |
fce21cb9 | 99 | |
a40faef5 | 100 | # define LOG /* enable logging -- don't turn off */ |
fce21cb9 | 101 | |
a40faef5 EA |
102 | /********************************************************************** |
103 | ** End of site-specific configuration. | |
104 | **********************************************************************/ | |
105 | \f/* | |
c6bd47b4 EA |
106 | ** General "standard C" defines. |
107 | ** | |
108 | ** These may be undone later, to cope with systems that claim to | |
109 | ** be Standard C but aren't. Gcc is the biggest offender -- it | |
110 | ** doesn't realize that the library is part of the language. | |
111 | ** | |
112 | ** Life would be much easier if we could get rid of this sort | |
113 | ** of bozo problems. | |
114 | */ | |
115 | ||
116 | #ifdef __STDC__ | |
117 | # define HASSETVBUF 1 /* we have setvbuf(3) in libc */ | |
118 | #endif | |
a40faef5 EA |
119 | |
120 | /* | |
121 | ** Assume you have standard calls; can be #undefed below if necessary. | |
122 | */ | |
123 | ||
124 | # define HASLSTAT 1 /* has lstat(2) call */ | |
d947d433 | 125 | \f/********************************************************************** |
e6245c7e EA |
126 | ** Operating system configuration. |
127 | ** | |
128 | ** Unless you are porting to a new OS, you shouldn't have to | |
129 | ** change these. | |
ba6514e2 | 130 | **********************************************************************/ |
5a4c03c6 | 131 | |
ba6514e2 | 132 | /* |
27a00e24 | 133 | ** HP-UX -- tested for 8.07, 9.00, and 9.01. |
4874708a EA |
134 | ** |
135 | ** If V4FS is defined, compile for HP-UX 10.0. | |
ba6514e2 EA |
136 | */ |
137 | ||
2e4c6b4f | 138 | #ifdef __hpux |
4874708a EA |
139 | /* common definitions for HP-UX 9.x and 10.x */ |
140 | # undef m_flags /* conflict between db.h & sys/sysmacros.h on HP 300 */ | |
fd57f063 | 141 | # define SYSTEM5 1 /* include all the System V defines */ |
39270cfd | 142 | # define HASINITGROUPS 1 /* has initgroups(3) call */ |
04c2baef EA |
143 | # define USESETEUID 1 /* has useable seteuid(2) call */ |
144 | # define seteuid(e) setresuid(-1, e, -1) | |
d947d433 | 145 | # define IP_SRCROUTE 1 /* can check IP source routing */ |
b5aacac9 | 146 | # define LA_TYPE LA_HPUX |
68821f30 | 147 | # define SPT_TYPE SPT_PSTAT |
5e0e0f8f | 148 | # define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() implementation */ |
60e52ca7 | 149 | # define GIDSET_T gid_t |
0379c130 EA |
150 | # ifndef HASGETUSERSHELL |
151 | # define HASGETUSERSHELL 0 /* getusershell(3) causes core dumps */ | |
152 | # endif | |
fc658fc9 | 153 | # define syslog hard_syslog |
57a13309 EA |
154 | # ifdef __STDC__ |
155 | extern void hard_syslog(int, char *, ...); | |
156 | # endif | |
4874708a EA |
157 | |
158 | # ifdef V4FS | |
159 | /* HP-UX 10.x */ | |
4e93bc5c EA |
160 | # define _PATH_UNIX "/stand/vmunix" |
161 | # define _PATH_VENDOR_CF "/etc/mail/sendmail.cf" | |
4874708a EA |
162 | # ifndef _PATH_SENDMAILPID |
163 | # define _PATH_SENDMAILPID "/etc/mail/sendmail.pid" | |
164 | # endif | |
165 | # ifndef IDENTPROTO | |
166 | # define IDENTPROTO 1 /* TCP/IP implementation fixed in 10.0 */ | |
167 | # endif | |
168 | ||
169 | # else | |
170 | /* HP-UX 9.x */ | |
4e93bc5c EA |
171 | # define _PATH_UNIX "/hp-ux" |
172 | # define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" | |
4874708a EA |
173 | # ifndef IDENTPROTO |
174 | # define IDENTPROTO 0 /* TCP/IP implementation is broken */ | |
175 | # endif | |
176 | # endif | |
177 | ||
2e4c6b4f | 178 | #endif |
273562d8 | 179 | |
2b09dd75 | 180 | |
ba6514e2 EA |
181 | /* |
182 | ** IBM AIX 3.x -- actually tested for 3.2.3 | |
183 | */ | |
184 | ||
2e4c6b4f | 185 | #ifdef _AIX3 |
f1459d51 | 186 | # include <paths.h> |
39270cfd | 187 | # define HASINITGROUPS 1 /* has initgroups(3) call */ |
485a1ac5 | 188 | # define HASUNAME 1 /* use System V uname(2) system call */ |
1ee33f7d | 189 | # define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ |
d947d433 | 190 | # define IP_SRCROUTE 0 /* Something is broken with getsockopt() */ |
9114f86c | 191 | # define FORK fork /* no vfork primitive available */ |
bdf2e9ed | 192 | # define GIDSET_T gid_t |
5e0e0f8f | 193 | # define SFS_TYPE SFS_STATFS /* use <sys/statfs.h> statfs() impl */ |
ddeafa3b | 194 | # define SPT_PADCHAR '\0' /* pad process title with nulls */ |
263da570 | 195 | # define LA_TYPE LA_INT |
f1459d51 | 196 | # define LA_AVENRUN "avenrun" |
2e4c6b4f | 197 | #endif |
8e5c6745 | 198 | |
2b09dd75 | 199 | |
ba6514e2 EA |
200 | /* |
201 | ** Silicon Graphics IRIX | |
202 | ** | |
0fc3fb21 | 203 | ** Compiles on 4.0.1. |
10589f62 | 204 | ** |
94faee41 EA |
205 | ** Use IRIX64 instead of IRIX for 64-bit IRIX (6.0). |
206 | ** Use IRIX5 instead of IRIX for IRIX 5.x. | |
10589f62 EA |
207 | ** |
208 | ** IRIX64 changes from Mark R. Levinson <ml@cvdev.rochester.edu>. | |
94faee41 | 209 | ** IRIX5 changes from Kari E. Hurtta <Kari.Hurtta@fmi.fi>. |
ba6514e2 EA |
210 | */ |
211 | ||
94faee41 | 212 | #if defined(IRIX64) || defined(IRIX5) |
10589f62 EA |
213 | # define IRIX |
214 | #endif | |
215 | ||
2e4c6b4f | 216 | #ifdef IRIX |
f369a70b | 217 | # define SYSTEM5 1 /* this is a System-V derived system */ |
39270cfd EA |
218 | # define HASSETREUID 1 /* has setreuid(2) call */ |
219 | # define HASINITGROUPS 1 /* has initgroups(3) call */ | |
1ee33f7d | 220 | # define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ |
d947d433 | 221 | # define IP_SRCROUTE 1 /* can check IP source routing */ |
8e5c6745 | 222 | # define FORK fork /* no vfork primitive available */ |
0d2faefc | 223 | # define setpgid BSDsetpgrp |
e6cb9fc4 | 224 | # define GIDSET_T gid_t |
5e0e0f8f | 225 | # define SFS_TYPE SFS_4ARGS /* four argument statfs() call */ |
b2b48b69 | 226 | # define SFS_BAVAIL f_bfree /* alternate field name */ |
f369a70b | 227 | # define LA_TYPE LA_INT |
10589f62 EA |
228 | # ifdef IRIX64 |
229 | # define NAMELISTMASK 0x7fffffffffffffff /* mask for nlist() values */ | |
230 | # else | |
231 | # define NAMELISTMASK 0x7fffffff /* mask for nlist() values */ | |
232 | # endif | |
3f896c04 EA |
233 | # if defined(IRIX64) || defined(IRIX5) |
234 | # define ARGV_T char *const * | |
a11d11ef | 235 | # define HASSETRLIMIT 1 /* has setrlimit(2) syscall */ |
3f896c04 EA |
236 | # else |
237 | # define ARGV_T const char ** | |
238 | # define WAITUNION 1 /* use "union wait" as wait argument type */ | |
239 | # endif | |
2e4c6b4f | 240 | #endif |
9114f86c | 241 | |
ba6514e2 EA |
242 | |
243 | /* | |
8988dfd3 EA |
244 | ** SunOS and Solaris |
245 | ** | |
246 | ** Tested on SunOS 4.1.x (a.k.a. Solaris 1.1.x) and | |
04c2baef | 247 | ** Solaris 2.4 (a.k.a. SunOS 5.4). |
ba6514e2 EA |
248 | */ |
249 | ||
45f49b73 | 250 | #if defined(sun) && !defined(BSD) |
fd57f063 | 251 | |
39270cfd | 252 | # define HASINITGROUPS 1 /* has initgroups(3) call */ |
8988dfd3 | 253 | # define HASUNAME 1 /* use System V uname(2) system call */ |
1ee33f7d | 254 | # define HASGETUSERSHELL 1 /* DOES have getusershell(3) call in libc */ |
d947d433 | 255 | # define IP_SRCROUTE 1 /* can check IP source routing */ |
5e0e0f8f | 256 | # define LA_TYPE LA_INT |
45f49b73 | 257 | |
d4125001 | 258 | # ifdef SOLARIS_2_3 |
67439414 | 259 | # define SOLARIS 203 /* for back compat only -- use -DSOLARIS=203 */ |
d4125001 EA |
260 | # endif |
261 | ||
7b3820ed | 262 | # ifdef SOLARIS |
ba6514e2 | 263 | /* Solaris 2.x (a.k.a. SunOS 5.x) */ |
0554a095 EA |
264 | # ifndef __svr4__ |
265 | # define __svr4__ /* use all System V Releae 4 defines below */ | |
266 | # endif | |
fd57f063 | 267 | # include <sys/time.h> |
d7a2e485 | 268 | # define GIDSET_T gid_t |
f361504a | 269 | # ifndef _PATH_UNIX |
4e93bc5c | 270 | # define _PATH_UNIX "/dev/ksyms" |
0f786d57 | 271 | # endif |
4e93bc5c | 272 | # define _PATH_VENDOR_CF "/etc/mail/sendmail.cf" |
0f786d57 | 273 | # ifndef _PATH_SENDMAILPID |
33d59d37 EA |
274 | # define _PATH_SENDMAILPID "/etc/mail/sendmail.pid" |
275 | # endif | |
f0416b32 EA |
276 | # ifndef _PATH_HOSTS |
277 | # define _PATH_HOSTS "/etc/inet/hosts" | |
278 | # endif | |
71aecf7c EA |
279 | # ifndef SYSLOG_BUFSIZE |
280 | # define SYSLOG_BUFSIZE 1024 /* allow full size syslog buffer */ | |
281 | # endif | |
fd57f063 | 282 | |
7b3820ed | 283 | # else |
e9abaf1a | 284 | /* SunOS 4.0.3 or 4.1.x */ |
f361504a | 285 | # define HASSETREUID 1 /* has setreuid(2) call */ |
72af7ebb EA |
286 | # ifndef HASFLOCK |
287 | # define HASFLOCK 1 /* has flock(2) call */ | |
288 | # endif | |
5e0e0f8f | 289 | # define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() implementation */ |
45f49b73 | 290 | # include <vfork.h> |
45f49b73 | 291 | |
e9abaf1a EA |
292 | # ifdef SUNOS403 |
293 | /* special tweaking for SunOS 4.0.3 */ | |
294 | # include <malloc.h> | |
295 | # define SYS5SIGNALS 1 /* SysV signal semantics -- reset on each sig */ | |
2fca0e18 | 296 | # define NEEDSTRSTR 1 /* need emulation of strstr(3) routine */ |
e9abaf1a EA |
297 | # define WAITUNION 1 /* use "union wait" as wait argument type */ |
298 | # undef WIFEXITED | |
299 | # undef WEXITSTATUS | |
300 | # undef HASUNAME | |
301 | # define setpgid setpgrp | |
302 | typedef int pid_t; | |
303 | extern char *getenv(); | |
304 | ||
d0812b5a EA |
305 | # else |
306 | /* 4.1.x specifics */ | |
307 | # define HASSETSID 1 /* has Posix setsid(2) call */ | |
308 | # define HASSETVBUF 1 /* we have setvbuf(3) in libc */ | |
309 | ||
e9abaf1a | 310 | # endif |
fd57f063 | 311 | # endif |
45f49b73 EA |
312 | #endif |
313 | ||
fe3849ea | 314 | /* |
8988dfd3 EA |
315 | ** DG/UX |
316 | ** | |
810a6265 EA |
317 | ** Tested on 5.4.2 and 5.4.3. Use DGUX_5_4_2 to get the |
318 | ** older support. | |
319 | ** 5.4.3 changes from Mark T. Robinson <mtr@ornl.gov>. | |
fe3849ea EA |
320 | */ |
321 | ||
810a6265 EA |
322 | #ifdef DGUX_5_4_2 |
323 | # define DGUX 1 | |
324 | #endif | |
325 | ||
fe3849ea EA |
326 | #ifdef DGUX |
327 | # define SYSTEM5 1 | |
b5aacac9 | 328 | # define LA_TYPE LA_DGUX |
fe3849ea EA |
329 | # define HASSETREUID 1 /* has setreuid(2) call */ |
330 | # define HASUNAME 1 /* use System V uname(2) system call */ | |
331 | # define HASSETSID 1 /* has Posix setsid(2) call */ | |
332 | # define HASINITGROUPS 1 /* has initgroups(3) call */ | |
1618911b | 333 | # define IP_SRCROUTE 0 /* does not have <netinet/ip_var.h> */ |
e1ab99fe | 334 | # define HASGETUSERSHELL 0 /* does not have getusershell(3) */ |
a74fd615 EA |
335 | # ifndef IDENTPROTO |
336 | # define IDENTPROTO 0 /* TCP/IP implementation is broken */ | |
337 | # endif | |
ddeafa3b | 338 | # define SPT_TYPE SPT_NONE /* don't use setproctitle */ |
5e0e0f8f | 339 | # define SFS_TYPE SFS_4ARGS /* four argument statfs() call */ |
8988dfd3 EA |
340 | |
341 | /* these include files must be included early on DG/UX */ | |
342 | # include <netinet/in.h> | |
343 | # include <arpa/inet.h> | |
344 | ||
1618911b EA |
345 | /* compiler doesn't understand const? */ |
346 | # define const | |
347 | ||
810a6265 EA |
348 | # ifdef DGUX_5_4_2 |
349 | # define inet_addr dgux_inet_addr | |
fe3849ea | 350 | extern long dgux_inet_addr(); |
810a6265 | 351 | # endif |
fe3849ea EA |
352 | #endif |
353 | ||
2b09dd75 | 354 | |
ba6514e2 EA |
355 | /* |
356 | ** Digital Ultrix 4.2A or 4.3 | |
9cea9407 EA |
357 | ** |
358 | ** Apparently, fcntl locking is broken on 4.2A, in that locks are | |
359 | ** not dropped when the process exits. This causes major problems, | |
360 | ** so flock is the only alternative. | |
ba6514e2 EA |
361 | */ |
362 | ||
45f49b73 | 363 | #ifdef ultrix |
39270cfd | 364 | # define HASSETREUID 1 /* has setreuid(2) call */ |
33d59d37 | 365 | # define HASUNSETENV 1 /* has unsetenv(3) call */ |
39270cfd | 366 | # define HASINITGROUPS 1 /* has initgroups(3) call */ |
b1839a64 | 367 | # define HASUNAME 1 /* use System V uname(2) system call */ |
72af7ebb EA |
368 | # ifndef HASFLOCK |
369 | # define HASFLOCK 1 /* has flock(2) call */ | |
370 | # endif | |
1ee33f7d | 371 | # define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ |
4aca8efc EA |
372 | # ifndef BROKEN_RES_SEARCH |
373 | # define BROKEN_RES_SEARCH 1 /* res_search(unknown) returns h_errno=0 */ | |
374 | # endif | |
0dbb4629 EA |
375 | # ifdef vax |
376 | # define LA_TYPE LA_FLOAT | |
377 | # else | |
378 | # define LA_TYPE LA_INT | |
379 | # define LA_AVENRUN "avenrun" | |
380 | # endif | |
5e0e0f8f | 381 | # define SFS_TYPE SFS_MOUNT /* use <sys/mount.h> statfs() impl */ |
a74fd615 | 382 | # ifndef IDENTPROTO |
4aca8efc | 383 | # define IDENTPROTO 0 /* pre-4.4 TCP/IP implementation is broken */ |
a74fd615 | 384 | # endif |
e6245c7e EA |
385 | #endif |
386 | ||
2b09dd75 | 387 | |
6068a621 EA |
388 | /* |
389 | ** OSF/1 for Intel Paragon. | |
390 | ** | |
d4895973 EA |
391 | ** Contributed by Jeff A. Earickson <jeff@ssd.intel.com> |
392 | ** of Intel Scalable Systems Divison. | |
6068a621 EA |
393 | */ |
394 | ||
395 | #ifdef __PARAGON__ | |
396 | # define __osf__ 1 /* get OSF/1 defines below */ | |
4e93bc5c | 397 | # define _PATH_VENDOR_CF "/var/adm/sendmail/sendmail.cf" |
6068a621 EA |
398 | #endif |
399 | ||
400 | ||
ba6514e2 EA |
401 | /* |
402 | ** OSF/1 (tested on Alpha) | |
403 | */ | |
404 | ||
fd57f063 | 405 | #ifdef __osf__ |
33d59d37 | 406 | # define HASUNSETENV 1 /* has unsetenv(3) call */ |
04c2baef | 407 | # define USESETEUID 1 /* has useable seteuid(2) call */ |
39270cfd | 408 | # define HASINITGROUPS 1 /* has initgroups(3) call */ |
d947d433 | 409 | # define IP_SRCROUTE 1 /* can check IP source routing */ |
534256ae | 410 | # ifndef HASFLOCK |
72af7ebb EA |
411 | # define HASFLOCK 1 /* has flock(2) call */ |
412 | # endif | |
33d59d37 | 413 | # define LA_TYPE LA_INT |
5e0e0f8f | 414 | # define SFS_TYPE SFS_MOUNT /* use <sys/mount.h> statfs() impl */ |
8988dfd3 | 415 | # ifndef _PATH_SENDMAILPID |
fc658fc9 | 416 | # define _PATH_SENDMAILPID "/var/run/sendmail.pid" |
8988dfd3 | 417 | # endif |
6070681d EA |
418 | #endif |
419 | ||
2b09dd75 | 420 | |
ba6514e2 EA |
421 | /* |
422 | ** NeXTstep | |
423 | */ | |
424 | ||
fbfeb92c | 425 | #ifdef NeXT |
39270cfd | 426 | # define HASINITGROUPS 1 /* has initgroups(3) call */ |
bd345c9b | 427 | # define NEEDPUTENV 2 /* need putenv(3) call; no setenv(3) call */ |
72af7ebb EA |
428 | # ifndef HASFLOCK |
429 | # define HASFLOCK 1 /* has flock(2) call */ | |
430 | # endif | |
9cb009c2 | 431 | # define NEEDGETOPT 1 /* need a replacement for getopt(3) */ |
693a756a | 432 | # define WAITUNION 1 /* use "union wait" as wait argument type */ |
782a2f97 | 433 | # define UID_T int /* compiler gripes on uid_t */ |
8e5c6745 | 434 | # define sleep sleepX |
0d2faefc | 435 | # define setpgid setpgrp |
e60b62fd EA |
436 | # ifndef LA_TYPE |
437 | # define LA_TYPE LA_MACH | |
438 | # endif | |
5e0e0f8f | 439 | # define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() implementation */ |
0349f8cc | 440 | # ifndef _POSIX_SOURCE |
39270cfd | 441 | typedef int pid_t; |
0349f8cc EA |
442 | # undef WEXITSTATUS |
443 | # undef WIFEXITED | |
444 | # endif | |
4e93bc5c | 445 | # define _PATH_VENDOR_CF "/etc/sendmail/sendmail.cf" |
0f786d57 EA |
446 | # ifndef _PATH_SENDMAILPID |
447 | # define _PATH_SENDMAILPID "/etc/sendmail/sendmail.pid" | |
448 | # endif | |
8c5949d2 EA |
449 | #endif |
450 | ||
2b09dd75 | 451 | |
ba6514e2 | 452 | /* |
33d59d37 | 453 | ** 4.4 BSD |
9c08c09b EA |
454 | ** |
455 | ** See also BSD defines. | |
ba6514e2 EA |
456 | */ |
457 | ||
01621321 | 458 | #if defined(BSD4_4) && !defined(__bsdi__) |
0f786d57 | 459 | # define HASUNSETENV 1 /* has unsetenv(3) call */ |
04c2baef | 460 | # define USESETEUID 1 /* has useable seteuid(2) call */ |
ed0b2c1b | 461 | # include <sys/cdefs.h> |
7621e399 | 462 | # define ERRLIST_PREDEFINED /* don't declare sys_errlist */ |
b7c46410 | 463 | # define BSD4_4_SOCKADDR /* has sa_len */ |
fbc0326a | 464 | # define NETLINK 1 /* supports AF_LINK */ |
0f786d57 EA |
465 | # ifndef LA_TYPE |
466 | # define LA_TYPE LA_SUBR | |
467 | # endif | |
5e0e0f8f | 468 | # define SFS_TYPE SFS_MOUNT /* use <sys/mount.h> statfs() impl */ |
ddeafa3b | 469 | # define SPT_TYPE SPT_PSSTRINGS /* use PS_STRINGS pointer */ |
7621e399 EA |
470 | #endif |
471 | ||
2b09dd75 | 472 | |
e7261663 EA |
473 | /* |
474 | ** BSD/386 (all versions) | |
475 | ** From Tony Sanders, BSDI | |
476 | */ | |
477 | ||
478 | #ifdef __bsdi__ | |
479 | # define HASUNSETENV 1 /* has the unsetenv(3) call */ | |
480 | # define HASSETSID 1 /* has the setsid(2) POSIX syscall */ | |
04c2baef | 481 | # define USESETEUID 1 /* has useable seteuid(2) call */ |
e7261663 EA |
482 | # include <sys/cdefs.h> |
483 | # define ERRLIST_PREDEFINED /* don't declare sys_errlist */ | |
b7c46410 | 484 | # define BSD4_4_SOCKADDR /* has sa_len */ |
fbc0326a | 485 | # define NETLINK 1 /* supports AF_LINK */ |
11c14c72 | 486 | # define SFS_TYPE SFS_MOUNT /* use <sys/mount.h> statfs() impl */ |
e7261663 EA |
487 | # ifndef LA_TYPE |
488 | # define LA_TYPE LA_SUBR | |
489 | # endif | |
c291e9af | 490 | # define GIDSET_T gid_t |
11c14c72 EA |
491 | # if defined(_BSDI_VERSION) && _BSDI_VERSION >= 199312 |
492 | /* version 1.1 or later */ | |
ddeafa3b EA |
493 | # undef SPT_TYPE |
494 | # define SPT_TYPE SPT_BUILTIN /* setproctitle is in libc */ | |
11c14c72 EA |
495 | # else |
496 | /* version 1.0 or earlier */ | |
497 | # ifndef OLD_NEWDB | |
498 | # define OLD_NEWDB 1 /* old version of newdb library */ | |
499 | # endif | |
ddeafa3b | 500 | # define SPT_PADCHAR '\0' /* pad process title with nulls */ |
11c14c72 | 501 | # endif |
e7261663 EA |
502 | #endif |
503 | ||
504 | ||
505 | ||
db82ecce | 506 | /* |
13a6f00c | 507 | ** FreeBSD / NetBSD (all architectures, all versions) |
db82ecce | 508 | ** |
13a6f00c EA |
509 | ** 4.3BSD clone, closer to 4.4BSD for FreeBSD 1.x and NetBSD 0.9x |
510 | ** 4.4BSD-Lite based for FreeBSD 2.x and NetBSD 1.x | |
9c08c09b EA |
511 | ** |
512 | ** See also BSD defines. | |
db82ecce EA |
513 | */ |
514 | ||
13a6f00c | 515 | #if defined(__FreeBSD__) || defined(__NetBSD__) |
db82ecce EA |
516 | # define HASUNSETENV 1 /* has unsetenv(3) call */ |
517 | # define HASSETSID 1 /* has the setsid(2) POSIX syscall */ | |
04c2baef | 518 | # define USESETEUID 1 /* has useable seteuid(2) call */ |
13a6f00c | 519 | # define HASUNAME 1 /* has uname(2) syscall */ |
db82ecce EA |
520 | # include <sys/cdefs.h> |
521 | # define ERRLIST_PREDEFINED /* don't declare sys_errlist */ | |
b7c46410 | 522 | # define BSD4_4_SOCKADDR /* has sa_len */ |
fbc0326a | 523 | # define NETLINK 1 /* supports AF_LINK */ |
13a6f00c | 524 | # define GIDSET_T gid_t |
db82ecce EA |
525 | # ifndef LA_TYPE |
526 | # define LA_TYPE LA_SUBR | |
527 | # endif | |
5e0e0f8f | 528 | # define SFS_TYPE SFS_MOUNT /* use <sys/mount.h> statfs() impl */ |
db82ecce EA |
529 | #endif |
530 | ||
531 | ||
8988dfd3 EA |
532 | /* |
533 | ** Mach386 | |
534 | ** | |
535 | ** For mt Xinu's Mach386 system. | |
536 | */ | |
537 | ||
538 | #if defined(MACH) && defined(i386) | |
539 | # define MACH386 1 | |
540 | # define HASUNSETENV 1 /* has unsetenv(3) call */ | |
541 | # define HASINITGROUPS 1 /* has initgroups(3) call */ | |
534256ae | 542 | # ifndef HASFLOCK |
72af7ebb EA |
543 | # define HASFLOCK 1 /* has flock(2) call */ |
544 | # endif | |
8988dfd3 EA |
545 | # define NEEDGETOPT 1 /* need a replacement for getopt(3) */ |
546 | # define NEEDSTRTOL 1 /* need the strtol() function */ | |
547 | # define setpgid setpgrp | |
548 | # ifndef LA_TYPE | |
549 | # define LA_TYPE LA_FLOAT | |
550 | # endif | |
5e0e0f8f | 551 | # define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() implementation */ |
c6bd47b4 | 552 | # undef HASSETVBUF /* don't actually have setvbuf(3) */ |
8988dfd3 EA |
553 | # undef WEXITSTATUS |
554 | # undef WIFEXITED | |
4e93bc5c | 555 | # define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" |
8988dfd3 EA |
556 | # ifndef _PATH_SENDMAILPID |
557 | # define _PATH_SENDMAILPID "/etc/sendmail.pid" | |
558 | # endif | |
559 | #endif | |
560 | ||
561 | ||
35f1f39e EA |
562 | /* |
563 | ** 4.3 BSD -- this is for very old systems | |
564 | ** | |
f0bb212b EA |
565 | ** Should work for mt Xinu MORE/BSD and Mips UMIPS-BSD 2.1. |
566 | ** | |
35f1f39e EA |
567 | ** You'll also have to install a new resolver library. |
568 | ** I don't guarantee that support for this environment is complete. | |
569 | */ | |
570 | ||
f0bb212b | 571 | #if defined(oldBSD43) || defined(MORE_BSD) || defined(umipsbsd) |
35f1f39e EA |
572 | # define NEEDVPRINTF 1 /* need a replacement for vprintf(3) */ |
573 | # define NEEDGETOPT 1 /* need a replacement for getopt(3) */ | |
0639fd0c | 574 | # define ARBPTR_T char * |
0d2faefc | 575 | # define setpgid setpgrp |
35f1f39e EA |
576 | # ifndef LA_TYPE |
577 | # define LA_TYPE LA_FLOAT | |
578 | # endif | |
4e93bc5c | 579 | # define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" |
a74fd615 EA |
580 | # ifndef IDENTPROTO |
581 | # define IDENTPROTO 0 /* TCP/IP implementation is broken */ | |
582 | # endif | |
ac3f694f EA |
583 | # undef WEXITSTATUS |
584 | # undef WIFEXITED | |
585 | typedef short pid_t; | |
586 | extern int errno; | |
35f1f39e EA |
587 | #endif |
588 | ||
2b09dd75 | 589 | |
ba6514e2 EA |
590 | /* |
591 | ** SCO Unix | |
8e01bd08 EA |
592 | ** |
593 | ** This includes two parts -- the first is for SCO Open Server 3.2v4 | |
594 | ** (contributed by Philippe Brand <phb@colombo.telesys-innov.fr>). | |
595 | ** The second is, I believe, for an older version. | |
ba6514e2 EA |
596 | */ |
597 | ||
8e01bd08 EA |
598 | #ifdef _SCO_unix_4_2 |
599 | # define _SCO_unix_ | |
600 | # define HASSETREUID 1 /* has setreuid(2) call */ | |
3f23b98b | 601 | # define NEEDFSYNC 1 /* needs the fsync(2) call stub */ |
4e93bc5c EA |
602 | # define _PATH_UNIX "/unix" |
603 | # define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" | |
8e01bd08 EA |
604 | # ifndef _PATH_SENDMAILPID |
605 | # define _PATH_SENDMAILPID "/etc/sendmail.pid" | |
606 | # endif | |
607 | #endif | |
608 | ||
7621e399 EA |
609 | #ifdef _SCO_unix_ |
610 | # define SYSTEM5 1 /* include all the System V defines */ | |
39270cfd | 611 | # define SYS5SIGNALS 1 /* SysV signal semantics -- reset on each sig */ |
175dac04 | 612 | # define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ |
7621e399 EA |
613 | # define FORK fork |
614 | # define MAXPATHLEN PATHSIZE | |
fe3849ea | 615 | # define LA_TYPE LA_SHORT |
e8dfcb16 | 616 | # define SFS_TYPE SFS_4ARGS /* use <sys/statfs.h> 4-arg impl */ |
b2b48b69 | 617 | # define SFS_BAVAIL f_bfree /* alternate field name */ |
f7311261 | 618 | # define TZ_TYPE TZ_TM_NAME /* use tm->tm_name */ |
a40faef5 | 619 | # define NETUNIX 0 /* no unix domain socket support */ |
33d59d37 EA |
620 | #endif |
621 | ||
2b09dd75 | 622 | |
e3a8e3e0 EA |
623 | /* |
624 | ** ISC (SunSoft) Unix. | |
625 | ** | |
626 | ** Contributed by J.J. Bailey <jjb@jagware.bcc.com> | |
627 | */ | |
628 | ||
629 | #ifdef ISC_UNIX | |
630 | # include <net/errno.h> | |
9cd7141b EA |
631 | # include <sys/stream.h> /* needed for IP_SRCROUTE */ |
632 | # include <sys/bsdtypes.h> | |
e3a8e3e0 EA |
633 | # define SYSTEM5 1 /* include all the System V defines */ |
634 | # define SYS5SIGNALS 1 /* SysV signal semantics -- reset on each sig */ | |
635 | # define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ | |
636 | # define HASSETREUID 1 /* has setreuid(2) call */ | |
637 | # define NEEDFSYNC 1 /* needs the fsync(2) call stub */ | |
a40faef5 | 638 | # define NETUNIX 0 /* no unix domain socket support */ |
e3a8e3e0 EA |
639 | # define FORK fork |
640 | # define MAXPATHLEN 1024 | |
641 | # define LA_TYPE LA_SHORT | |
642 | # define SFS_TYPE SFS_STATFS /* use <sys/statfs.h> statfs() impl */ | |
643 | # define SFS_BAVAIL f_bfree /* alternate field name */ | |
4e93bc5c EA |
644 | # define _PATH_UNIX "/unix" |
645 | # define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" | |
e3a8e3e0 EA |
646 | # ifndef _PATH_SENDMAILPID |
647 | # define _PATH_SENDMAILPID "/etc/sendmail.pid" | |
648 | # endif | |
649 | ||
650 | typedef short pid_t; | |
651 | ||
652 | #endif | |
653 | ||
654 | ||
4d645e29 EA |
655 | /* |
656 | ** Altos System V. | |
657 | ** Contributed by Tim Rice <timr@crl.com>. | |
658 | */ | |
659 | ||
660 | #ifdef ALTOS_SYS_V | |
661 | # include <limits.h> | |
662 | # define SYSTEM5 1 /* include all the System V defines */ | |
663 | # define SYS5SIGNALS 1 /* SysV signal semantics -- reset on each sig */ | |
664 | # define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ | |
665 | # define WAITUNION 1 /* use "union wait" as wait argument type */ | |
666 | # define NEEDFSYNC 1 /* no fsync(2) in system library */ | |
667 | # define FORK fork | |
668 | # define MAXPATHLEN PATHSIZE | |
669 | # define LA_TYPE LA_SHORT | |
670 | # define SFS_TYPE SFS_STATFS /* use <sys/statfs.h> statfs() impl */ | |
b2b48b69 | 671 | # define SFS_BAVAIL f_bfree /* alternate field name */ |
4d645e29 | 672 | # define TZ_TYPE TZ_TM_NAME /* use tm->tm_name */ |
a40faef5 | 673 | # define NETUNIX 0 /* no unix domain socket support */ |
4d645e29 EA |
674 | # undef WIFEXITED |
675 | # undef WEXITSTATUS | |
676 | # define strtoul strtol /* gcc library bogosity */ | |
677 | ||
678 | typedef unsigned short uid_t; | |
679 | typedef unsigned short gid_t; | |
680 | typedef short pid_t; | |
681 | #endif | |
682 | ||
683 | ||
33d59d37 EA |
684 | /* |
685 | ** ConvexOS 11.0 and later | |
f0bb212b EA |
686 | ** |
687 | ** "Todd C. Miller" <millert@mroe.cs.colorado.edu> claims this | |
688 | ** works on 9.1 as well. | |
33d59d37 EA |
689 | */ |
690 | ||
691 | #ifdef _CONVEX_SOURCE | |
0c31d7be EA |
692 | # define BSD 1 /* include all the BSD defines */ |
693 | # define HASUNAME 1 /* use System V uname(2) system call */ | |
33d59d37 | 694 | # define HASSETSID 1 /* has POSIX setsid(2) call */ |
0c31d7be | 695 | # define NEEDGETOPT 1 /* need replacement for getopt(3) */ |
d947d433 | 696 | # define IP_SRCROUTE 0 /* Something is broken with getsockopt() */ |
33d59d37 | 697 | # define LA_TYPE LA_FLOAT |
5e0e0f8f | 698 | # define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() implementation */ |
4e93bc5c | 699 | # define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" |
f0bb212b EA |
700 | # ifndef S_IREAD |
701 | # define S_IREAD _S_IREAD | |
702 | # define S_IWRITE _S_IWRITE | |
703 | # define S_IEXEC _S_IEXEC | |
704 | # define S_IFMT _S_IFMT | |
705 | # define S_IFCHR _S_IFCHR | |
706 | # define S_IFBLK _S_IFBLK | |
707 | # endif | |
a74fd615 EA |
708 | # ifndef IDENTPROTO |
709 | # define IDENTPROTO 0 /* TCP/IP implementation is broken */ | |
710 | # endif | |
33d59d37 EA |
711 | #endif |
712 | ||
2b09dd75 | 713 | |
33d59d37 | 714 | /* |
fa323968 | 715 | ** RISC/os 4.52 |
33d59d37 | 716 | ** |
fa323968 | 717 | ** Gives a ton of warning messages, but otherwise compiles. |
33d59d37 EA |
718 | */ |
719 | ||
0fc3fb21 | 720 | #ifdef RISCOS |
fa323968 | 721 | |
33d59d37 | 722 | # define HASUNSETENV 1 /* has unsetenv(3) call */ |
534256ae | 723 | # ifndef HASFLOCK |
72af7ebb EA |
724 | # define HASFLOCK 1 /* has flock(2) call */ |
725 | # endif | |
fa323968 EA |
726 | # define WAITUNION 1 /* use "union wait" as wait argument type */ |
727 | # define NEEDGETOPT 1 /* need a replacement for getopt(3) */ | |
33d59d37 EA |
728 | # define LA_TYPE LA_INT |
729 | # define LA_AVENRUN "avenrun" | |
730 | # define _PATH_UNIX "/unix" | |
fa323968 EA |
731 | # undef WIFEXITED |
732 | ||
733 | # define setpgid setpgrp | |
734 | ||
735 | extern int errno; | |
736 | typedef int pid_t; | |
737 | #define SIGFUNC_DEFINED | |
738 | typedef int (*sigfunc_t)(); | |
739 | extern char *getenv(); | |
740 | extern void *malloc(); | |
741 | ||
ed0b2c1b EA |
742 | #endif |
743 | ||
2b09dd75 | 744 | |
0d2faefc EA |
745 | /* |
746 | ** Linux 0.99pl10 and above... | |
a1a01683 EA |
747 | ** |
748 | ** Thanks to, in reverse order of contact: | |
749 | ** | |
750 | ** John Kennedy <warlock@csuchico.edu> | |
5d944135 | 751 | ** Andrew Pam <avatar@aus.xanadu.com> |
a1a01683 EA |
752 | ** Florian La Roche <rzsfl@rz.uni-sb.de> |
753 | ** Karl London <karl@borg.demon.co.uk> | |
754 | ** | |
a9c4e8d5 EA |
755 | ** Last compiled against: [05/25/95 @ 11:39:31 AM (Thursday)] |
756 | ** sendmail 8.7.b.0 named 4.9.3-beta17 db-1.85 | |
757 | ** gcc 2.6.4-950518 libc-5.0.9 linux 1.2.8 | |
0d2faefc EA |
758 | */ |
759 | ||
404f4d13 | 760 | #ifdef __linux__ |
402003b1 | 761 | # define BSD 1 /* include BSD defines */ |
0d2faefc | 762 | # define NEEDGETOPT 1 /* need a replacement for getopt(3) */ |
402003b1 | 763 | # define HASUNAME 1 /* use System V uname(2) system call */ |
c2edb205 | 764 | # define HASUNSETENV 1 /* has unsetenv(3) call */ |
402003b1 | 765 | # define ERRLIST_PREDEFINED /* don't declare sys_errlist */ |
a1a01683 | 766 | # define GIDSET_T gid_t /* from <linux/types.h> */ |
375679c6 | 767 | # define HASGETUSERSHELL 0 /* getusershell(3) broken in Slackware 2.0 */ |
a9c4e8d5 | 768 | # define IP_SRCROUTE 0 /* linux <= 1.2.8 doesn't support IP_OPTIONS */ |
0668ff23 EA |
769 | # ifndef HASFLOCK |
770 | # define HASFLOCK 0 /* flock(2) is broken after 0.99.13 */ | |
771 | # endif | |
0d2faefc | 772 | # ifndef LA_TYPE |
ff065a83 | 773 | # define LA_TYPE LA_PROCSTR |
0d2faefc | 774 | # endif |
a1a01683 | 775 | # define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() impl */ |
5d944135 EA |
776 | # ifndef _PATH_SENDMAILPID |
777 | # define _PATH_SENDMAILPID "/var/run/sendmail.pid" | |
778 | # endif | |
779 | # define TZ_TYPE TZ_TNAME | |
72ef208d | 780 | # include <sys/sysmacros.h> |
a1a01683 | 781 | # undef atol /* wounded in <stdlib.h> */ |
0d2faefc EA |
782 | #endif |
783 | ||
784 | ||
178464cb EA |
785 | /* |
786 | ** DELL SVR4 Issue 2.2, and others | |
787 | ** From Kimmo Suominen <kim@grendel.lut.fi> | |
788 | ** | |
789 | ** It's on #ifdef DELL_SVR4 because Solaris also gets __svr4__ | |
790 | ** defined, and the definitions conflict. | |
69bed929 EA |
791 | ** |
792 | ** Peter Wemm <peter@perth.DIALix.oz.au> claims that the setreuid | |
793 | ** trick works on DELL 2.2 (SVR4.0/386 version 4.0) and ESIX 4.0.3A | |
794 | ** (SVR4.0/386 version 3.0). | |
178464cb EA |
795 | */ |
796 | ||
797 | #ifdef DELL_SVR4 | |
f361504a EA |
798 | /* no changes necessary */ |
799 | /* see general __svr4__ defines below */ | |
178464cb EA |
800 | #endif |
801 | ||
802 | ||
c2edb205 EA |
803 | /* |
804 | ** Apple A/UX 3.0 | |
805 | */ | |
806 | ||
807 | #ifdef _AUX_SOURCE | |
25a722b1 | 808 | # include <sys/sysmacros.h> |
c2edb205 | 809 | # define BSD /* has BSD routines */ |
07c6107b | 810 | # define HASSETRLIMIT 0 /* ... but not setrlimit(2) */ |
02e07c7e | 811 | # define BROKEN_RES_SEARCH 1 /* res_search(unknown) returns h_errno=0 */ |
c2edb205 | 812 | # define HASUNAME 1 /* use System V uname(2) system call */ |
c2edb205 | 813 | # define HASSETVBUF 1 /* we have setvbuf(3) in libc */ |
53335960 | 814 | # define SIGFUNC_DEFINED /* sigfunc_t already defined */ |
a74fd615 EA |
815 | # ifndef IDENTPROTO |
816 | # define IDENTPROTO 0 /* TCP/IP implementation is broken */ | |
817 | # endif | |
c2edb205 | 818 | # define FORK fork |
c2edb205 | 819 | # ifndef LA_TYPE |
07c6107b EA |
820 | # define LA_TYPE LA_INT |
821 | # define FSHIFT 16 | |
c2edb205 | 822 | # endif |
07c6107b | 823 | # define LA_AVENRUN "avenrun" |
5e0e0f8f | 824 | # define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() implementation */ |
07c6107b EA |
825 | # define TZ_TYPE TZ_TZNAME |
826 | # ifndef _PATH_UNIX | |
4e93bc5c | 827 | # define _PATH_UNIX "/unix" /* should be in <paths.h> */ |
07c6107b | 828 | # endif |
4e93bc5c | 829 | # define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" |
96e003d2 EA |
830 | # undef WIFEXITED |
831 | # undef WEXITSTATUS | |
c2edb205 EA |
832 | #endif |
833 | ||
834 | ||
82530719 EA |
835 | /* |
836 | ** Encore UMAX V | |
837 | ** | |
838 | ** Not extensively tested. | |
839 | */ | |
840 | ||
841 | #ifdef UMAXV | |
842 | # include <limits.h> | |
843 | # define HASUNAME 1 /* use System V uname(2) system call */ | |
82530719 EA |
844 | # define HASSETVBUF 1 /* we have setvbuf(3) in libc */ |
845 | # define HASINITGROUPS 1 /* has initgroups(3) call */ | |
1ee33f7d | 846 | # define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ |
82530719 EA |
847 | # define SYS5SIGNALS 1 /* SysV signal semantics -- reset on each sig */ |
848 | # define SYS5SETPGRP 1 /* use System V setpgrp(2) syscall */ | |
849 | # define FORK fork /* no vfork(2) primitive available */ | |
5e0e0f8f | 850 | # define SFS_TYPE SFS_4ARGS /* four argument statfs() call */ |
82530719 EA |
851 | # define MAXPATHLEN PATH_MAX |
852 | extern struct passwd *getpwent(), *getpwnam(), *getpwuid(); | |
853 | extern struct group *getgrent(), *getgrnam(), *getgrgid(); | |
854 | # undef WIFEXITED | |
855 | # undef WEXITSTATUS | |
856 | #endif | |
857 | ||
858 | ||
31c3ae15 EA |
859 | /* |
860 | ** Stardent Titan 3000 running TitanOS 4.2. | |
861 | ** | |
862 | ** Must be compiled in "cc -43" mode. | |
863 | ** | |
fce21cb9 | 864 | ** From Kate Hedstrom <kate@ahab.rutgers.edu>. |
31c3ae15 EA |
865 | ** |
866 | ** Note the tweaking below after the BSD defines are set. | |
867 | */ | |
868 | ||
869 | #ifdef titan | |
870 | # define setpgid setpgrp | |
871 | typedef int pid_t; | |
872 | # undef WIFEXITED | |
873 | # undef WEXITSTATUS | |
874 | #endif | |
875 | ||
876 | ||
c6bd47b4 EA |
877 | /* |
878 | ** Sequent DYNIX 3.2.0 | |
879 | ** | |
880 | ** From Jim Davis <jdavis@cs.arizona.edu>. | |
881 | */ | |
882 | ||
883 | #ifdef sequent | |
efadb8ee | 884 | |
c6bd47b4 EA |
885 | # define BSD 1 |
886 | # define HASUNSETENV 1 | |
887 | # define BSD4_3 1 /* to get signal() in conf.c */ | |
888 | # define WAITUNION 1 | |
889 | # define LA_TYPE LA_FLOAT | |
890 | # ifdef _POSIX_VERSION | |
891 | # undef _POSIX_VERSION /* set in <unistd.h> */ | |
892 | # endif | |
893 | # undef HASSETVBUF /* don't actually have setvbuf(3) */ | |
894 | # define setpgid setpgrp | |
895 | ||
896 | /* Have to redefine WIFEXITED to take an int, to work with waitfor() */ | |
897 | # undef WIFEXITED | |
898 | # define WIFEXITED(s) (((union wait*)&(s))->w_stopval != WSTOPPED && \ | |
899 | ((union wait*)&(s))->w_termsig == 0) | |
900 | # define WEXITSTATUS(s) (((union wait*)&(s))->w_retcode) | |
901 | typedef int pid_t; | |
902 | # define isgraph(c) (isprint(c) && (c != ' ')) | |
903 | ||
28462cf3 EA |
904 | # ifndef IDENTPROTO |
905 | # define IDENTPROTO 0 /* TCP/IP implementation is broken */ | |
906 | # endif | |
907 | ||
c6bd47b4 | 908 | # ifndef _PATH_UNIX |
4e93bc5c | 909 | # define _PATH_UNIX "/dynix" |
c6bd47b4 | 910 | # endif |
4e93bc5c | 911 | # define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" |
c6bd47b4 EA |
912 | |
913 | #endif | |
914 | ||
915 | ||
efadb8ee EA |
916 | /* |
917 | ** Sequent DYNIX/ptx v2.0 (and higher) | |
918 | ** | |
919 | ** For DYNIX/ptx v1.x, undefine HASSETREUID. | |
920 | ** | |
921 | ** From Tim Wright <timw@sequent.com>. | |
922 | */ | |
923 | ||
924 | #ifdef _SEQUENT_ | |
925 | # define SYSTEM5 1 /* include all the System V defines */ | |
926 | # define HASSETSID 1 /* has POSIX setsid(2) call */ | |
927 | # define HASINITGROUPS 1 /* has initgroups(3) call */ | |
928 | # define HASSETREUID 1 /* has setreuid(2) call */ | |
929 | # define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ | |
930 | # define GIDSET_T gid_t | |
931 | # define LA_TYPE LA_INT | |
932 | # define SFS_TYPE SFS_STATFS /* use <sys/statfs.h> statfs() impl */ | |
ddeafa3b | 933 | # define SPT_TYPE SPT_NONE /* don't use setproctitle */ |
28462cf3 EA |
934 | # ifndef IDENTPROTO |
935 | # define IDENTPROTO 0 /* TCP/IP implementation is broken */ | |
936 | # endif | |
4e93bc5c | 937 | # define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" |
efadb8ee EA |
938 | # ifndef _PATH_SENDMAILPID |
939 | # define _PATH_SENDMAILPID "/etc/sendmail.pid" | |
940 | # endif | |
941 | #endif | |
942 | ||
943 | ||
250441f6 EA |
944 | /* |
945 | ** Cray Unicos | |
946 | ** | |
947 | ** Ported by David L. Kensiski, Sterling Sofware <kensiski@nas.nasa.gov> | |
948 | */ | |
949 | ||
950 | #ifdef UNICOS | |
951 | # define SYSTEM5 1 /* include all the System V defines */ | |
952 | # define SYS5SIGNALS 1 /* SysV signal semantics -- reset on each sig */ | |
250441f6 EA |
953 | # define MAXPATHLEN PATHSIZE |
954 | # define LA_TYPE LA_ZERO | |
5e0e0f8f | 955 | # define SFS_TYPE SFS_4ARGS /* four argument statfs() call */ |
b2b48b69 | 956 | # define SFS_BAVAIL f_bfree /* alternate field name */ |
250441f6 EA |
957 | #endif |
958 | ||
c6bd47b4 | 959 | |
548197f7 EA |
960 | /* |
961 | ** Apollo DomainOS | |
962 | ** | |
963 | ** From Todd Martin <tmartint@tus.ssi1.com> & Don Lewis <gdonl@gv.ssi1.com> | |
e7261663 | 964 | ** |
548197f7 EA |
965 | ** 15 Jan 1994 |
966 | ** | |
967 | */ | |
968 | ||
969 | #ifdef apollo | |
548197f7 EA |
970 | # define HASSETREUID 1 /* has setreuid(2) call */ |
971 | # define HASINITGROUPS 1 /* has initgroups(2) call */ | |
ddeafa3b | 972 | # define SPT_TYPE SPT_NONE /* don't use setproctitle */ |
548197f7 | 973 | # define LA_TYPE LA_SUBR /* use getloadavg.c */ |
f243158a | 974 | # define SFS_TYPE SFS_4ARGS /* four argument statfs() call */ |
b2b48b69 | 975 | # define SFS_BAVAIL f_bfree /* alternate field name */ |
4e93bc5c | 976 | # define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" |
548197f7 EA |
977 | # ifndef _PATH_SENDMAILPID |
978 | # define _PATH_SENDMAILPID "/etc/sendmail.pid" | |
979 | # endif | |
980 | # undef S_IFSOCK /* S_IFSOCK and S_IFIFO are the same */ | |
981 | # undef S_IFIFO | |
982 | # define S_IFIFO 0010000 | |
983 | # ifndef IDENTPROTO | |
984 | # define IDENTPROTO 0 /* TCP/IP implementation is broken */ | |
985 | # endif | |
e7261663 | 986 | #endif |
548197f7 EA |
987 | |
988 | ||
41915d28 | 989 | /* |
4579ffd9 | 990 | ** UnixWare 1.1.2. |
41915d28 | 991 | ** |
3dc26a39 | 992 | ** Updated by Petr Lampa <lampa@fee.vutbr.cz>. |
41915d28 EA |
993 | ** From Evan Champion <evanc@spatial.synapse.org>. |
994 | */ | |
995 | ||
996 | #ifdef UNIXWARE | |
d4079d2e | 997 | # include <sys/mkdev.h> |
41915d28 | 998 | # define SYSTEM5 1 |
4579ffd9 | 999 | # define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ |
4579ffd9 EA |
1000 | # define HASSETREUID 1 |
1001 | # define HASSETSID 1 | |
1002 | # define HASINITGROUPS 1 | |
1003 | # define GIDSET_T gid_t | |
1004 | # define SLEEP_T unsigned | |
41915d28 EA |
1005 | # define SFS_TYPE SFS_STATVFS |
1006 | # define LA_TYPE LA_ZERO | |
1007 | # undef WIFEXITED | |
1008 | # undef WEXITSTATUS | |
1009 | # define _PATH_UNIX "/unix" | |
4e93bc5c | 1010 | # define _PATH_VENDOR_CF "/usr/ucblib/sendmail.cf" |
41915d28 EA |
1011 | # ifndef _PATH_SENDMAILPID |
1012 | # define _PATH_SENDMAILPID "/usr/ucblib/sendmail.pid" | |
1013 | # endif | |
1014 | # define SYSLOG_BUFSIZE 128 | |
1015 | #endif | |
1016 | ||
1017 | ||
8b223875 EA |
1018 | /* |
1019 | ** Intergraph CLIX 3.1 | |
1020 | ** | |
1021 | ** From Paul Southworth <pauls@locust.cic.net> | |
1022 | */ | |
1023 | ||
1024 | #ifdef CLIX | |
1025 | # define SYSTEM5 1 /* looks like System V */ | |
41915d28 EA |
1026 | # ifndef HASGETUSERSHELL |
1027 | # define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ | |
1028 | # endif | |
8b223875 EA |
1029 | # define DEV_BSIZE 512 /* device block size not defined */ |
1030 | # define GIDSET_T gid_t | |
1031 | # undef LOG /* syslog not available */ | |
1032 | # define NEEDFSYNC 1 /* no fsync in system library */ | |
1033 | # define GETSHORT _getshort | |
1034 | #endif | |
1035 | ||
1036 | ||
01e1d6e5 EA |
1037 | /* |
1038 | ** NCR 3000 Series (SysVr4) | |
1039 | ** | |
264ee34f | 1040 | ** From Kevin Darcy <kevin@tech.mis.cfc.com>. |
01e1d6e5 EA |
1041 | */ |
1042 | ||
1043 | #ifdef NCR3000 | |
569a0363 | 1044 | # include <sys/sockio.h> |
01e1d6e5 | 1045 | # define __svr4__ |
d947d433 | 1046 | # define IP_SRCROUTE 0 /* Something is broken with getsockopt() */ |
01e1d6e5 EA |
1047 | # undef BSD |
1048 | # define LA_AVENRUN "avenrun" | |
1049 | #endif | |
01e1d6e5 EA |
1050 | |
1051 | ||
264ee34f EA |
1052 | /* |
1053 | ** Tandem NonStop-UX SVR4 | |
1054 | ** | |
1055 | ** From Rick McCarty <mccarty@mpd.tandem.com>. | |
1056 | */ | |
1057 | ||
1058 | #ifdef NonStop_UX_BXX | |
1059 | # define __svr4__ | |
1060 | #endif | |
1061 | ||
548197f7 | 1062 | |
d576f75d EA |
1063 | /* |
1064 | ** Hitachi 3050R & 3050RX Workstations running HI-UX/WE2. | |
1065 | ** | |
1066 | ** Tested for 1.04 and 1.03 | |
1067 | ** From Akihiro Hashimoto ("Hash") <hash@dominic.ipc.chiba-u.ac.jp>. | |
1068 | */ | |
1069 | ||
1070 | #ifdef __H3050R | |
1071 | # define SYSTEM5 1 /* include all the System V defines */ | |
1072 | # define HASINITGROUPS 1 /* has initgroups(3) call */ | |
1073 | # define setreuid(r, e) setresuid(r, e, -1) | |
1074 | # define LA_TYPE LA_FLOAT | |
1075 | # define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() implementation */ | |
1076 | # define HASSETVBUF /* HI-UX has no setlinebuf */ | |
1077 | # ifndef GIDSET_T | |
1078 | # define GIDSET_T gid_t | |
1079 | # endif | |
1080 | # ifndef _PATH_UNIX | |
4e93bc5c | 1081 | # define _PATH_UNIX "/HI-UX" |
d576f75d | 1082 | # endif |
4e93bc5c | 1083 | # define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" |
d576f75d EA |
1084 | # ifndef IDENTPROTO |
1085 | # define IDENTPROTO 0 /* TCP/IP implementation is broken */ | |
1086 | # endif | |
1087 | # ifndef HASGETUSERSHELL | |
1088 | # define HASGETUSERSHELL 0 /* getusershell(3) causes core dumps */ | |
1089 | # endif | |
1090 | ||
1091 | /* avoid m_flags conflict between db.h & sys/sysmacros.h on HIUX 3050 */ | |
1092 | # undef m_flags | |
1093 | ||
1094 | # ifdef __STDC__ | |
1095 | extern int syslog(int, char *, ...); | |
1096 | # endif | |
1097 | ||
1098 | #endif | |
1099 | ||
1100 | ||
3a15d11b EA |
1101 | /* |
1102 | ** Amdahl UTS System V 2.1.5 (SVr3-based) | |
1103 | ** | |
1104 | ** From: Janet Jackson <janet@dialix.oz.au>. | |
1105 | */ | |
1106 | ||
1107 | #ifdef _UTS | |
1108 | # include <sys/sysmacros.h> | |
a40faef5 | 1109 | # undef HASLSTAT /* has symlinks, but they cause problems */ |
3a15d11b EA |
1110 | # define NEEDFSYNC 1 /* system fsync(2) fails on non-EFS filesys */ |
1111 | # define SYS5SIGNALS 1 /* System V signal semantics */ | |
1112 | # define SYS5SETPGRP 1 /* use System V setpgrp(2) syscall */ | |
1113 | # define HASUNAME 1 /* use System V uname(2) system call */ | |
1114 | # define HASINITGROUPS 1 /* has initgroups(3) function */ | |
1115 | # define HASSETVBUF 1 /* has setvbuf(3) function */ | |
1116 | # define HASSIGSETMASK 0 /* does not have sigsetmask(2) function */ | |
1117 | # ifndef HASGETUSERSHELL | |
1118 | # define HASGETUSERSHELL 0 /* does not have getusershell(3) function */ | |
1119 | # endif | |
1120 | # define GIDSET_T gid_t /* type of 2nd arg to getgroups(2) isn't int */ | |
1121 | # define LA_TYPE LA_ZERO /* doesn't have load average */ | |
1122 | # define SFS_TYPE SFS_4ARGS /* use 4-arg statfs() */ | |
b2b48b69 | 1123 | # define SFS_BAVAIL f_bfree /* alternate field name */ |
4e93bc5c EA |
1124 | # define _PATH_UNIX "/unix" |
1125 | # define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" | |
3a15d11b EA |
1126 | #endif |
1127 | ||
1ead4c2f EA |
1128 | /* |
1129 | ** Cray Computer Corporation's CSOS | |
1130 | ** | |
297d9fc9 | 1131 | ** From Scott Bolte <scott@craycos.com>. |
1ead4c2f | 1132 | */ |
3a15d11b | 1133 | |
1ead4c2f EA |
1134 | #ifdef _CRAYCOM |
1135 | # define SYSTEM5 1 /* include all the System V defines */ | |
1136 | # define SYS5SIGNALS 1 /* SysV signal semantics -- reset on each sig */ | |
1137 | # define NEEDFSYNC 1 /* no fsync in system library */ | |
1138 | # define MAXPATHLEN PATHSIZE | |
1139 | # define LA_TYPE LA_ZERO | |
1140 | # define SFS_TYPE SFS_4ARGS /* four argument statfs() call */ | |
b2b48b69 | 1141 | # define SFS_BAVAIL f_bfree /* alternate field name */ |
1ead4c2f EA |
1142 | # define _POSIX_CHOWN_RESTRICTED -1 |
1143 | extern struct group *getgrent(), *getgrnam(), *getgrgid(); | |
1144 | #endif | |
3a15d11b | 1145 | |
178464cb | 1146 | |
550fee58 EA |
1147 | /* |
1148 | ** Sony NEWS-OS 4.2.1R and 6.0.3 | |
297d9fc9 EA |
1149 | ** |
1150 | ** From Motonori NAKAMURA <motonori@cs.ritsumei.ac.jp>. | |
550fee58 EA |
1151 | */ |
1152 | ||
1153 | #ifdef sony_news | |
1154 | # ifndef __svr4 | |
1155 | /* NEWS-OS 4.2.1R */ | |
1156 | # ifndef BSD | |
1157 | # define BSD /* has BSD routines */ | |
1158 | # endif | |
1159 | # define HASUNSETENV 1 /* has unsetenv(2) call */ | |
1160 | # undef HASSETVBUF /* don't actually have setvbuf(3) */ | |
1161 | # define WAITUNION 1 /* use "union wait" as wait argument type */ | |
1162 | # define LA_TYPE LA_INT | |
1163 | # define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() implementation */ | |
1164 | # ifndef HASFLOCK | |
1165 | # define HASFLOCK 1 /* has flock(2) call */ | |
1166 | # endif | |
1167 | # define setpgid setpgrp | |
1168 | # undef WIFEXITED | |
1169 | # undef WEXITSTATUS | |
1170 | typedef int pid_t; | |
1171 | typedef int (*sigfunc_t)(); | |
1172 | # define SIGFUNC_DEFINED | |
1173 | ||
1174 | # else | |
1175 | /* NEWS-OS 6.0.3 with /bin/cc */ | |
bd8680d1 EA |
1176 | # ifndef __svr4__ |
1177 | # define __svr4__ /* use all System V Releae 4 defines below */ | |
1178 | # endif | |
550fee58 EA |
1179 | # define HASSETSID 1 /* has Posix setsid(2) call */ |
1180 | # define HASGETUSERSHELL 1 /* DOES have getusershell(3) call in libc */ | |
297d9fc9 | 1181 | # define LA_TYPE LA_READKSYM /* use MIOC_READKSYM ioctl */ |
d66e21c5 EA |
1182 | # ifndef SPT_TYPE |
1183 | # define SPT_TYPE SPT_SYSMIPS /* use sysmips() (OS 6.0.2 or later) */ | |
1184 | # endif | |
550fee58 | 1185 | # define GIDSET_T gid_t |
550fee58 EA |
1186 | # undef WIFEXITED |
1187 | # undef WEXITSTATUS | |
bd8680d1 EA |
1188 | # ifndef SYSLOG_BUFSIZE |
1189 | # define SYSLOG_BUFSIZE 1024 | |
1190 | # endif | |
4e93bc5c EA |
1191 | # define _PATH_UNIX "/stand/unix" |
1192 | # define _PATH_VENDOR_CF "/etc/mail/sendmail.cf" | |
550fee58 EA |
1193 | # ifndef _PATH_SENDMAILPID |
1194 | # define _PATH_SENDMAILPID "/etc/mail/sendmail.pid" | |
1195 | # endif | |
1196 | ||
1197 | # endif | |
1198 | #endif | |
1199 | ||
1200 | ||
1201 | /* | |
1202 | ** Omron LUNA/UNIOS-B 3.0, LUNA2/Mach and LUNA88K Mach | |
297d9fc9 EA |
1203 | ** |
1204 | ** From Motonori NAKAMURA <motonori@cs.ritsumei.ac.jp>. | |
550fee58 EA |
1205 | */ |
1206 | ||
1207 | #ifdef luna | |
1208 | # ifndef IDENTPROTO | |
1209 | # define IDENTPROTO 0 /* TCP/IP implementation is broken */ | |
1210 | # endif | |
1211 | # ifdef uniosb | |
ca5a4f7e | 1212 | # include <sys/time.h> |
550fee58 EA |
1213 | # define NEEDVPRINTF 1 /* need a replacement for vprintf(3) */ |
1214 | # endif | |
d66e21c5 EA |
1215 | # define HASUNSETENV 1 /* has unsetenv(2) call */ |
1216 | # define NEEDPUTENV 1 /* need putenv(3) call */ | |
550fee58 | 1217 | # define NEEDGETOPT 1 /* need a replacement for getopt(3) */ |
2fca0e18 | 1218 | # define NEEDSTRSTR 1 /* need emulation of the strstr(3) call */ |
550fee58 EA |
1219 | # define WAITUNION 1 /* use "union wait" as wait argument type */ |
1220 | # ifdef uniosb | |
1221 | # define LA_TYPE LA_INT | |
1222 | # endif | |
1223 | # ifdef luna2m | |
1224 | # define LA_TYPE LA_SUBR | |
1225 | # endif | |
1226 | # ifdef luna88k | |
1227 | # define LA_TYPE LA_INT | |
1228 | # endif | |
1229 | # define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() implementation */ | |
1230 | # define setpgid setpgrp | |
1231 | # undef WIFEXITED | |
1232 | # undef WEXITSTATUS | |
1233 | typedef int pid_t; | |
1234 | typedef int (*sigfunc_t)(); | |
1235 | # define SIGFUNC_DEFINED | |
1236 | extern char *getenv(); | |
1237 | extern int errno; | |
4e93bc5c | 1238 | # define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" |
550fee58 EA |
1239 | #endif |
1240 | ||
1241 | ||
1242 | /* | |
297d9fc9 | 1243 | ** NEC EWS-UX/V 4.2 (with /usr/ucb/cc) |
550fee58 | 1244 | ** |
297d9fc9 | 1245 | ** From Motonori NAKAMURA <motonori@cs.ritsumei.ac.jp>. |
550fee58 EA |
1246 | */ |
1247 | ||
1248 | #ifdef nec_ews_svr4 | |
ca5a4f7e EA |
1249 | # ifndef __svr4__ |
1250 | # define __svr4__ /* use all System V Releae 4 defines below */ | |
1251 | # endif | |
550fee58 | 1252 | # define SYS5SIGNALS 1 /* SysV signal semantics -- reset on each sig */ |
550fee58 | 1253 | # define HASSETSID 1 /* has Posix setsid(2) call */ |
297d9fc9 | 1254 | # define LA_TYPE LA_READKSYM /* use MIOC_READSYM ioctl */ |
550fee58 EA |
1255 | # define SFS_TYPE SFS_USTAT /* use System V ustat(2) syscall */ |
1256 | # define GIDSET_T gid_t | |
550fee58 EA |
1257 | # undef WIFEXITED |
1258 | # undef WEXITSTATUS | |
ca5a4f7e | 1259 | # define NAMELISTMASK 0x7fffffff /* mask for nlist() values */ |
550fee58 EA |
1260 | #endif |
1261 | ||
1262 | ||
1263 | ||
ba6514e2 | 1264 | /********************************************************************** |
fd57f063 | 1265 | ** End of Per-Operating System defines |
ba6514e2 | 1266 | **********************************************************************/ |
04c2baef | 1267 | \f/********************************************************************** |
b4cd00ff EA |
1268 | ** More general defines |
1269 | **********************************************************************/ | |
1270 | ||
33d59d37 EA |
1271 | /* general BSD defines */ |
1272 | #ifdef BSD | |
39270cfd EA |
1273 | # define HASGETDTABLESIZE 1 /* has getdtablesize(2) call */ |
1274 | # define HASSETREUID 1 /* has setreuid(2) call */ | |
1d560021 | 1275 | # define HASINITGROUPS 1 /* has initgroups(3) call */ |
d947d433 EA |
1276 | # ifndef IP_SRCROUTE |
1277 | # define IP_SRCROUTE 1 /* can check IP source routing */ | |
1278 | # endif | |
230ac0bd EA |
1279 | # ifndef HASSETRLIMIT |
1280 | # define HASSETRLIMIT 1 /* has setrlimit(2) call */ | |
1281 | # endif | |
72af7ebb EA |
1282 | # ifndef HASFLOCK |
1283 | # define HASFLOCK 1 /* has flock(2) call */ | |
1284 | # endif | |
a2ba2f44 | 1285 | # ifndef TZ_TYPE |
f7311261 | 1286 | # define TZ_TYPE TZ_TM_ZONE /* use tm->tm_zone variable */ |
a2ba2f44 | 1287 | # endif |
33d59d37 EA |
1288 | #endif |
1289 | ||
f361504a EA |
1290 | /* general System V Release 4 defines */ |
1291 | #ifdef __svr4__ | |
1292 | # define SYSTEM5 1 | |
04c2baef | 1293 | # define USESETEUID 1 /* has useable seteuid(2) call */ |
1d560021 | 1294 | # define HASINITGROUPS 1 /* has initgroups(3) call */ |
8ffabadc | 1295 | # define BSD_COMP 1 /* get BSD ioctl calls */ |
1d560021 EA |
1296 | # ifndef HASSETRLIMIT |
1297 | # define HASSETRLIMIT 1 /* has setrlimit(2) call */ | |
1298 | # endif | |
1ee33f7d EA |
1299 | # ifndef HASGETUSERSHELL |
1300 | # define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ | |
9ceb18fe | 1301 | # endif |
f361504a EA |
1302 | |
1303 | # ifndef _PATH_UNIX | |
1304 | # define _PATH_UNIX "/unix" | |
1305 | # endif | |
4e93bc5c | 1306 | # define _PATH_VENDOR_CF "/usr/ucblib/sendmail.cf" |
f361504a EA |
1307 | # ifndef _PATH_SENDMAILPID |
1308 | # define _PATH_SENDMAILPID "/usr/ucblib/sendmail.pid" | |
1309 | # endif | |
1310 | # ifndef SYSLOG_BUFSIZE | |
1311 | # define SYSLOG_BUFSIZE 128 | |
1312 | # endif | |
25e2468c EA |
1313 | # ifndef SFS_TYPE |
1314 | # define SFS_TYPE SFS_STATVFS | |
1315 | # endif | |
f361504a EA |
1316 | #endif |
1317 | ||
fd57f063 | 1318 | /* general System V defines */ |
402003b1 | 1319 | #ifdef SYSTEM5 |
8988dfd3 | 1320 | # include <sys/sysmacros.h> |
b4cd00ff | 1321 | # define HASUNAME 1 /* use System V uname(2) system call */ |
82530719 | 1322 | # define SYS5SETPGRP 1 /* use System V setpgrp(2) syscall */ |
c6bd47b4 | 1323 | # define HASSETVBUF 1 /* we have setvbuf(3) in libc */ |
230ac0bd EA |
1324 | # ifndef HASULIMIT |
1325 | # define HASULIMIT 1 /* has the ulimit(2) syscall */ | |
1326 | # endif | |
33d59d37 | 1327 | # ifndef LA_TYPE |
b5aacac9 EA |
1328 | # ifdef MIOC_READKSYM |
1329 | # define LA_TYPE LA_READKSYM /* use MIOC_READKSYM ioctl */ | |
1330 | # else | |
1331 | # define LA_TYPE LA_INT /* assume integer load average */ | |
1332 | # endif | |
5e0e0f8f EA |
1333 | # endif |
1334 | # ifndef SFS_TYPE | |
1335 | # define SFS_TYPE SFS_USTAT /* use System V ustat(2) syscall */ | |
33d59d37 | 1336 | # endif |
a2ba2f44 | 1337 | # ifndef TZ_TYPE |
f7311261 | 1338 | # define TZ_TYPE TZ_TZNAME /* use tzname[] vector */ |
a2ba2f44 | 1339 | # endif |
e3a8e3e0 EA |
1340 | # define bcopy(s, d, l) (memmove((d), (s), (l))) |
1341 | # define bzero(d, l) (memset((d), '\0', (l))) | |
1342 | # define bcmp(s, d, l) (memcmp((s), (d), (l))) | |
402003b1 | 1343 | #endif |
fd57f063 | 1344 | |
b4cd00ff EA |
1345 | /* general POSIX defines */ |
1346 | #ifdef _POSIX_VERSION | |
fe3849ea EA |
1347 | # define HASSETSID 1 /* has Posix setsid(2) call */ |
1348 | # define HASWAITPID 1 /* has Posix waitpid(2) call */ | |
04c2baef EA |
1349 | # if _POSIX_VERSION >= 199500 && !defined(USESETEUID) |
1350 | # define USESETEUID 1 /* has useable seteuid(2) call */ | |
1351 | # endif | |
b4cd00ff | 1352 | #endif |
04c2baef | 1353 | \f/* |
1ead4c2f EA |
1354 | ** Tweaking for systems that (for example) claim to be BSD or POSIX |
1355 | ** but don't have all the standard BSD or POSIX routines (boo hiss). | |
31c3ae15 EA |
1356 | */ |
1357 | ||
1358 | #ifdef titan | |
1359 | # undef HASINITGROUPS /* doesn't have initgroups(3) call */ | |
1360 | #endif | |
1361 | ||
1ead4c2f EA |
1362 | #ifdef _CRAYCOM |
1363 | # undef HASSETSID /* despite POSIX claim, doesn't have setsid */ | |
1364 | #endif | |
1365 | ||
e3a8e3e0 EA |
1366 | #ifdef ISC_UNIX |
1367 | # undef bcopy /* despite SystemV claim, uses BSD bcopy */ | |
1368 | #endif | |
1369 | ||
1370 | #ifdef ALTOS_SYS_V | |
1371 | # undef bcopy /* despite SystemV claim, uses BSD bcopy */ | |
1372 | # undef bzero /* despite SystemV claim, uses BSD bzero */ | |
1373 | # undef bcmp /* despite SystemV claim, uses BSD bcmp */ | |
1374 | #endif | |
1375 | ||
72af7ebb | 1376 | |
a74fd615 EA |
1377 | /* |
1378 | ** Due to a "feature" in some operating systems such as Ultrix 4.3 and | |
1379 | ** HPUX 8.0, if you receive a "No route to host" message (ICMP message | |
1380 | ** ICMP_UNREACH_HOST) on _any_ connection, all connections to that host | |
1381 | ** are closed. Some firewalls return this error if you try to connect | |
1382 | ** to the IDENT port (113), so you can't receive email from these hosts | |
1383 | ** on these systems. The firewall really should use a more specific | |
1384 | ** message such as ICMP_UNREACH_PROTOCOL or _PORT or _NET_PROHIB. If | |
1385 | ** not explicitly set to zero above, default it on. | |
1386 | */ | |
1387 | ||
1388 | #ifndef IDENTPROTO | |
1389 | # define IDENTPROTO 1 /* use IDENT proto (RFC 1413) */ | |
1390 | #endif | |
1391 | ||
298b05de EA |
1392 | #ifndef IP_SRCROUTE |
1393 | # define IP_SRCROUTE 1 /* Detect IP source routing */ | |
1394 | #endif | |
1395 | ||
1ee33f7d EA |
1396 | #ifndef HASGETUSERSHELL |
1397 | # define HASGETUSERSHELL 1 /* libc has getusershell(3) call */ | |
9ceb18fe EA |
1398 | #endif |
1399 | ||
a40faef5 EA |
1400 | #ifndef NETUNIX |
1401 | # define NETUNIX 1 /* include unix domain support */ | |
1402 | #endif | |
1403 | ||
72af7ebb EA |
1404 | #ifndef HASFLOCK |
1405 | # define HASFLOCK 0 /* assume no flock(2) support */ | |
1406 | #endif | |
1407 | ||
04c2baef EA |
1408 | #ifndef HASSETREUID |
1409 | # define HASSETREUID 0 /* assume no setreuid(2) call */ | |
1410 | #endif | |
1411 | ||
1412 | #ifndef USESETEUID | |
1413 | # define USESETEUID 0 /* assume no seteuid(2) call or no saved ids */ | |
1414 | #endif | |
1415 | ||
230ac0bd EA |
1416 | #ifndef HASSETRLIMIT |
1417 | # define HASSETRLIMIT 0 /* assume no setrlimit(2) support */ | |
1418 | #endif | |
1419 | ||
1420 | #ifndef HASULIMIT | |
1421 | # define HASULIMIT 0 /* assume no ulimit(2) support */ | |
1422 | #endif | |
1423 | ||
11c14c72 EA |
1424 | #ifndef OLD_NEWDB |
1425 | # define OLD_NEWDB 0 /* assume newer version of newdb */ | |
1426 | #endif | |
1427 | ||
3a15d11b EA |
1428 | /* heuristic setting of HASSETSIGMASK; can override above */ |
1429 | #ifndef HASSIGSETMASK | |
1430 | # ifdef SIGVTALRM | |
1431 | # define HASSETSIGMASK 1 | |
1432 | # else | |
1433 | # define HASSETSIGMASK 0 | |
1434 | # endif | |
1435 | #endif | |
1436 | ||
04c2baef EA |
1437 | /* |
1438 | ** If no type for argument two of getgroups call is defined, assume | |
1439 | ** it's an integer -- unfortunately, there seem to be several choices | |
1440 | ** here. | |
1441 | */ | |
1442 | ||
1443 | #ifndef GIDSET_T | |
1444 | # define GIDSET_T int | |
1445 | #endif | |
1446 | ||
782a2f97 EA |
1447 | #ifndef UID_T |
1448 | # define UID_T uid_t | |
1449 | #endif | |
1450 | ||
2604d017 EA |
1451 | #ifndef SIZE_T |
1452 | # define SIZE_T size_t | |
1453 | #endif | |
1454 | ||
782a2f97 EA |
1455 | #ifndef ARGV_T |
1456 | # define ARGV_T char ** | |
1457 | #endif | |
d947d433 | 1458 | \f/********************************************************************** |
e6245c7e EA |
1459 | ** Remaining definitions should never have to be changed. They are |
1460 | ** primarily to provide back compatibility for older systems -- for | |
6070681d | 1461 | ** example, it includes some POSIX compatibility definitions |
2295903c | 1462 | **********************************************************************/ |
e6245c7e | 1463 | |
bd3dddbf EA |
1464 | /* System 5 compatibility */ |
1465 | #ifndef S_ISREG | |
fce21cb9 EA |
1466 | # define S_ISREG(foo) ((foo & S_IFMT) == S_IFREG) |
1467 | #endif | |
1468 | #if !defined(S_ISLNK) && defined(S_IFLNK) | |
1469 | # define S_ISLNK(foo) ((foo & S_IFMT) == S_IFLNK) | |
bd3dddbf | 1470 | #endif |
d52f8819 EA |
1471 | #ifndef S_IWUSR |
1472 | # define S_IWUSR 0200 | |
1473 | #endif | |
bd3dddbf | 1474 | #ifndef S_IWGRP |
d52f8819 | 1475 | # define S_IWGRP 0020 |
bd3dddbf EA |
1476 | #endif |
1477 | #ifndef S_IWOTH | |
d52f8819 | 1478 | # define S_IWOTH 0002 |
bd3dddbf EA |
1479 | #endif |
1480 | ||
030ae776 EA |
1481 | /* |
1482 | ** Older systems don't have this error code -- it should be in | |
1483 | ** /usr/include/sysexits.h. | |
1484 | */ | |
1485 | ||
1486 | # ifndef EX_CONFIG | |
1487 | # define EX_CONFIG 78 /* configuration error */ | |
1488 | # endif | |
5229f34d | 1489 | |
fe3849ea EA |
1490 | /* pseudo-code used in server SMTP */ |
1491 | # define EX_QUIT 22 /* drop out of server immediately */ | |
1492 | ||
1493 | ||
92f2b65e EA |
1494 | /* |
1495 | ** These are used in a few cases where we need some special | |
1496 | ** error codes, but where the system doesn't provide something | |
1497 | ** reasonable. They are printed in errstring. | |
1498 | */ | |
1499 | ||
1500 | #ifndef E_PSEUDOBASE | |
1501 | # define E_PSEUDOBASE 256 | |
1502 | #endif | |
1503 | ||
1504 | #define EOPENTIMEOUT (E_PSEUDOBASE + 0) /* timeout on open */ | |
1505 | #define E_DNSBASE (E_PSEUDOBASE + 20) /* base for DNS h_errno */ | |
1506 | ||
0639fd0c EA |
1507 | /* type of arbitrary pointer */ |
1508 | #ifndef ARBPTR_T | |
1509 | # define ARBPTR_T void * | |
1510 | #endif | |
1511 | ||
ed0b2c1b EA |
1512 | #ifndef __P |
1513 | # include "cdefs.h" | |
1514 | #endif | |
1515 | ||
648eb46e EA |
1516 | #if NAMED_BIND |
1517 | # include <arpa/nameser.h> | |
264ee34f EA |
1518 | # ifdef __svr4__ |
1519 | # ifdef NOERROR | |
1520 | # undef NOERROR /* avoid compiler conflict with stream.h */ | |
1521 | # endif | |
1522 | # endif | |
648eb46e EA |
1523 | #endif |
1524 | ||
d2dc4dd0 EA |
1525 | /* |
1526 | ** The size of an IP address -- can't use sizeof because of problems | |
1527 | ** on Crays, where everything is 64 bits. This will break if/when | |
1528 | ** IP addresses are expanded to eight bytes. | |
1529 | */ | |
1530 | ||
648eb46e EA |
1531 | #ifndef INADDRSZ |
1532 | # define INADDRSZ 4 | |
1533 | #endif | |
1534 | ||
1535 | /* | |
1536 | ** The size of various known types -- for reading network protocols. | |
1537 | ** Again, we can't use sizeof because of compiler randomness. | |
1538 | */ | |
1539 | ||
1540 | #ifndef INT16SZ | |
1541 | # define INT16SZ 2 | |
1542 | #endif | |
1543 | #ifndef INT32SZ | |
1544 | # define INT32SZ 4 | |
1545 | #endif | |
d2dc4dd0 | 1546 | |
3356c77c EA |
1547 | /* |
1548 | ** Do some required dependencies | |
1549 | */ | |
1550 | ||
1551 | #if defined(NETINET) || defined(NETISO) | |
e9aa7870 EA |
1552 | # define SMTP 1 /* enable user and server SMTP */ |
1553 | # define QUEUE 1 /* enable queueing */ | |
1554 | # define DAEMON 1 /* include the daemon (requires IPC & SMTP) */ | |
3356c77c EA |
1555 | #endif |
1556 | ||
1557 | ||
5229f34d EA |
1558 | /* |
1559 | ** Arrange to use either varargs or stdargs | |
1560 | */ | |
1561 | ||
1562 | # ifdef __STDC__ | |
1563 | ||
1564 | # include <stdarg.h> | |
1565 | ||
5229f34d EA |
1566 | # define VA_LOCAL_DECL va_list ap; |
1567 | # define VA_START(f) va_start(ap, f) | |
1568 | # define VA_END va_end(ap) | |
1569 | ||
1570 | # else | |
1571 | ||
1572 | # include <varargs.h> | |
1573 | ||
5229f34d EA |
1574 | # define VA_LOCAL_DECL va_list ap; |
1575 | # define VA_START(f) va_start(ap) | |
1576 | # define VA_END va_end(ap) | |
1577 | ||
1578 | # endif | |
422bed79 | 1579 | |
322eceee | 1580 | #ifdef HASUNAME |
422bed79 EA |
1581 | # include <sys/utsname.h> |
1582 | # ifdef newstr | |
1583 | # undef newstr | |
1584 | # endif | |
322eceee | 1585 | #else /* ! HASUNAME */ |
422bed79 EA |
1586 | # define NODE_LENGTH 32 |
1587 | struct utsname | |
1588 | { | |
1589 | char nodename[NODE_LENGTH+1]; | |
1590 | }; | |
322eceee | 1591 | #endif /* HASUNAME */ |
6e99f903 | 1592 | |
4d645e29 | 1593 | #if !defined(MAXHOSTNAMELEN) && !defined(_SCO_unix_) && !defined(NonStop_UX_BXX) && !defined(ALTOS_SYS_V) |
7621e399 | 1594 | # define MAXHOSTNAMELEN 256 |
8d3fd325 | 1595 | #endif |
49c069a9 EA |
1596 | |
1597 | #if !defined(SIGCHLD) && defined(SIGCLD) | |
1598 | # define SIGCHLD SIGCLD | |
1599 | #endif | |
1600 | ||
1601 | #ifndef STDIN_FILENO | |
550fee58 | 1602 | # define STDIN_FILENO 0 |
49c069a9 EA |
1603 | #endif |
1604 | ||
1605 | #ifndef STDOUT_FILENO | |
550fee58 | 1606 | # define STDOUT_FILENO 1 |
49c069a9 EA |
1607 | #endif |
1608 | ||
1609 | #ifndef STDERR_FILENO | |
550fee58 | 1610 | # define STDERR_FILENO 2 |
49c069a9 | 1611 | #endif |
f8a31c8e | 1612 | |
0f786d57 | 1613 | #ifndef LOCK_SH |
39270cfd EA |
1614 | # define LOCK_SH 0x01 /* shared lock */ |
1615 | # define LOCK_EX 0x02 /* exclusive lock */ | |
1616 | # define LOCK_NB 0x04 /* non-blocking lock */ | |
1617 | # define LOCK_UN 0x08 /* unlock */ | |
1618 | #endif | |
64247676 | 1619 | |
550fee58 EA |
1620 | #ifndef SEEK_SET |
1621 | # define SEEK_SET 0 | |
1622 | # define SEEK_CUR 1 | |
1623 | # define SEEK_END 2 | |
1624 | #endif | |
1625 | ||
39270cfd EA |
1626 | #ifndef SIG_ERR |
1627 | # define SIG_ERR ((void (*)()) -1) | |
f8a31c8e | 1628 | #endif |
a3685d83 | 1629 | |
0349f8cc EA |
1630 | #ifndef WEXITSTATUS |
1631 | # define WEXITSTATUS(st) (((st) >> 8) & 0377) | |
1632 | #endif | |
1633 | #ifndef WIFEXITED | |
1634 | # define WIFEXITED(st) (((st) & 0377) == 0) | |
1635 | #endif | |
1636 | ||
53335960 EA |
1637 | #ifndef SIGFUNC_DEFINED |
1638 | typedef void (*sigfunc_t) __P((int)); | |
1639 | #endif | |
1640 | ||
7cfc9c77 EA |
1641 | /* size of syslog buffer */ |
1642 | #ifndef SYSLOG_BUFSIZE | |
1643 | # define SYSLOG_BUFSIZE 1024 | |
1644 | #endif | |
1645 | ||
a3685d83 EA |
1646 | /* |
1647 | ** Size of tobuf (deliver.c) | |
1648 | ** Tweak this to match your syslog implementation. It will have to | |
1649 | ** allow for the extra information printed. | |
1650 | */ | |
1651 | ||
1652 | #ifndef TOBUFSIZE | |
7cfc9c77 EA |
1653 | # if (SYSLOG_BUFSIZE) > 512 |
1654 | # define TOBUFSIZE (SYSLOG_BUFSIZE - 256) | |
1655 | # else | |
1656 | # define TOBUFSIZE 256 | |
1657 | # endif | |
a3685d83 | 1658 | #endif |
9114f86c | 1659 | |
77779257 EA |
1660 | /* |
1661 | ** Size of prescan buffer. | |
1662 | ** Despite comments in the _sendmail_ book, this probably should | |
1663 | ** not be changed; there are some hard-to-define dependencies. | |
1664 | */ | |
1665 | ||
1666 | # define PSBUFSIZE (MAXNAME + MAXATOM) /* size of prescan buffer */ | |
9114f86c EA |
1667 | /* fork routine -- set above using #ifdef _osname_ or in Makefile */ |
1668 | # ifndef FORK | |
1669 | # define FORK vfork /* function to call to fork mailer */ | |
1670 | # endif | |
5e0139e6 EA |
1671 | |
1672 | /* | |
4e93bc5c | 1673 | ** Default to using scanf in readcf. |
5e0139e6 EA |
1674 | */ |
1675 | ||
4e93bc5c | 1676 | #ifndef SCANF |
5e0139e6 EA |
1677 | # define SCANF 1 |
1678 | #endif |