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