xref: /freebsd/contrib/sendmail/src/conf.h (revision e01d6f6164d26cbad2f5ce30c2d755c57da9b354)
1c2aa98e2SPeter Wemm /*
2c2aa98e2SPeter Wemm  * Copyright (c) 1998 Sendmail, Inc.  All rights reserved.
3c2aa98e2SPeter Wemm  * Copyright (c) 1983, 1995-1997 Eric P. Allman.  All rights reserved.
4c2aa98e2SPeter Wemm  * Copyright (c) 1988, 1993
5c2aa98e2SPeter Wemm  *	The Regents of the University of California.  All rights reserved.
6c2aa98e2SPeter Wemm  *
7c2aa98e2SPeter Wemm  * By using this file, you agree to the terms and conditions set
8c2aa98e2SPeter Wemm  * forth in the LICENSE file which can be found at the top level of
9c2aa98e2SPeter Wemm  * the sendmail distribution.
10c2aa98e2SPeter Wemm  *
11c2aa98e2SPeter Wemm  *
12e01d6f61SPeter Wemm  *	@(#)conf.h	8.385 (Berkeley) 1/28/1999
13c2aa98e2SPeter Wemm  */
14c2aa98e2SPeter Wemm 
15c2aa98e2SPeter Wemm /*
16c2aa98e2SPeter Wemm **  CONF.H -- All user-configurable parameters for sendmail
17c2aa98e2SPeter Wemm **
18c2aa98e2SPeter Wemm **	Send updates to sendmail@Sendmail.ORG so they will be
19c2aa98e2SPeter Wemm **	included in the next release.
20c2aa98e2SPeter Wemm */
21c2aa98e2SPeter Wemm 
22c2aa98e2SPeter Wemm #ifdef __GNUC__
23c2aa98e2SPeter Wemm struct rusage;	/* forward declaration to get gcc to shut up in wait.h */
24c2aa98e2SPeter Wemm #endif
25c2aa98e2SPeter Wemm 
26c2aa98e2SPeter Wemm # include <sys/param.h>
27c2aa98e2SPeter Wemm # include <sys/types.h>
28c2aa98e2SPeter Wemm # include <sys/stat.h>
29c2aa98e2SPeter Wemm #ifndef __QNX__
30c2aa98e2SPeter Wemm /* in QNX this grabs bogus LOCK_* manifests */
31c2aa98e2SPeter Wemm # include <sys/file.h>
32c2aa98e2SPeter Wemm #endif
33c2aa98e2SPeter Wemm # include <sys/wait.h>
34c2aa98e2SPeter Wemm # include <limits.h>
35c2aa98e2SPeter Wemm # include <fcntl.h>
36c2aa98e2SPeter Wemm # include <signal.h>
37c2aa98e2SPeter Wemm # include <netdb.h>
38c2aa98e2SPeter Wemm # include <pwd.h>
39c2aa98e2SPeter Wemm 
40c2aa98e2SPeter Wemm /**********************************************************************
41c2aa98e2SPeter Wemm **  Table sizes, etc....
42c2aa98e2SPeter Wemm **	There shouldn't be much need to change these....
43c2aa98e2SPeter Wemm **********************************************************************/
44c2aa98e2SPeter Wemm 
45c2aa98e2SPeter Wemm # define MAXLINE	2048		/* max line length */
46c2aa98e2SPeter Wemm # define MAXNAME	256		/* max length of a name */
47c2aa98e2SPeter Wemm # define MAXPV		40		/* max # of parms to mailers */
48c2aa98e2SPeter Wemm # define MAXATOM	200		/* max atoms per address */
49c2aa98e2SPeter Wemm # define MAXMAILERS	25		/* maximum mailers known to system */
50c2aa98e2SPeter Wemm # define MAXRWSETS	200		/* max # of sets of rewriting rules */
51c2aa98e2SPeter Wemm # define MAXPRIORITIES	25		/* max values for Precedence: field */
52c2aa98e2SPeter Wemm # define MAXMXHOSTS	100		/* max # of MX records for one host */
53c2aa98e2SPeter Wemm # define SMTPLINELIM	990		/* maximum SMTP line length */
54c2aa98e2SPeter Wemm # define MAXKEY		128		/* maximum size of a database key */
55c2aa98e2SPeter Wemm # define MEMCHUNKSIZE	1024		/* chunk size for memory allocation */
56c2aa98e2SPeter Wemm # define MAXUSERENVIRON	100		/* max envars saved, must be >= 3 */
57c2aa98e2SPeter Wemm # define MAXALIASDB	12		/* max # of alias databases */
58c2aa98e2SPeter Wemm # define MAXMAPSTACK	12		/* max # of stacked or sequenced maps */
59c2aa98e2SPeter Wemm # define MAXTOCLASS	8		/* max # of message timeout classes */
60c2aa98e2SPeter Wemm # define MAXMIMEARGS	20		/* max args in Content-Type: */
61c2aa98e2SPeter Wemm # define MAXMIMENESTING	20		/* max MIME multipart nesting */
62c2aa98e2SPeter Wemm # define QUEUESEGSIZE	1000		/* increment for queue size */
63c2aa98e2SPeter Wemm # define MAXQFNAME	20		/* max qf file name length */
64c2aa98e2SPeter Wemm # define MACBUFSIZE	4096		/* max expanded macro buffer size */
65c2aa98e2SPeter Wemm # define TOBUFSIZE	512		/* max buffer to hold address list */
66c2aa98e2SPeter Wemm # define MAXSHORTSTR	203		/* max short string length */
6776b7bf71SPeter Wemm # if _FFR_MAX_MIME_HEADER_LENGTH
6876b7bf71SPeter Wemm #  define MAXMACNAMELEN	25		/* max macro name length */
6976b7bf71SPeter Wemm # else
7076b7bf71SPeter Wemm #  define MAXMACNAMELEN	20		/* max macro name length */
7176b7bf71SPeter Wemm # endif
72e01d6f61SPeter Wemm # ifndef MAXHDRSLEN
73e01d6f61SPeter Wemm #  define MAXHDRSLEN	(32 * 1024)	/* max size of message headers */
74a9d02288SPeter Wemm # endif
75c2aa98e2SPeter Wemm 
76c2aa98e2SPeter Wemm /**********************************************************************
77c2aa98e2SPeter Wemm **  Compilation options.
78c2aa98e2SPeter Wemm **	#define these to 1 if they are available;
79c2aa98e2SPeter Wemm **	#define them to 0 otherwise.
80c2aa98e2SPeter Wemm **  All can be overridden from Makefile.
81c2aa98e2SPeter Wemm **********************************************************************/
82c2aa98e2SPeter Wemm 
83c2aa98e2SPeter Wemm # ifndef NETINET
84c2aa98e2SPeter Wemm #  define NETINET	1	/* include internet support */
85c2aa98e2SPeter Wemm # endif
86c2aa98e2SPeter Wemm 
87c2aa98e2SPeter Wemm # ifndef NETISO
88c2aa98e2SPeter Wemm #  define NETISO	0	/* do not include ISO socket support */
89c2aa98e2SPeter Wemm # endif
90c2aa98e2SPeter Wemm 
91c2aa98e2SPeter Wemm # ifndef NAMED_BIND
92c2aa98e2SPeter Wemm #  define NAMED_BIND	1	/* use Berkeley Internet Domain Server */
93c2aa98e2SPeter Wemm # endif
94c2aa98e2SPeter Wemm 
95c2aa98e2SPeter Wemm # ifndef XDEBUG
96c2aa98e2SPeter Wemm #  define XDEBUG	1	/* enable extended debugging */
97c2aa98e2SPeter Wemm # endif
98c2aa98e2SPeter Wemm 
99c2aa98e2SPeter Wemm # ifndef MATCHGECOS
100c2aa98e2SPeter Wemm #  define MATCHGECOS	1	/* match user names from gecos field */
101c2aa98e2SPeter Wemm # endif
102c2aa98e2SPeter Wemm 
103c2aa98e2SPeter Wemm # ifndef DSN
104c2aa98e2SPeter Wemm #  define DSN		1	/* include delivery status notification code */
105c2aa98e2SPeter Wemm # endif
106c2aa98e2SPeter Wemm 
107c2aa98e2SPeter Wemm # if !defined(USERDB) && (defined(NEWDB) || defined(HESIOD))
108c2aa98e2SPeter Wemm #  define USERDB	1	/* look in user database */
109c2aa98e2SPeter Wemm # endif
110c2aa98e2SPeter Wemm 
111c2aa98e2SPeter Wemm # ifndef MIME8TO7
112c2aa98e2SPeter Wemm #  define MIME8TO7	1	/* 8->7 bit MIME conversions */
113c2aa98e2SPeter Wemm # endif
114c2aa98e2SPeter Wemm 
115c2aa98e2SPeter Wemm # ifndef MIME7TO8
116c2aa98e2SPeter Wemm #  define MIME7TO8	1	/* 7->8 bit MIME conversions */
117c2aa98e2SPeter Wemm # endif
118c2aa98e2SPeter Wemm 
119c2aa98e2SPeter Wemm /**********************************************************************
120c2aa98e2SPeter Wemm **  "Hard" compilation options.
121c2aa98e2SPeter Wemm **	#define these if they are available; comment them out otherwise.
122c2aa98e2SPeter Wemm **  These cannot be overridden from the Makefile, and should really not
123c2aa98e2SPeter Wemm **  be turned off unless absolutely necessary.
124c2aa98e2SPeter Wemm **********************************************************************/
125c2aa98e2SPeter Wemm 
126c2aa98e2SPeter Wemm # define LOG		1	/* enable logging -- don't turn off */
127c2aa98e2SPeter Wemm 
128c2aa98e2SPeter Wemm /**********************************************************************
129c2aa98e2SPeter Wemm **  End of site-specific configuration.
130c2aa98e2SPeter Wemm **********************************************************************/
131c2aa98e2SPeter Wemm /*
132c2aa98e2SPeter Wemm **  General "standard C" defines.
133c2aa98e2SPeter Wemm **
134c2aa98e2SPeter Wemm **	These may be undone later, to cope with systems that claim to
135c2aa98e2SPeter Wemm **	be Standard C but aren't.  Gcc is the biggest offender -- it
136c2aa98e2SPeter Wemm **	doesn't realize that the library is part of the language.
137c2aa98e2SPeter Wemm **
138c2aa98e2SPeter Wemm **	Life would be much easier if we could get rid of this sort
139c2aa98e2SPeter Wemm **	of bozo problems.
140c2aa98e2SPeter Wemm */
141c2aa98e2SPeter Wemm 
142c2aa98e2SPeter Wemm #ifdef __STDC__
143c2aa98e2SPeter Wemm # define HASSETVBUF	1	/* we have setvbuf(3) in libc */
144c2aa98e2SPeter Wemm #endif
145c2aa98e2SPeter Wemm 
146c2aa98e2SPeter Wemm /*
147c2aa98e2SPeter Wemm **  Assume you have standard calls; can be #undefed below if necessary.
148c2aa98e2SPeter Wemm */
149c2aa98e2SPeter Wemm 
150c2aa98e2SPeter Wemm # define HASLSTAT	1	/* has lstat(2) call */
151c2aa98e2SPeter Wemm /**********************************************************************
152c2aa98e2SPeter Wemm **  Operating system configuration.
153c2aa98e2SPeter Wemm **
154c2aa98e2SPeter Wemm **	Unless you are porting to a new OS, you shouldn't have to
155c2aa98e2SPeter Wemm **	change these.
156c2aa98e2SPeter Wemm **********************************************************************/
157c2aa98e2SPeter Wemm 
158c2aa98e2SPeter Wemm /*
159c2aa98e2SPeter Wemm **  HP-UX -- tested for 8.07, 9.00, and 9.01.
160c2aa98e2SPeter Wemm **
161c2aa98e2SPeter Wemm **	If V4FS is defined, compile for HP-UX 10.0.
162c2aa98e2SPeter Wemm **	11.x support from Richard Allen <ra@hp.is>.
163c2aa98e2SPeter Wemm */
164c2aa98e2SPeter Wemm 
165c2aa98e2SPeter Wemm #ifdef __hpux
166c2aa98e2SPeter Wemm 		/* common definitions for HP-UX 9.x and 10.x */
167c2aa98e2SPeter Wemm # undef m_flags		/* conflict between Berkeley DB 1.85 db.h & sys/sysmacros.h on HP 300 */
168c2aa98e2SPeter Wemm # define SYSTEM5	1	/* include all the System V defines */
169c2aa98e2SPeter Wemm # define HASINITGROUPS	1	/* has initgroups(3) call */
170c2aa98e2SPeter Wemm # define HASFCHMOD	1	/* has fchmod(2) syscall */
171c2aa98e2SPeter Wemm # define USESETEUID	1	/* has useable seteuid(2) call */
172c2aa98e2SPeter Wemm # define BOGUS_O_EXCL	1	/* exclusive open follows symlinks */
173c2aa98e2SPeter Wemm # define seteuid(e)	setresuid(-1, e, -1)
174c2aa98e2SPeter Wemm # define IP_SRCROUTE	1	/* can check IP source routing */
175c2aa98e2SPeter Wemm # define LA_TYPE	LA_HPUX
176c2aa98e2SPeter Wemm # define SPT_TYPE	SPT_PSTAT
177c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_VFS	/* use <sys/vfs.h> statfs() implementation */
178c2aa98e2SPeter Wemm # define GIDSET_T	gid_t
179c2aa98e2SPeter Wemm # ifndef HASGETUSERSHELL
180c2aa98e2SPeter Wemm #  define HASGETUSERSHELL 0	/* getusershell(3) causes core dumps */
181c2aa98e2SPeter Wemm # endif
182c2aa98e2SPeter Wemm # ifndef HPUX11
183c2aa98e2SPeter Wemm #  define syslog	hard_syslog
184c2aa98e2SPeter Wemm # endif
185c2aa98e2SPeter Wemm # define SAFENFSPATHCONF 1	/* pathconf(2) pessimizes on NFS filesystems */
186c2aa98e2SPeter Wemm 
187c2aa98e2SPeter Wemm # ifdef V4FS
188c2aa98e2SPeter Wemm 		/* HP-UX 10.x */
189c2aa98e2SPeter Wemm #  define _PATH_UNIX		"/stand/vmunix"
190c2aa98e2SPeter Wemm #  ifndef _PATH_VENDOR_CF
191c2aa98e2SPeter Wemm #   define _PATH_VENDOR_CF	"/etc/mail/sendmail.cf"
192c2aa98e2SPeter Wemm #  endif
193c2aa98e2SPeter Wemm #  ifndef _PATH_SENDMAILPID
194c2aa98e2SPeter Wemm #   define _PATH_SENDMAILPID	"/etc/mail/sendmail.pid"
195c2aa98e2SPeter Wemm #  endif
196c2aa98e2SPeter Wemm #  ifndef IDENTPROTO
197c2aa98e2SPeter Wemm #   define IDENTPROTO	1	/* TCP/IP implementation fixed in 10.0 */
198c2aa98e2SPeter Wemm #  endif
199c2aa98e2SPeter Wemm 
200c2aa98e2SPeter Wemm # else
201c2aa98e2SPeter Wemm 		/* HP-UX 9.x */
202c2aa98e2SPeter Wemm #  define _PATH_UNIX		"/hp-ux"
203c2aa98e2SPeter Wemm #  ifndef _PATH_VENDOR_CF
204c2aa98e2SPeter Wemm #   define _PATH_VENDOR_CF	"/usr/lib/sendmail.cf"
205c2aa98e2SPeter Wemm #  endif
206c2aa98e2SPeter Wemm #  ifndef IDENTPROTO
207c2aa98e2SPeter Wemm #   define IDENTPROTO	0	/* TCP/IP implementation is broken */
208c2aa98e2SPeter Wemm #  endif
209c2aa98e2SPeter Wemm #  ifdef __STDC__
210c2aa98e2SPeter Wemm extern void	hard_syslog(int, char *, ...);
211c2aa98e2SPeter Wemm #  else
212c2aa98e2SPeter Wemm extern void	hard_syslog();
213c2aa98e2SPeter Wemm #  endif
214c2aa98e2SPeter Wemm #  define FDSET_CAST	(int *)	/* cast for fd_set parameters to select */
215c2aa98e2SPeter Wemm # endif
216c2aa98e2SPeter Wemm 
217c2aa98e2SPeter Wemm #endif
218c2aa98e2SPeter Wemm 
219c2aa98e2SPeter Wemm 
220c2aa98e2SPeter Wemm /*
221c2aa98e2SPeter Wemm **  IBM AIX 4.x
222c2aa98e2SPeter Wemm */
223c2aa98e2SPeter Wemm 
224c2aa98e2SPeter Wemm #ifdef _AIX4
225c2aa98e2SPeter Wemm # define _AIX3		1	/* pull in AIX3 stuff */
226c2aa98e2SPeter Wemm # define USESETEUID	1	/* seteuid(2) works */
227c2aa98e2SPeter Wemm # define TZ_TYPE	TZ_NAME	/* use tzname[] vector */
228c2aa98e2SPeter Wemm # define SOCKOPT_LEN_T	size_t	/* arg#5 to getsockopt */
229c2aa98e2SPeter Wemm # if _AIX4 >= 40200
230c2aa98e2SPeter Wemm #  define HASSETREUID	1	/* setreuid(2) works as of AIX 4.2 */
231c2aa98e2SPeter Wemm #  define SOCKADDR_LEN_T	size_t	/* e.g., arg#3 to accept, getsockname */
232c2aa98e2SPeter Wemm # endif
233c2aa98e2SPeter Wemm # if defined(_ILS_MACROS)	/* IBM versions aren't side-effect clean */
234c2aa98e2SPeter Wemm #  undef isascii
235c2aa98e2SPeter Wemm #  define isascii(c)		!(c & ~0177)
236c2aa98e2SPeter Wemm #  undef isdigit
237c2aa98e2SPeter Wemm #  define isdigit(__a)		(_IS(__a,_ISDIGIT))
238c2aa98e2SPeter Wemm #  undef isspace
239c2aa98e2SPeter Wemm #  define isspace(__a)		(_IS(__a,_ISSPACE))
240c2aa98e2SPeter Wemm # endif
241c2aa98e2SPeter Wemm #endif
242c2aa98e2SPeter Wemm 
243c2aa98e2SPeter Wemm 
244c2aa98e2SPeter Wemm /*
245c2aa98e2SPeter Wemm **  IBM AIX 3.x -- actually tested for 3.2.3
246c2aa98e2SPeter Wemm */
247c2aa98e2SPeter Wemm 
248c2aa98e2SPeter Wemm #ifdef _AIX3
249c2aa98e2SPeter Wemm # include <paths.h>
250c2aa98e2SPeter Wemm # include <sys/machine.h>	/* to get byte order */
251c2aa98e2SPeter Wemm # include <sys/select.h>
252c2aa98e2SPeter Wemm # define HASINITGROUPS	1	/* has initgroups(3) call */
253c2aa98e2SPeter Wemm # define HASUNAME	1	/* use System V uname(2) system call */
254c2aa98e2SPeter Wemm # define HASGETUSERSHELL 0	/* does not have getusershell(3) call */
255c2aa98e2SPeter Wemm # define HASFCHMOD	1	/* has fchmod(2) syscall */
256c2aa98e2SPeter Wemm # define IP_SRCROUTE	0	/* Something is broken with getsockopt() */
257c2aa98e2SPeter Wemm # define GIDSET_T	gid_t
258c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_STATFS	/* use <sys/statfs.h> statfs() impl */
259c2aa98e2SPeter Wemm # define SPT_PADCHAR	'\0'	/* pad process title with nulls */
260c2aa98e2SPeter Wemm # define LA_TYPE	LA_INT
261c2aa98e2SPeter Wemm # define FSHIFT		16
262c2aa98e2SPeter Wemm # define LA_AVENRUN	"avenrun"
263c2aa98e2SPeter Wemm #endif
264c2aa98e2SPeter Wemm 
265c2aa98e2SPeter Wemm 
266c2aa98e2SPeter Wemm /*
267c2aa98e2SPeter Wemm **  IBM AIX 2.2.1 -- actually tested for osupdate level 2706+1773
268c2aa98e2SPeter Wemm **
269c2aa98e2SPeter Wemm **	From Mark Whetzel <markw@wg.waii.com>.
270c2aa98e2SPeter Wemm */
271c2aa98e2SPeter Wemm 
272c2aa98e2SPeter Wemm #ifdef AIX			/* AIX/RT compiler pre-defines this */
273c2aa98e2SPeter Wemm # include <paths.h>
274c2aa98e2SPeter Wemm # include <sys/time.h>		/* AIX/RT resource.h does NOT include this */
275c2aa98e2SPeter Wemm # define HASINITGROUPS	1	/* has initgroups(3) call */
276c2aa98e2SPeter Wemm # define HASUNAME	1	/* use System V uname(2) system call */
277c2aa98e2SPeter Wemm # define HASGETUSERSHELL 0	/* does not have getusershell(3) call */
278c2aa98e2SPeter Wemm # define HASFCHMOD	0	/* does not have fchmod(2) syscall */
279c2aa98e2SPeter Wemm # define HASSETREUID	1	/* use setreuid(2) -lbsd system call */
280c2aa98e2SPeter Wemm # define HASSETVBUF	1	/* use setvbuf(2) system call */
281c2aa98e2SPeter Wemm # define HASSETRLIMIT	0	/* does not have setrlimit call */
282c2aa98e2SPeter Wemm # define HASFLOCK	0	/* does not have flock call - use fcntl */
283c2aa98e2SPeter Wemm # define HASULIMIT	1	/* use ulimit instead of setrlimit call */
284c2aa98e2SPeter Wemm # define NEEDGETOPT	1	/* Do we need theirs or ours */
285c2aa98e2SPeter Wemm # define SYS5SETPGRP	1	/* don't have setpgid on AIX/RT */
286c2aa98e2SPeter Wemm # define IP_SRCROUTE	0	/* Something is broken with getsockopt() */
287c2aa98e2SPeter Wemm # define BSD4_3		1	/* NOT bsd 4.4 or posix signals */
288c2aa98e2SPeter Wemm # define GIDSET_T	int
289c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_STATFS	/* use <sys/statfs.h> statfs() impl */
290c2aa98e2SPeter Wemm # define SPT_PADCHAR	'\0'		/* pad process title with nulls */
291c2aa98e2SPeter Wemm # define LA_TYPE	LA_SUBR		/* use our ported loadavgd daemon */
292c2aa98e2SPeter Wemm # define TZ_TYPE	TZ_TZNAME	/* use tzname[] vector */
293c2aa98e2SPeter Wemm # define ARBPTR_T	int *
294c2aa98e2SPeter Wemm # define void		int
295c2aa98e2SPeter Wemm typedef int		pid_t;
296c2aa98e2SPeter Wemm /* RTisms for BSD compatibility, specified in the Makefile
297c2aa98e2SPeter Wemm   define BSD		1
298c2aa98e2SPeter Wemm   define BSD_INCLUDES		1
299c2aa98e2SPeter Wemm   define BSD_REMAP_SIGNAL_TO_SIGVEC
300c2aa98e2SPeter Wemm     RTisms needed above */
301c2aa98e2SPeter Wemm /* make this sendmail in a completely different place */
302c2aa98e2SPeter Wemm # ifndef _PATH_VENDOR_CF
303c2aa98e2SPeter Wemm #  define _PATH_VENDOR_CF	"/usr/local/newmail/sendmail.cf"
304c2aa98e2SPeter Wemm # endif
305c2aa98e2SPeter Wemm # ifndef _PATH_SENDMAILPID
306c2aa98e2SPeter Wemm #  define _PATH_SENDMAILPID	"/usr/local/newmail/sendmail.pid"
307c2aa98e2SPeter Wemm # endif
308c2aa98e2SPeter Wemm #endif
309c2aa98e2SPeter Wemm 
310c2aa98e2SPeter Wemm 
311c2aa98e2SPeter Wemm /*
312c2aa98e2SPeter Wemm **  Silicon Graphics IRIX
313c2aa98e2SPeter Wemm **
314c2aa98e2SPeter Wemm **	Compiles on 4.0.1.
315c2aa98e2SPeter Wemm **
316c2aa98e2SPeter Wemm **	Use IRIX64 instead of IRIX for 64-bit IRIX (6.0).
317c2aa98e2SPeter Wemm **	Use IRIX5 instead of IRIX for IRIX 5.x.
318c2aa98e2SPeter Wemm **
319c2aa98e2SPeter Wemm **	This version tries to be adaptive using _MIPS_SIM:
320c2aa98e2SPeter Wemm **		_MIPS_SIM == _ABIO32 (= 1)    Abi: -32  on IRIX 6.2
321c2aa98e2SPeter Wemm **		_MIPS_SIM == _ABIN32 (= 2)    Abi: -n32 on IRIX 6.2
322c2aa98e2SPeter Wemm **		_MIPS_SIM == _ABI64  (= 3)    Abi: -64 on IRIX 6.2
323c2aa98e2SPeter Wemm **
324c2aa98e2SPeter Wemm **		_MIPS_SIM is 1 also on IRIX 5.3
325c2aa98e2SPeter Wemm **
326c2aa98e2SPeter Wemm **	IRIX64 changes from Mark R. Levinson <ml@cvdev.rochester.edu>.
327c2aa98e2SPeter Wemm **	IRIX5 changes from Kari E. Hurtta <Kari.Hurtta@fmi.fi>.
328c2aa98e2SPeter Wemm **	Adaptive changes from Kari E. Hurtta <Kari.Hurtta@fmi.fi>.
329c2aa98e2SPeter Wemm */
330c2aa98e2SPeter Wemm 
331c2aa98e2SPeter Wemm #if defined(__sgi)
332c2aa98e2SPeter Wemm # ifndef IRIX
333c2aa98e2SPeter Wemm #  define IRIX
334c2aa98e2SPeter Wemm # endif
335c2aa98e2SPeter Wemm # if _MIPS_SIM > 0 && !defined(IRIX5)
336c2aa98e2SPeter Wemm #  define IRIX5			/* IRIX5 or IRIX6 */
337c2aa98e2SPeter Wemm # endif
338c2aa98e2SPeter Wemm # if _MIPS_SIM > 1 && !defined(IRIX6) && !defined(IRIX64)
339c2aa98e2SPeter Wemm #  define IRIX6			/* IRIX6 */
340c2aa98e2SPeter Wemm # endif
341c2aa98e2SPeter Wemm 
342c2aa98e2SPeter Wemm #endif
343c2aa98e2SPeter Wemm 
344c2aa98e2SPeter Wemm #ifdef IRIX
345c2aa98e2SPeter Wemm # define SYSTEM5	1	/* this is a System-V derived system */
346c2aa98e2SPeter Wemm # define HASSETREUID	1	/* has setreuid(2) call */
347c2aa98e2SPeter Wemm # define HASINITGROUPS	1	/* has initgroups(3) call */
348c2aa98e2SPeter Wemm # define HASFCHMOD	1	/* has fchmod(2) syscall */
349c2aa98e2SPeter Wemm # define HASGETUSERSHELL 0	/* does not have getusershell(3) call */
350c2aa98e2SPeter Wemm # define IP_SRCROUTE	1	/* can check IP source routing */
351c2aa98e2SPeter Wemm # define setpgid	BSDsetpgrp
352c2aa98e2SPeter Wemm # define GIDSET_T	gid_t
353c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_4ARGS	/* four argument statfs() call */
354c2aa98e2SPeter Wemm # define SFS_BAVAIL	f_bfree		/* alternate field name */
35576b7bf71SPeter Wemm # define SYSLOG_BUFSIZE 512
356c2aa98e2SPeter Wemm # ifdef IRIX6
357c2aa98e2SPeter Wemm #  define STAT64        1
358c2aa98e2SPeter Wemm #  define QUAD_T	unsigned long long
359c2aa98e2SPeter Wemm #  define LA_TYPE	LA_IRIX6	/* figure out at run time */
360c2aa98e2SPeter Wemm #  define SAFENFSPATHCONF 0	/* pathconf(2) lies on NFS filesystems */
361c2aa98e2SPeter Wemm # else
362c2aa98e2SPeter Wemm #  define LA_TYPE	LA_INT
363c2aa98e2SPeter Wemm 
364c2aa98e2SPeter Wemm #  ifdef IRIX64
365c2aa98e2SPeter Wemm #   define STAT64       1
366c2aa98e2SPeter Wemm #   define QUAD_T	unsigned long long
367c2aa98e2SPeter Wemm #   define NAMELISTMASK	0x7fffffffffffffff	/* mask for nlist() values */
368c2aa98e2SPeter Wemm #  else
369c2aa98e2SPeter Wemm #   define STAT64       0
370c2aa98e2SPeter Wemm #   define NAMELISTMASK	0x7fffffff		/* mask for nlist() values */
371c2aa98e2SPeter Wemm #  endif
372c2aa98e2SPeter Wemm # endif
373c2aa98e2SPeter Wemm # if defined(IRIX64) || defined(IRIX5) || defined(IRIX6)
374c2aa98e2SPeter Wemm #  include <sys/cdefs.h>
375c2aa98e2SPeter Wemm #  include <paths.h>
376c2aa98e2SPeter Wemm #  define ARGV_T	char *const *
377c2aa98e2SPeter Wemm #  define HASSETRLIMIT	1	/* has setrlimit(2) syscall */
378c2aa98e2SPeter Wemm #  define HASGETDTABLESIZE 1    /* has getdtablesize(2) syscall */
379c2aa98e2SPeter Wemm #  define HASSTRERROR	1	/* has strerror(3) */
380c2aa98e2SPeter Wemm # else
381c2aa98e2SPeter Wemm #  define ARGV_T	const char **
382c2aa98e2SPeter Wemm #  define WAITUNION	1	/* use "union wait" as wait argument type */
383c2aa98e2SPeter Wemm # endif
384c2aa98e2SPeter Wemm #endif
385c2aa98e2SPeter Wemm 
386c2aa98e2SPeter Wemm 
387c2aa98e2SPeter Wemm /*
388c2aa98e2SPeter Wemm **  SunOS and Solaris
389c2aa98e2SPeter Wemm **
390c2aa98e2SPeter Wemm **	Tested on SunOS 4.1.x (a.k.a. Solaris 1.1.x) and
391c2aa98e2SPeter Wemm **	Solaris 2.4 (a.k.a. SunOS 5.4).
392c2aa98e2SPeter Wemm */
393c2aa98e2SPeter Wemm 
394c2aa98e2SPeter Wemm #if defined(sun) && !defined(BSD)
395c2aa98e2SPeter Wemm 
396c2aa98e2SPeter Wemm # include <sys/time.h>
397c2aa98e2SPeter Wemm # define HASINITGROUPS	1	/* has initgroups(3) call */
398c2aa98e2SPeter Wemm # define HASUNAME	1	/* use System V uname(2) system call */
399c2aa98e2SPeter Wemm # define HASFCHMOD	1	/* has fchmod(2) syscall */
400c2aa98e2SPeter Wemm # define IP_SRCROUTE	1	/* can check IP source routing */
401c2aa98e2SPeter Wemm # define SAFENFSPATHCONF 1	/* pathconf(2) pessimizes on NFS filesystems */
402c2aa98e2SPeter Wemm 
403c2aa98e2SPeter Wemm # ifdef SOLARIS_2_3
404c2aa98e2SPeter Wemm #  define SOLARIS	20300	/* for back compat only -- use -DSOLARIS=20300 */
405c2aa98e2SPeter Wemm # endif
406c2aa98e2SPeter Wemm 
407c2aa98e2SPeter Wemm # if defined(NOT_SENDMAIL) && !defined(SOLARIS) && defined(sun) && (defined(__svr4__) || defined(__SVR4))
408c2aa98e2SPeter Wemm #  define SOLARIS	1	/* unknown Solaris version */
409c2aa98e2SPeter Wemm # endif
410c2aa98e2SPeter Wemm 
411c2aa98e2SPeter Wemm # ifdef SOLARIS
412c2aa98e2SPeter Wemm 			/* Solaris 2.x (a.k.a. SunOS 5.x) */
413c2aa98e2SPeter Wemm #  ifndef __svr4__
414c2aa98e2SPeter Wemm #   define __svr4__		/* use all System V Releae 4 defines below */
415c2aa98e2SPeter Wemm #  endif
416c2aa98e2SPeter Wemm #  define GIDSET_T	gid_t
417c2aa98e2SPeter Wemm #  define USE_SA_SIGACTION	1	/* use sa_sigaction field */
418c2aa98e2SPeter Wemm #  ifndef _PATH_UNIX
419c2aa98e2SPeter Wemm #   define _PATH_UNIX		"/dev/ksyms"
420c2aa98e2SPeter Wemm #  endif
421c2aa98e2SPeter Wemm #  ifndef _PATH_VENDOR_CF
422c2aa98e2SPeter Wemm #   define _PATH_VENDOR_CF	"/etc/mail/sendmail.cf"
423c2aa98e2SPeter Wemm #  endif
424c2aa98e2SPeter Wemm #  ifndef _PATH_SENDMAILPID
425c2aa98e2SPeter Wemm #   define _PATH_SENDMAILPID	"/etc/mail/sendmail.pid"
426c2aa98e2SPeter Wemm #  endif
427c2aa98e2SPeter Wemm #  ifndef _PATH_HOSTS
428c2aa98e2SPeter Wemm #   define _PATH_HOSTS		"/etc/inet/hosts"
429c2aa98e2SPeter Wemm #  endif
430c2aa98e2SPeter Wemm #  ifndef SYSLOG_BUFSIZE
431c2aa98e2SPeter Wemm #   define SYSLOG_BUFSIZE	1024	/* allow full size syslog buffer */
432c2aa98e2SPeter Wemm #  endif
433c2aa98e2SPeter Wemm #  ifndef TZ_TYPE
434c2aa98e2SPeter Wemm #   define TZ_TYPE	TZ_TZNAME
435c2aa98e2SPeter Wemm #  endif
436c2aa98e2SPeter Wemm #  if SOLARIS >= 20300 || (SOLARIS < 10000 && SOLARIS >= 203)
437c2aa98e2SPeter Wemm #   define USESETEUID	1		/* seteuid works as of 2.3 */
438c2aa98e2SPeter Wemm #  endif
439c2aa98e2SPeter Wemm #  if SOLARIS >= 20500 || (SOLARIS < 10000 && SOLARIS >= 205)
440c2aa98e2SPeter Wemm #   define HASSETREUID	1		/* setreuid works as of 2.5 */
441c2aa98e2SPeter Wemm #   if SOLARIS < 207 || (SOLARIS > 10000 && SOLARIS < 20700)
442c2aa98e2SPeter Wemm #    ifndef LA_TYPE
443c2aa98e2SPeter Wemm #     define LA_TYPE	LA_KSTAT	/* use kstat(3k) -- may work in < 2.5 */
444c2aa98e2SPeter Wemm #    endif
445c2aa98e2SPeter Wemm #   endif
446c2aa98e2SPeter Wemm #  endif
447c2aa98e2SPeter Wemm #  if SOLARIS >= 20600 || (SOLARIS < 10000 && SOLARIS >= 206)
448c2aa98e2SPeter Wemm #   define HASSNPRINTF	1		/* has snprintf starting in 2.6 */
449c2aa98e2SPeter Wemm #  endif
450c2aa98e2SPeter Wemm #  if SOLARIS >= 20700 || (SOLARIS < 10000 && SOLARIS >= 207)
451c2aa98e2SPeter Wemm #   ifndef LA_TYPE
452c2aa98e2SPeter Wemm #    define LA_TYPE	LA_SUBR		/* getloadavg(3c) appears in 2.7 */
453c2aa98e2SPeter Wemm #   endif
454c2aa98e2SPeter Wemm #   define HASGETUSERSHELL 1	/* getusershell(3c) bug fixed in 2.7 */
455c2aa98e2SPeter Wemm #  endif
456c2aa98e2SPeter Wemm #  ifndef HASGETUSERSHELL
457c2aa98e2SPeter Wemm #   define HASGETUSERSHELL 0	/* getusershell(3) causes core dumps pre-2.7 */
458c2aa98e2SPeter Wemm #  endif
459c2aa98e2SPeter Wemm 
460c2aa98e2SPeter Wemm # else
461c2aa98e2SPeter Wemm 			/* SunOS 4.0.3 or 4.1.x */
462c2aa98e2SPeter Wemm #  define HASGETUSERSHELL 1	/* DOES have getusershell(3) call in libc */
463c2aa98e2SPeter Wemm #  define HASSETREUID	1	/* has setreuid(2) call */
464c2aa98e2SPeter Wemm #  ifndef HASFLOCK
465c2aa98e2SPeter Wemm #   define HASFLOCK	1	/* has flock(2) call */
466c2aa98e2SPeter Wemm #  endif
467c2aa98e2SPeter Wemm #  define SFS_TYPE	SFS_VFS	/* use <sys/vfs.h> statfs() implementation */
468c2aa98e2SPeter Wemm #  define TZ_TYPE	TZ_TM_ZONE	/* use tm->tm_zone */
469c2aa98e2SPeter Wemm #  include <memory.h>
470c2aa98e2SPeter Wemm #  include <vfork.h>
471c2aa98e2SPeter Wemm #  ifdef __GNUC__
472c2aa98e2SPeter Wemm #   define strtoul	strtol	/* gcc library bogosity */
473c2aa98e2SPeter Wemm #  endif
474c2aa98e2SPeter Wemm 
475c2aa98e2SPeter Wemm #  ifdef SUNOS403
476c2aa98e2SPeter Wemm 			/* special tweaking for SunOS 4.0.3 */
477c2aa98e2SPeter Wemm #   include <malloc.h>
478c2aa98e2SPeter Wemm #   define BSD4_3	1	/* 4.3 BSD-based */
479c2aa98e2SPeter Wemm #   define NEEDSTRSTR	1	/* need emulation of strstr(3) routine */
480c2aa98e2SPeter Wemm #   define WAITUNION	1	/* use "union wait" as wait argument type */
481c2aa98e2SPeter Wemm #   undef WIFEXITED
482c2aa98e2SPeter Wemm #   undef WEXITSTATUS
483c2aa98e2SPeter Wemm #   undef HASUNAME
484c2aa98e2SPeter Wemm #   define setpgid	setpgrp
485c2aa98e2SPeter Wemm #   define MODE_T	int
486c2aa98e2SPeter Wemm typedef int		pid_t;
487c2aa98e2SPeter Wemm extern char		*getenv();
488c2aa98e2SPeter Wemm 
489c2aa98e2SPeter Wemm #  else
490c2aa98e2SPeter Wemm 			/* 4.1.x specifics */
491c2aa98e2SPeter Wemm #   define HASSETSID	1	/* has Posix setsid(2) call */
492c2aa98e2SPeter Wemm #   define HASSETVBUF	1	/* we have setvbuf(3) in libc */
493c2aa98e2SPeter Wemm 
494c2aa98e2SPeter Wemm #  endif
495c2aa98e2SPeter Wemm # endif
496c2aa98e2SPeter Wemm 
497c2aa98e2SPeter Wemm # ifndef LA_TYPE
498c2aa98e2SPeter Wemm #  define LA_TYPE	LA_INT
499c2aa98e2SPeter Wemm # endif
500c2aa98e2SPeter Wemm 
501c2aa98e2SPeter Wemm #endif /* sun && !BSD */
502c2aa98e2SPeter Wemm 
503c2aa98e2SPeter Wemm /*
504c2aa98e2SPeter Wemm **  DG/UX
505c2aa98e2SPeter Wemm **
506c2aa98e2SPeter Wemm **	Tested on 5.4.2 and 5.4.3.  Use DGUX_5_4_2 to get the
507c2aa98e2SPeter Wemm **	older support.
508c2aa98e2SPeter Wemm **	5.4.3 changes from Mark T. Robinson <mtr@ornl.gov>.
509c2aa98e2SPeter Wemm */
510c2aa98e2SPeter Wemm 
511c2aa98e2SPeter Wemm #ifdef DGUX_5_4_2
512c2aa98e2SPeter Wemm # define DGUX		1
513c2aa98e2SPeter Wemm #endif
514c2aa98e2SPeter Wemm 
515c2aa98e2SPeter Wemm #ifdef	DGUX
516c2aa98e2SPeter Wemm # define SYSTEM5	1
517c2aa98e2SPeter Wemm # define LA_TYPE	LA_DGUX
518c2aa98e2SPeter Wemm # define HASSETREUID	1	/* has setreuid(2) call */
519c2aa98e2SPeter Wemm # define HASUNAME	1	/* use System V uname(2) system call */
520c2aa98e2SPeter Wemm # define HASSETSID	1	/* has Posix setsid(2) call */
521c2aa98e2SPeter Wemm # define HASINITGROUPS	1	/* has initgroups(3) call */
522c2aa98e2SPeter Wemm # define IP_SRCROUTE	0	/* does not have <netinet/ip_var.h> */
523c2aa98e2SPeter Wemm # define HASGETUSERSHELL 0	/* does not have getusershell(3) */
524c2aa98e2SPeter Wemm # define HASSNPRINTF	1	/* has snprintf(3) */
525c2aa98e2SPeter Wemm # ifndef IDENTPROTO
526c2aa98e2SPeter Wemm #  define IDENTPROTO	0	/* TCP/IP implementation is broken */
527c2aa98e2SPeter Wemm # endif
528c2aa98e2SPeter Wemm # define SPT_TYPE	SPT_NONE	/* don't use setproctitle */
529c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_4ARGS	/* four argument statfs() call */
530c2aa98e2SPeter Wemm 
531c2aa98e2SPeter Wemm /* these include files must be included early on DG/UX */
532c2aa98e2SPeter Wemm # include <netinet/in.h>
533c2aa98e2SPeter Wemm # include <arpa/inet.h>
534c2aa98e2SPeter Wemm 
535c2aa98e2SPeter Wemm /* compiler doesn't understand const? */
536c2aa98e2SPeter Wemm # define const
537c2aa98e2SPeter Wemm 
538c2aa98e2SPeter Wemm # ifdef DGUX_5_4_2
539c2aa98e2SPeter Wemm #  define inet_addr	dgux_inet_addr
540c2aa98e2SPeter Wemm extern long	dgux_inet_addr();
541c2aa98e2SPeter Wemm # endif
542c2aa98e2SPeter Wemm #endif
543c2aa98e2SPeter Wemm 
544c2aa98e2SPeter Wemm 
545c2aa98e2SPeter Wemm /*
546c2aa98e2SPeter Wemm **  Digital Ultrix 4.2A or 4.3
547c2aa98e2SPeter Wemm **
548c2aa98e2SPeter Wemm **	Apparently, fcntl locking is broken on 4.2A, in that locks are
549c2aa98e2SPeter Wemm **	not dropped when the process exits.  This causes major problems,
550c2aa98e2SPeter Wemm **	so flock is the only alternative.
551c2aa98e2SPeter Wemm */
552c2aa98e2SPeter Wemm 
553c2aa98e2SPeter Wemm #ifdef ultrix
554c2aa98e2SPeter Wemm # define HASSETREUID	1	/* has setreuid(2) call */
555c2aa98e2SPeter Wemm # define HASUNSETENV	1	/* has unsetenv(3) call */
556c2aa98e2SPeter Wemm # define HASINITGROUPS	1	/* has initgroups(3) call */
557c2aa98e2SPeter Wemm # define HASUNAME	1	/* use System V uname(2) system call */
558c2aa98e2SPeter Wemm # define HASFCHMOD	1	/* has fchmod(2) syscall */
559c2aa98e2SPeter Wemm # ifndef HASFLOCK
560c2aa98e2SPeter Wemm #  define HASFLOCK	1	/* has flock(2) call */
561c2aa98e2SPeter Wemm # endif
562c2aa98e2SPeter Wemm # define HASGETUSERSHELL 0	/* does not have getusershell(3) call */
563c2aa98e2SPeter Wemm # ifndef BROKEN_RES_SEARCH
564c2aa98e2SPeter Wemm #  define BROKEN_RES_SEARCH 1	/* res_search(unknown) returns h_errno=0 */
565c2aa98e2SPeter Wemm # endif
566c2aa98e2SPeter Wemm # ifdef vax
567c2aa98e2SPeter Wemm #  define LA_TYPE	LA_FLOAT
568c2aa98e2SPeter Wemm # else
569c2aa98e2SPeter Wemm #  define LA_TYPE	LA_INT
570c2aa98e2SPeter Wemm #  define LA_AVENRUN	"avenrun"
571c2aa98e2SPeter Wemm # endif
572c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_MOUNT	/* use <sys/mount.h> statfs() impl */
573c2aa98e2SPeter Wemm # ifndef IDENTPROTO
574c2aa98e2SPeter Wemm #  define IDENTPROTO	0	/* pre-4.4 TCP/IP implementation is broken */
575c2aa98e2SPeter Wemm # endif
576c2aa98e2SPeter Wemm # define SYSLOG_BUFSIZE	256
577c2aa98e2SPeter Wemm #endif
578c2aa98e2SPeter Wemm 
579c2aa98e2SPeter Wemm 
580c2aa98e2SPeter Wemm /*
581c2aa98e2SPeter Wemm **  OSF/1 for KSR.
582c2aa98e2SPeter Wemm **
583c2aa98e2SPeter Wemm **      Contributed by Todd C. Miller <Todd.Miller@cs.colorado.edu>
584c2aa98e2SPeter Wemm */
585c2aa98e2SPeter Wemm 
586c2aa98e2SPeter Wemm #ifdef __ksr__
587c2aa98e2SPeter Wemm # define __osf__	1       /* get OSF/1 defines below */
588c2aa98e2SPeter Wemm # ifndef TZ_TYPE
589c2aa98e2SPeter Wemm #  define TZ_TYPE	TZ_TZNAME	/* use tzname[] vector */
590c2aa98e2SPeter Wemm # endif
591c2aa98e2SPeter Wemm #endif
592c2aa98e2SPeter Wemm 
593c2aa98e2SPeter Wemm 
594c2aa98e2SPeter Wemm /*
595c2aa98e2SPeter Wemm **  OSF/1 for Intel Paragon.
596c2aa98e2SPeter Wemm **
597c2aa98e2SPeter Wemm **	Contributed by Jeff A. Earickson <jeff@ssd.intel.com>
598c2aa98e2SPeter Wemm **	of Intel Scalable Systems Divison.
599c2aa98e2SPeter Wemm */
600c2aa98e2SPeter Wemm 
601c2aa98e2SPeter Wemm #ifdef __PARAGON__
602c2aa98e2SPeter Wemm # define __osf__	1	/* get OSF/1 defines below */
603c2aa98e2SPeter Wemm # ifndef TZ_TYPE
604c2aa98e2SPeter Wemm #  define TZ_TYPE	TZ_TZNAME	/* use tzname[] vector */
605c2aa98e2SPeter Wemm # endif
606c2aa98e2SPeter Wemm # define GIDSET_T	gid_t
607c2aa98e2SPeter Wemm # define MAXNAMLEN	NAME_MAX
608c2aa98e2SPeter Wemm #endif
609c2aa98e2SPeter Wemm 
610c2aa98e2SPeter Wemm 
611c2aa98e2SPeter Wemm /*
612c2aa98e2SPeter Wemm **  OSF/1 (tested on Alpha) -- now known as Digital UNIX.
613c2aa98e2SPeter Wemm **
614c2aa98e2SPeter Wemm **	Tested for 3.2 and 4.0.
615c2aa98e2SPeter Wemm */
616c2aa98e2SPeter Wemm 
617c2aa98e2SPeter Wemm #ifdef __osf__
618c2aa98e2SPeter Wemm # define HASUNSETENV	1	/* has unsetenv(3) call */
619c2aa98e2SPeter Wemm # define USESETEUID	1	/* has useable seteuid(2) call */
620c2aa98e2SPeter Wemm # define HASINITGROUPS	1	/* has initgroups(3) call */
621c2aa98e2SPeter Wemm # define HASFCHMOD	1	/* has fchmod(2) syscall */
622c2aa98e2SPeter Wemm # define IP_SRCROUTE	1	/* can check IP source routing */
623c2aa98e2SPeter Wemm # define HAS_ST_GEN	1	/* has st_gen field in stat struct */
624c2aa98e2SPeter Wemm # ifndef HASFLOCK
625c2aa98e2SPeter Wemm #  define HASFLOCK	1	/* has flock(2) call */
626c2aa98e2SPeter Wemm # endif
627c2aa98e2SPeter Wemm # define LA_TYPE	LA_ALPHAOSF
628c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_STATVFS	/* use <sys/statvfs.h> statfs() impl */
629c2aa98e2SPeter Wemm # ifndef _PATH_VENDOR_CF
630c2aa98e2SPeter Wemm #  define _PATH_VENDOR_CF	"/var/adm/sendmail/sendmail.cf"
631c2aa98e2SPeter Wemm # endif
632c2aa98e2SPeter Wemm # ifndef _PATH_SENDMAILPID
633c2aa98e2SPeter Wemm #  define _PATH_SENDMAILPID	"/var/run/sendmail.pid"
634c2aa98e2SPeter Wemm # endif
635c2aa98e2SPeter Wemm # define bcopy(s, d, l)		(memmove((d), (s), (l)))
636c2aa98e2SPeter Wemm # define bzero(d, l)		(memset((d), '\0', (l)))
637c2aa98e2SPeter Wemm # define bcmp(s, d, l)		(memcmp((s), (d), (l)))
638c2aa98e2SPeter Wemm #endif
639c2aa98e2SPeter Wemm 
640c2aa98e2SPeter Wemm 
641c2aa98e2SPeter Wemm /*
642c2aa98e2SPeter Wemm **  NeXTstep
643c2aa98e2SPeter Wemm */
644c2aa98e2SPeter Wemm 
645c2aa98e2SPeter Wemm #ifdef NeXT
646c2aa98e2SPeter Wemm # define HASINITGROUPS	1	/* has initgroups(3) call */
647c2aa98e2SPeter Wemm # define NEEDPUTENV	2	/* need putenv(3) call; no setenv(3) call */
648c2aa98e2SPeter Wemm # ifndef HASFLOCK
649c2aa98e2SPeter Wemm #  define HASFLOCK	1	/* has flock(2) call */
650c2aa98e2SPeter Wemm # endif
651c2aa98e2SPeter Wemm # define NEEDGETOPT	1	/* need a replacement for getopt(3) */
652c2aa98e2SPeter Wemm # define WAITUNION	1	/* use "union wait" as wait argument type */
653c2aa98e2SPeter Wemm # define UID_T		int	/* compiler gripes on uid_t */
654c2aa98e2SPeter Wemm # define GID_T		int	/* ditto for gid_t */
655c2aa98e2SPeter Wemm # define MODE_T		int	/* and mode_t */
656c2aa98e2SPeter Wemm # define setpgid	setpgrp
657c2aa98e2SPeter Wemm # ifndef NOT_SENDMAIL
658c2aa98e2SPeter Wemm #  define sleep		sleepX
659c2aa98e2SPeter Wemm # endif
660c2aa98e2SPeter Wemm # ifndef LA_TYPE
661c2aa98e2SPeter Wemm #  define LA_TYPE	LA_MACH
662c2aa98e2SPeter Wemm # endif
663c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_VFS	/* use <sys/vfs.h> statfs() implementation */
664c2aa98e2SPeter Wemm # ifndef _POSIX_SOURCE
665c2aa98e2SPeter Wemm typedef int		pid_t;
666c2aa98e2SPeter Wemm #  undef WEXITSTATUS
667c2aa98e2SPeter Wemm #  undef WIFEXITED
668c2aa98e2SPeter Wemm # endif
669c2aa98e2SPeter Wemm # ifndef _PATH_VENDOR_CF
670c2aa98e2SPeter Wemm #  define _PATH_VENDOR_CF	"/etc/sendmail/sendmail.cf"
671c2aa98e2SPeter Wemm # endif
672c2aa98e2SPeter Wemm # ifndef _PATH_SENDMAILPID
673c2aa98e2SPeter Wemm #  define _PATH_SENDMAILPID	"/etc/sendmail/sendmail.pid"
674c2aa98e2SPeter Wemm # endif
675c2aa98e2SPeter Wemm 
676c2aa98e2SPeter Wemm # ifdef TCPWRAPPERS
677c2aa98e2SPeter Wemm #  ifndef HASUNSETENV
678c2aa98e2SPeter Wemm #   define HASUNSETENV	1
679c2aa98e2SPeter Wemm #  endif
680c2aa98e2SPeter Wemm #  undef NEEDPUTENV
681c2aa98e2SPeter Wemm # endif
682c2aa98e2SPeter Wemm 
683c2aa98e2SPeter Wemm #endif
684c2aa98e2SPeter Wemm 
68576b7bf71SPeter Wemm /*
68676b7bf71SPeter Wemm **  Apple Rhapsody
68776b7bf71SPeter Wemm **	Contributed by Wilfredo Sanchez <wsanchez@apple.com>
68876b7bf71SPeter Wemm */
68976b7bf71SPeter Wemm 
69076b7bf71SPeter Wemm #ifdef __APPLE__
69176b7bf71SPeter Wemm # define HASFCHMOD	1	/* has fchmod(2) syscall */
69276b7bf71SPeter Wemm # define HASFLOCK	1	/* has flock(2) syscall */
69376b7bf71SPeter Wemm # define HASUNAME	1	/* has uname(2) syscall */
69476b7bf71SPeter Wemm # define HASUNSETENV	1
69576b7bf71SPeter Wemm # define HASSETSID	1	/* has the setsid(2) POSIX syscall */
69676b7bf71SPeter Wemm # define HASINITGROUPS	1
69776b7bf71SPeter Wemm # define HASSETVBUF	1
69876b7bf71SPeter Wemm # define HASSETREUID	1
69976b7bf71SPeter Wemm # define USESETEUID	1	/* has useable seteuid(2) call */
70076b7bf71SPeter Wemm # define HASLSTAT	1
70176b7bf71SPeter Wemm # define HASSETRLIMIT	1
70276b7bf71SPeter Wemm # define HASWAITPID	1
70376b7bf71SPeter Wemm # define HASSTRERROR	1	/* has strerror(3) */
70476b7bf71SPeter Wemm # define HASSNPRINTF	1	/* has snprintf(3) and vsnprintf(3) */
70576b7bf71SPeter Wemm # define USESTRERROR	1	/* has strerror(3) */
70676b7bf71SPeter Wemm # define HASGETDTABLESIZE	1
70776b7bf71SPeter Wemm # define HASGETUSERSHELL	1
70876b7bf71SPeter Wemm # define NEEDGETOPT	1	/* need a replacement for getopt(3) */
70976b7bf71SPeter Wemm # define BSD4_4_SOCKADDR	/* has sa_len */
71076b7bf71SPeter Wemm # define NETLINK	1	/* supports AF_LINK */
71176b7bf71SPeter Wemm # define HAS_ST_GEN	1	/* has st_gen field in stat struct */
71276b7bf71SPeter Wemm # define GIDSET_T	gid_t
71376b7bf71SPeter Wemm # define LA_TYPE	LA_SUBR		/* use getloadavg(3) */
71476b7bf71SPeter Wemm # define SFS_TYPE	SFS_MOUNT	/* use <sys/mount.h> statfs() impl */
71576b7bf71SPeter Wemm # define SPT_TYPE	SPT_PSSTRINGS
71676b7bf71SPeter Wemm # define SPT_PADCHAR	'\0'	/* pad process title with nulls */
71776b7bf71SPeter Wemm # define ERRLIST_PREDEFINED	/* don't declare sys_errlist */
71876b7bf71SPeter Wemm #endif
71976b7bf71SPeter Wemm 
720c2aa98e2SPeter Wemm 
721c2aa98e2SPeter Wemm /*
722c2aa98e2SPeter Wemm **  4.4 BSD
723c2aa98e2SPeter Wemm **
724c2aa98e2SPeter Wemm **	See also BSD defines.
725c2aa98e2SPeter Wemm */
726c2aa98e2SPeter Wemm 
727c2aa98e2SPeter Wemm #if defined(BSD4_4) && !defined(__bsdi__) && !defined(__GNU__)
728c2aa98e2SPeter Wemm # include <paths.h>
729c2aa98e2SPeter Wemm # define HASUNSETENV	1	/* has unsetenv(3) call */
730c2aa98e2SPeter Wemm # define USESETEUID	1	/* has useable seteuid(2) call */
731c2aa98e2SPeter Wemm # define HASFCHMOD	1	/* has fchmod(2) syscall */
732c2aa98e2SPeter Wemm # define HASSNPRINTF	1	/* has snprintf(3) and vsnprintf(3) */
733c2aa98e2SPeter Wemm # define HASSTRERROR	1	/* has strerror(3) */
734c2aa98e2SPeter Wemm # define HAS_ST_GEN	1	/* has st_gen field in stat struct */
735c2aa98e2SPeter Wemm # include <sys/cdefs.h>
736c2aa98e2SPeter Wemm # define ERRLIST_PREDEFINED	/* don't declare sys_errlist */
737c2aa98e2SPeter Wemm # define BSD4_4_SOCKADDR	/* has sa_len */
738c2aa98e2SPeter Wemm # define NEED_PRINTF_PERCENTQ	1	/* doesn't have %lld */
739c2aa98e2SPeter Wemm # define NETLINK	1	/* supports AF_LINK */
740c2aa98e2SPeter Wemm # ifndef LA_TYPE
741c2aa98e2SPeter Wemm #  define LA_TYPE	LA_SUBR
742c2aa98e2SPeter Wemm # endif
743c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_MOUNT	/* use <sys/mount.h> statfs() impl */
744c2aa98e2SPeter Wemm # define SPT_TYPE	SPT_PSSTRINGS	/* use PS_STRINGS pointer */
745c2aa98e2SPeter Wemm #endif
746c2aa98e2SPeter Wemm 
747c2aa98e2SPeter Wemm 
748c2aa98e2SPeter Wemm /*
749c2aa98e2SPeter Wemm **  BSD/OS (was BSD/386) (all versions)
750c2aa98e2SPeter Wemm **	From Tony Sanders, BSDI
751c2aa98e2SPeter Wemm */
752c2aa98e2SPeter Wemm 
753c2aa98e2SPeter Wemm #ifdef __bsdi__
754c2aa98e2SPeter Wemm # include <paths.h>
755c2aa98e2SPeter Wemm # define HASUNSETENV	1	/* has the unsetenv(3) call */
756c2aa98e2SPeter Wemm # define HASSETSID	1	/* has the setsid(2) POSIX syscall */
757c2aa98e2SPeter Wemm # define USESETEUID	1	/* has useable seteuid(2) call */
758c2aa98e2SPeter Wemm # define HASFCHMOD	1	/* has fchmod(2) syscall */
759c2aa98e2SPeter Wemm # define HASSNPRINTF	1	/* has snprintf(3) and vsnprintf(3) */
760c2aa98e2SPeter Wemm # define HASUNAME	1	/* has uname(2) syscall */
761c2aa98e2SPeter Wemm # define HASSTRERROR	1	/* has strerror(3) */
762c2aa98e2SPeter Wemm # define HAS_ST_GEN	1	/* has st_gen field in stat struct */
763c2aa98e2SPeter Wemm # include <sys/cdefs.h>
764c2aa98e2SPeter Wemm # define ERRLIST_PREDEFINED	/* don't declare sys_errlist */
765c2aa98e2SPeter Wemm # define BSD4_4_SOCKADDR	/* has sa_len */
766c2aa98e2SPeter Wemm # define NETLINK	1	/* supports AF_LINK */
767c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_MOUNT	/* use <sys/mount.h> statfs() impl */
768c2aa98e2SPeter Wemm # ifndef LA_TYPE
769c2aa98e2SPeter Wemm #  define LA_TYPE	LA_SUBR
770c2aa98e2SPeter Wemm # endif
771c2aa98e2SPeter Wemm # define GIDSET_T	gid_t
772c2aa98e2SPeter Wemm # define QUAD_T		quad_t
773c2aa98e2SPeter Wemm # if defined(_BSDI_VERSION) && _BSDI_VERSION >= 199312
774c2aa98e2SPeter Wemm 			/* version 1.1 or later */
775c2aa98e2SPeter Wemm #  undef SPT_TYPE
776c2aa98e2SPeter Wemm #  define SPT_TYPE	SPT_BUILTIN	/* setproctitle is in libc */
777c2aa98e2SPeter Wemm # else
778c2aa98e2SPeter Wemm 			/* version 1.0 or earlier */
779c2aa98e2SPeter Wemm #  define SPT_PADCHAR	'\0'	/* pad process title with nulls */
780c2aa98e2SPeter Wemm # endif
781c2aa98e2SPeter Wemm # if defined(_BSDI_VERSION) && _BSDI_VERSION >= 199701	/* on 3.x */
782c2aa98e2SPeter Wemm #  define HASSETUSERCONTEXT 1	/* has setusercontext */
783c2aa98e2SPeter Wemm # endif
784c2aa98e2SPeter Wemm #endif
785c2aa98e2SPeter Wemm 
786c2aa98e2SPeter Wemm 
787c2aa98e2SPeter Wemm /*
788c2aa98e2SPeter Wemm **  QNX 4.2x
789c2aa98e2SPeter Wemm **	Contributed by Glen McCready <glen@qnx.com>.
790c2aa98e2SPeter Wemm **
791c2aa98e2SPeter Wemm **	Should work with all versions of QNX.
792c2aa98e2SPeter Wemm */
793c2aa98e2SPeter Wemm 
794c2aa98e2SPeter Wemm #if defined(__QNX__)
795c2aa98e2SPeter Wemm # include <unix.h>
796c2aa98e2SPeter Wemm # include <sys/select.h>
797c2aa98e2SPeter Wemm # undef NGROUPS_MAX
798c2aa98e2SPeter Wemm # define HASSETSID      1       /* has the setsid(2) POSIX syscall */
799c2aa98e2SPeter Wemm # define USESETEUID     1       /* has useable seteuid(2) call */
800c2aa98e2SPeter Wemm # define HASFCHMOD      1       /* has fchmod(2) syscall */
801c2aa98e2SPeter Wemm # define HASGETDTABLESIZE 1     /* has getdtablesize(2) call */
802c2aa98e2SPeter Wemm # define HASSETREUID    1       /* has setreuid(2) call */
803c2aa98e2SPeter Wemm # define HASSTRERROR	1	/* has strerror(3) */
804c2aa98e2SPeter Wemm # define HASFLOCK	0
805c2aa98e2SPeter Wemm # undef HASINITGROUPS           /* has initgroups(3) call */
806c2aa98e2SPeter Wemm # define NEEDGETOPT     1       /* use sendmail's getopt */
807c2aa98e2SPeter Wemm # define IP_SRCROUTE    1       /* can check IP source routing */
808c2aa98e2SPeter Wemm # define TZ_TYPE        TZ_TMNAME       /* use tmname variable */
809c2aa98e2SPeter Wemm # define GIDSET_T       gid_t
810c2aa98e2SPeter Wemm # define LA_TYPE        LA_ZERO
811c2aa98e2SPeter Wemm # define SFS_TYPE       SFS_NONE
812c2aa98e2SPeter Wemm # define SPT_TYPE       SPT_REUSEARGV
813c2aa98e2SPeter Wemm # define SPT_PADCHAR    '\0'    /* pad process title with nulls */
814c2aa98e2SPeter Wemm # define HASGETUSERSHELL 0
815c2aa98e2SPeter Wemm # define E_PSEUDOBASE	512
816c2aa98e2SPeter Wemm # define bcopy(s, d, l)		(memmove((d), (s), (l)))
817c2aa98e2SPeter Wemm # define bzero(d, l)		(memset((d), '\0', (l)))
818c2aa98e2SPeter Wemm # define bcmp(s, d, l)		(memcmp((s), (d), (l)))
819c2aa98e2SPeter Wemm # define _FILE_H_INCLUDED
820c2aa98e2SPeter Wemm #endif
821c2aa98e2SPeter Wemm 
822c2aa98e2SPeter Wemm 
823c2aa98e2SPeter Wemm /*
824c2aa98e2SPeter Wemm **  FreeBSD / NetBSD / OpenBSD (all architectures, all versions)
825c2aa98e2SPeter Wemm **
826c2aa98e2SPeter Wemm **  4.3BSD clone, closer to 4.4BSD	for FreeBSD 1.x and NetBSD 0.9x
827c2aa98e2SPeter Wemm **  4.4BSD-Lite based			for FreeBSD 2.x and NetBSD 1.x
828c2aa98e2SPeter Wemm **
829c2aa98e2SPeter Wemm **	See also BSD defines.
830c2aa98e2SPeter Wemm */
831c2aa98e2SPeter Wemm 
832c2aa98e2SPeter Wemm #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
833c2aa98e2SPeter Wemm # include <paths.h>
834c2aa98e2SPeter Wemm # define HASUNSETENV	1	/* has unsetenv(3) call */
835c2aa98e2SPeter Wemm # define HASSETSID	1	/* has the setsid(2) POSIX syscall */
836c2aa98e2SPeter Wemm # define USESETEUID	1	/* has useable seteuid(2) call */
837c2aa98e2SPeter Wemm # define HASFCHMOD	1	/* has fchmod(2) syscall */
838c2aa98e2SPeter Wemm # define HASSNPRINTF	1	/* has snprintf(3) and vsnprintf(3) */
839c2aa98e2SPeter Wemm # define HASUNAME	1	/* has uname(2) syscall */
840c2aa98e2SPeter Wemm # define HASSTRERROR	1	/* has strerror(3) */
841c2aa98e2SPeter Wemm # define HAS_ST_GEN	1	/* has st_gen field in stat struct */
842c2aa98e2SPeter Wemm # define NEED_PRINTF_PERCENTQ	1	/* doesn't have %lld */
843c2aa98e2SPeter Wemm # include <sys/cdefs.h>
844c2aa98e2SPeter Wemm # define ERRLIST_PREDEFINED	/* don't declare sys_errlist */
845c2aa98e2SPeter Wemm # define BSD4_4_SOCKADDR	/* has sa_len */
846c2aa98e2SPeter Wemm # define NETLINK	1	/* supports AF_LINK */
847c2aa98e2SPeter Wemm # define SAFENFSPATHCONF 1	/* pathconf(2) pessimizes on NFS filesystems */
848c2aa98e2SPeter Wemm # define GIDSET_T	gid_t
849c2aa98e2SPeter Wemm # define QUAD_T		unsigned long long
850c2aa98e2SPeter Wemm # ifndef LA_TYPE
851c2aa98e2SPeter Wemm #  define LA_TYPE	LA_SUBR
852c2aa98e2SPeter Wemm # endif
853c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_MOUNT	/* use <sys/mount.h> statfs() impl */
854c2aa98e2SPeter Wemm # if defined(__NetBSD__) && (NetBSD > 199307 || NetBSD0_9 > 1)
855c2aa98e2SPeter Wemm #  undef SPT_TYPE
856c2aa98e2SPeter Wemm #  define SPT_TYPE	SPT_BUILTIN	/* setproctitle is in libc */
857c2aa98e2SPeter Wemm # endif
858c2aa98e2SPeter Wemm # if defined(__FreeBSD__)
859c2aa98e2SPeter Wemm #  undef SPT_TYPE
860663f78a4SPeter Wemm #  if __FreeBSD__ >= 2
861663f78a4SPeter Wemm #   include <osreldate.h>
862663f78a4SPeter Wemm #   if __FreeBSD_version >= 199512	/* 2.2-current when it appeared */
863c2aa98e2SPeter Wemm #    include <libutil.h>
864c2aa98e2SPeter Wemm #    define SPT_TYPE	SPT_BUILTIN
865c2aa98e2SPeter Wemm #   endif
866663f78a4SPeter Wemm #   if __FreeBSD_version >= 222000	/* 2.2.2-release and later */
867663f78a4SPeter Wemm #    define HASSETUSERCONTEXT 	1	/* BSDI-style login classes */
868663f78a4SPeter Wemm #   endif
869c2aa98e2SPeter Wemm #  endif
870c2aa98e2SPeter Wemm #  ifndef SPT_TYPE
871c2aa98e2SPeter Wemm #   define SPT_TYPE	SPT_REUSEARGV
872c2aa98e2SPeter Wemm #   define SPT_PADCHAR	'\0'		/* pad process title with nulls */
873c2aa98e2SPeter Wemm #  endif
874c2aa98e2SPeter Wemm # endif
875c2aa98e2SPeter Wemm # if defined(__OpenBSD__)
876c2aa98e2SPeter Wemm #  undef SPT_TYPE
877c2aa98e2SPeter Wemm #  define SPT_TYPE	SPT_BUILTIN	/* setproctitle is in libc */
878c2aa98e2SPeter Wemm # endif
879c2aa98e2SPeter Wemm #endif
880c2aa98e2SPeter Wemm 
881c2aa98e2SPeter Wemm 
882c2aa98e2SPeter Wemm 
883c2aa98e2SPeter Wemm /*
884c2aa98e2SPeter Wemm **  Mach386
885c2aa98e2SPeter Wemm **
886c2aa98e2SPeter Wemm **	For mt Xinu's Mach386 system.
887c2aa98e2SPeter Wemm */
888c2aa98e2SPeter Wemm 
889c2aa98e2SPeter Wemm #if defined(MACH) && defined(i386) && !defined(__GNU__)
890c2aa98e2SPeter Wemm # define MACH386	1
891c2aa98e2SPeter Wemm # define HASUNSETENV	1	/* has unsetenv(3) call */
892c2aa98e2SPeter Wemm # define HASINITGROUPS	1	/* has initgroups(3) call */
893c2aa98e2SPeter Wemm # ifndef HASFLOCK
894c2aa98e2SPeter Wemm #  define HASFLOCK	1	/* has flock(2) call */
895c2aa98e2SPeter Wemm # endif
896c2aa98e2SPeter Wemm # define NEEDGETOPT	1	/* need a replacement for getopt(3) */
897c2aa98e2SPeter Wemm # define NEEDSTRTOL	1	/* need the strtol() function */
898c2aa98e2SPeter Wemm # define setpgid	setpgrp
899c2aa98e2SPeter Wemm # ifndef LA_TYPE
900c2aa98e2SPeter Wemm #  define LA_TYPE	LA_FLOAT
901c2aa98e2SPeter Wemm # endif
902c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_VFS	/* use <sys/vfs.h> statfs() implementation */
903c2aa98e2SPeter Wemm # undef HASSETVBUF		/* don't actually have setvbuf(3) */
904c2aa98e2SPeter Wemm # undef WEXITSTATUS
905c2aa98e2SPeter Wemm # undef WIFEXITED
906c2aa98e2SPeter Wemm # ifndef _PATH_VENDOR_CF
907c2aa98e2SPeter Wemm #  define _PATH_VENDOR_CF	"/usr/lib/sendmail.cf"
908c2aa98e2SPeter Wemm # endif
909c2aa98e2SPeter Wemm # ifndef _PATH_SENDMAILPID
910c2aa98e2SPeter Wemm #  define _PATH_SENDMAILPID	"/etc/sendmail.pid"
911c2aa98e2SPeter Wemm # endif
912c2aa98e2SPeter Wemm #endif
913c2aa98e2SPeter Wemm 
914c2aa98e2SPeter Wemm 
915c2aa98e2SPeter Wemm 
916c2aa98e2SPeter Wemm /*
917c2aa98e2SPeter Wemm **  GNU OS (hurd)
918c2aa98e2SPeter Wemm **	Largely BSD & posix compatible.
919c2aa98e2SPeter Wemm **	Port contributed by Miles Bader <miles@gnu.ai.mit.edu>.
920c2aa98e2SPeter Wemm */
921c2aa98e2SPeter Wemm 
922c2aa98e2SPeter Wemm #ifdef __GNU_HURD__
923c2aa98e2SPeter Wemm # define SIOCGIFCONF_IS_BROKEN	1
924c2aa98e2SPeter Wemm # define IP_SRCROUTE		0
925c2aa98e2SPeter Wemm # define HASFCHMOD		1
926c2aa98e2SPeter Wemm # define HASFLOCK		1
927c2aa98e2SPeter Wemm # define HASUNAME		1
928c2aa98e2SPeter Wemm # define HASUNSETENV		1
929c2aa98e2SPeter Wemm # define HASSETSID		1
930c2aa98e2SPeter Wemm # define HASINITGROUPS		1
931c2aa98e2SPeter Wemm # define HASSETVBUF		1
932c2aa98e2SPeter Wemm # define HASSETREUID		1
933c2aa98e2SPeter Wemm # define USESETEUID		1
934c2aa98e2SPeter Wemm # define HASLSTAT		1
935c2aa98e2SPeter Wemm # define HASSETRLIMIT		1
936c2aa98e2SPeter Wemm # define HASWAITPID		1
937c2aa98e2SPeter Wemm # define HASGETDTABLESIZE	1
938c2aa98e2SPeter Wemm # define HASSTRERROR		1
939c2aa98e2SPeter Wemm /* # define NEEDGETOPT		1 */
940c2aa98e2SPeter Wemm # define HASGETUSERSHELL	1
941c2aa98e2SPeter Wemm # define ERRLIST_PREDEFINED	1
942c2aa98e2SPeter Wemm # define BSD4_4_SOCKADDR	1
943c2aa98e2SPeter Wemm # define GIDSET_T	gid_t
944c2aa98e2SPeter Wemm # define LA_TYPE	LA_MACH
945c2aa98e2SPeter Wemm 
946c2aa98e2SPeter Wemm /* GNU uses mach[34], which renames some rpcs from mach2.x.  */
947c2aa98e2SPeter Wemm # define host_self	mach_host_self
948c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_STATFS
949c2aa98e2SPeter Wemm # define SPT_TYPE	SPT_CHANGEARGV
950c2aa98e2SPeter Wemm 
951c2aa98e2SPeter Wemm /* GNU has no MAXPATHLEN; ideally the code should be changed to not use it.  */
952c2aa98e2SPeter Wemm # define MAXPATHLEN	2048
953c2aa98e2SPeter Wemm 
954c2aa98e2SPeter Wemm /* Define device num frobbing macros.  */
955c2aa98e2SPeter Wemm # define major(x)	((x)>>8)
956c2aa98e2SPeter Wemm # define minor(x)	((x)&0xFF)
957c2aa98e2SPeter Wemm #endif /* GNU */
958c2aa98e2SPeter Wemm 
959c2aa98e2SPeter Wemm /*
960c2aa98e2SPeter Wemm **  4.3 BSD -- this is for very old systems
961c2aa98e2SPeter Wemm **
962c2aa98e2SPeter Wemm **	Should work for mt Xinu MORE/BSD and Mips UMIPS-BSD 2.1.
963c2aa98e2SPeter Wemm **
964c2aa98e2SPeter Wemm **	You'll also have to install a new resolver library.
965c2aa98e2SPeter Wemm **	I don't guarantee that support for this environment is complete.
966c2aa98e2SPeter Wemm */
967c2aa98e2SPeter Wemm 
968c2aa98e2SPeter Wemm #if defined(oldBSD43) || defined(MORE_BSD) || defined(umipsbsd)
969c2aa98e2SPeter Wemm # define NEEDVPRINTF	1	/* need a replacement for vprintf(3) */
970c2aa98e2SPeter Wemm # define NEEDGETOPT	1	/* need a replacement for getopt(3) */
971c2aa98e2SPeter Wemm # define ARBPTR_T	char *
972c2aa98e2SPeter Wemm # define setpgid	setpgrp
973c2aa98e2SPeter Wemm # ifndef LA_TYPE
974c2aa98e2SPeter Wemm #  define LA_TYPE	LA_FLOAT
975c2aa98e2SPeter Wemm # endif
976c2aa98e2SPeter Wemm # ifndef _PATH_VENDOR_CF
977c2aa98e2SPeter Wemm #  define _PATH_VENDOR_CF	"/usr/lib/sendmail.cf"
978c2aa98e2SPeter Wemm # endif
979c2aa98e2SPeter Wemm # ifndef IDENTPROTO
980c2aa98e2SPeter Wemm #  define IDENTPROTO	0	/* TCP/IP implementation is broken */
981c2aa98e2SPeter Wemm # endif
982c2aa98e2SPeter Wemm # undef WEXITSTATUS
983c2aa98e2SPeter Wemm # undef WIFEXITED
984c2aa98e2SPeter Wemm typedef short		pid_t;
985c2aa98e2SPeter Wemm extern int		errno;
986c2aa98e2SPeter Wemm #endif
987c2aa98e2SPeter Wemm 
988c2aa98e2SPeter Wemm 
989c2aa98e2SPeter Wemm /*
990c2aa98e2SPeter Wemm **  SCO Unix
991c2aa98e2SPeter Wemm **
992c2aa98e2SPeter Wemm **	This includes three parts:
993c2aa98e2SPeter Wemm **
994c2aa98e2SPeter Wemm **	The first is for SCO OpenServer 5.
995c2aa98e2SPeter Wemm **	(Contributed by Keith Reynolds <keithr@sco.COM>).
996c2aa98e2SPeter Wemm **
997c2aa98e2SPeter Wemm **		SCO OpenServer 5 has a compiler version number macro,
998c2aa98e2SPeter Wemm **		which we can use to figure out what version we're on.
999c2aa98e2SPeter Wemm **		This may have to change in future releases.
1000c2aa98e2SPeter Wemm **
1001c2aa98e2SPeter Wemm **	The second is for SCO UNIX 3.2v4.2/Open Desktop 3.0.
1002c2aa98e2SPeter Wemm **	(Contributed by Philippe Brand <phb@colombo.telesys-innov.fr>).
1003c2aa98e2SPeter Wemm **
1004c2aa98e2SPeter Wemm **	The third is for SCO UNIX 3.2v4.0/Open Desktop 2.0 and earlier.
1005c2aa98e2SPeter Wemm */
1006c2aa98e2SPeter Wemm 
1007c2aa98e2SPeter Wemm /* SCO OpenServer 5 */
1008c2aa98e2SPeter Wemm #if _SCO_DS >= 1
1009c2aa98e2SPeter Wemm # include <paths.h>
1010c2aa98e2SPeter Wemm # define SIOCGIFNUM_IS_BROKEN 1	/* SIOCGIFNUM returns bogus value */
1011c2aa98e2SPeter Wemm # define HASSNPRINTF	1	/* has snprintf(3) call */
1012c2aa98e2SPeter Wemm # define HASFCHMOD	1	/* has fchmod(2) call */
1013c2aa98e2SPeter Wemm # define HASSETRLIMIT	1	/* has setrlimit(2) call */
1014c2aa98e2SPeter Wemm # define USESETEUID	1	/* has seteuid(2) call */
1015c2aa98e2SPeter Wemm # define HASINITGROUPS	1	/* has initgroups(3) call */
1016c2aa98e2SPeter Wemm # define HASGETDTABLESIZE 1	/* has getdtablesize(2) call */
1017c2aa98e2SPeter Wemm # define RLIMIT_NEEDS_SYS_TIME_H	1
1018c2aa98e2SPeter Wemm # ifndef LA_TYPE
1019c2aa98e2SPeter Wemm #  define LA_TYPE	LA_DEVSHORT
1020c2aa98e2SPeter Wemm # endif
1021c2aa98e2SPeter Wemm # define _PATH_AVENRUN	"/dev/table/avenrun"
1022c2aa98e2SPeter Wemm # ifndef _SCO_unix_4_2
1023c2aa98e2SPeter Wemm #  define _SCO_unix_4_2
1024c2aa98e2SPeter Wemm # else
1025c2aa98e2SPeter Wemm #  define SOCKADDR_LEN_T	size_t	/* e.g., arg#3 to accept, getsockname */
1026c2aa98e2SPeter Wemm #  define SOCKOPT_LEN_T		size_t	/* arg#5 to getsockopt */
1027c2aa98e2SPeter Wemm # endif
1028c2aa98e2SPeter Wemm #endif
1029c2aa98e2SPeter Wemm 
1030c2aa98e2SPeter Wemm /* SCO UNIX 3.2v4.2/Open Desktop 3.0 */
1031c2aa98e2SPeter Wemm #ifdef _SCO_unix_4_2
1032c2aa98e2SPeter Wemm # define _SCO_unix_
1033c2aa98e2SPeter Wemm # define HASSETREUID	1	/* has setreuid(2) call */
1034c2aa98e2SPeter Wemm #endif
1035c2aa98e2SPeter Wemm 
1036c2aa98e2SPeter Wemm /* SCO UNIX 3.2v4.0 Open Desktop 2.0 and earlier */
1037c2aa98e2SPeter Wemm #ifdef _SCO_unix_
1038c2aa98e2SPeter Wemm # include <sys/stream.h>	/* needed for IP_SRCROUTE */
1039c2aa98e2SPeter Wemm # define SYSTEM5	1	/* include all the System V defines */
1040c2aa98e2SPeter Wemm # define HASGETUSERSHELL 0	/* does not have getusershell(3) call */
1041c2aa98e2SPeter Wemm # define NOFTRUNCATE	0	/* has (simulated) ftruncate call */
1042c2aa98e2SPeter Wemm # define USE_SIGLONGJMP	1	/* sigsetjmp needed for signal handling */
1043c2aa98e2SPeter Wemm # define MAXPATHLEN	PATHSIZE
1044c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_4ARGS	/* use <sys/statfs.h> 4-arg impl */
1045c2aa98e2SPeter Wemm # define SFS_BAVAIL	f_bfree		/* alternate field name */
1046c2aa98e2SPeter Wemm # define SPT_TYPE	SPT_SCO		/* write kernel u. area */
1047c2aa98e2SPeter Wemm # define TZ_TYPE	TZ_TM_NAME	/* use tm->tm_name */
1048c2aa98e2SPeter Wemm # define UID_T		uid_t
1049c2aa98e2SPeter Wemm # define GID_T		gid_t
1050c2aa98e2SPeter Wemm # define GIDSET_T	gid_t
1051c2aa98e2SPeter Wemm # define _PATH_UNIX		"/unix"
1052c2aa98e2SPeter Wemm # ifndef _PATH_VENDOR_CF
1053c2aa98e2SPeter Wemm #  define _PATH_VENDOR_CF	"/usr/lib/sendmail.cf"
1054c2aa98e2SPeter Wemm # endif
1055c2aa98e2SPeter Wemm # ifndef _PATH_SENDMAILPID
1056c2aa98e2SPeter Wemm #  define _PATH_SENDMAILPID	"/etc/sendmail.pid"
1057c2aa98e2SPeter Wemm # endif
1058c2aa98e2SPeter Wemm 
1059c2aa98e2SPeter Wemm /* stuff fixed in later releases */
1060c2aa98e2SPeter Wemm # ifndef _SCO_unix_4_2
1061c2aa98e2SPeter Wemm #  define SYS5SIGNALS	1	/* SysV signal semantics -- reset on each sig */
1062c2aa98e2SPeter Wemm # endif
1063c2aa98e2SPeter Wemm 
1064c2aa98e2SPeter Wemm # ifndef _SCO_DS
1065c2aa98e2SPeter Wemm #  define ftruncate	chsize	/* use chsize(2) to emulate ftruncate */
1066c2aa98e2SPeter Wemm #  define NEEDFSYNC	1	/* needs the fsync(2) call stub */
1067c2aa98e2SPeter Wemm #  define NETUNIX	0	/* no unix domain socket support */
1068c2aa98e2SPeter Wemm #  define LA_TYPE	LA_SHORT
1069c2aa98e2SPeter Wemm # endif
1070c2aa98e2SPeter Wemm 
1071c2aa98e2SPeter Wemm #endif
1072c2aa98e2SPeter Wemm 
1073c2aa98e2SPeter Wemm 
1074c2aa98e2SPeter Wemm /*
1075c2aa98e2SPeter Wemm **  ISC (SunSoft) Unix.
1076c2aa98e2SPeter Wemm **
1077c2aa98e2SPeter Wemm **	Contributed by J.J. Bailey <jjb@jagware.bcc.com>
1078c2aa98e2SPeter Wemm */
1079c2aa98e2SPeter Wemm 
1080c2aa98e2SPeter Wemm #ifdef ISC_UNIX
1081c2aa98e2SPeter Wemm # include <net/errno.h>
1082c2aa98e2SPeter Wemm # include <sys/stream.h>	/* needed for IP_SRCROUTE */
1083c2aa98e2SPeter Wemm # include <sys/bsdtypes.h>
1084c2aa98e2SPeter Wemm # define SYSTEM5	1	/* include all the System V defines */
1085c2aa98e2SPeter Wemm # define SYS5SIGNALS	1	/* SysV signal semantics -- reset on each sig */
1086c2aa98e2SPeter Wemm # define HASGETUSERSHELL 0	/* does not have getusershell(3) call */
1087c2aa98e2SPeter Wemm # define HASSETREUID	1	/* has setreuid(2) call */
1088c2aa98e2SPeter Wemm # define NEEDFSYNC	1	/* needs the fsync(2) call stub */
1089c2aa98e2SPeter Wemm # define NETUNIX	0	/* no unix domain socket support */
1090c2aa98e2SPeter Wemm # define MAXPATHLEN	1024
1091c2aa98e2SPeter Wemm # define LA_TYPE	LA_SHORT
1092c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_STATFS	/* use <sys/statfs.h> statfs() impl */
1093c2aa98e2SPeter Wemm # define SFS_BAVAIL	f_bfree		/* alternate field name */
1094c2aa98e2SPeter Wemm # define _PATH_UNIX		"/unix"
1095c2aa98e2SPeter Wemm # ifndef _PATH_VENDOR_CF
1096c2aa98e2SPeter Wemm #  define _PATH_VENDOR_CF	"/usr/lib/sendmail.cf"
1097c2aa98e2SPeter Wemm # endif
1098c2aa98e2SPeter Wemm # ifndef _PATH_SENDMAILPID
1099c2aa98e2SPeter Wemm #  define _PATH_SENDMAILPID	"/etc/sendmail.pid"
1100c2aa98e2SPeter Wemm # endif
1101c2aa98e2SPeter Wemm 
1102c2aa98e2SPeter Wemm #endif
1103c2aa98e2SPeter Wemm 
1104c2aa98e2SPeter Wemm 
1105c2aa98e2SPeter Wemm /*
1106c2aa98e2SPeter Wemm **  Altos System V (5.3.1)
1107c2aa98e2SPeter Wemm **	Contributed by Tim Rice <tim@trr.metro.net>.
1108c2aa98e2SPeter Wemm */
1109c2aa98e2SPeter Wemm 
1110c2aa98e2SPeter Wemm #ifdef ALTOS_SYSTEM_V
1111c2aa98e2SPeter Wemm # include <sys/stream.h>
1112c2aa98e2SPeter Wemm # include <limits.h>
1113c2aa98e2SPeter Wemm # define SYSTEM5	1	/* include all the System V defines */
1114c2aa98e2SPeter Wemm # define SYS5SIGNALS	1	/* SysV signal semantics -- reset on each sig */
1115c2aa98e2SPeter Wemm # define HASGETUSERSHELL 0	/* does not have getusershell(3) call */
1116c2aa98e2SPeter Wemm # define WAITUNION	1	/* use "union wait" as wait argument type */
1117c2aa98e2SPeter Wemm # define NEEDFSYNC	1	/* no fsync(2) in system library */
1118c2aa98e2SPeter Wemm # define NEEDSTRSTR	1	/* need emulation of the strstr(3) call */
1119c2aa98e2SPeter Wemm # define NOFTRUNCATE	1	/* do not have ftruncate(2) */
1120c2aa98e2SPeter Wemm # define MAXPATHLEN	PATH_MAX
1121c2aa98e2SPeter Wemm # define LA_TYPE	LA_SHORT
1122c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_STATFS	/* use <sys/statfs.h> statfs() impl */
1123c2aa98e2SPeter Wemm # define SFS_BAVAIL	f_bfree		/* alternate field name */
1124c2aa98e2SPeter Wemm # define TZ_TYPE	TZ_TZNAME	/* use tzname[] vector */
1125c2aa98e2SPeter Wemm # define NETUNIX	0	/* no unix domain socket support */
1126c2aa98e2SPeter Wemm # undef WIFEXITED
1127c2aa98e2SPeter Wemm # undef WEXITSTATUS
1128c2aa98e2SPeter Wemm # define strtoul	strtol	/* gcc library bogosity */
1129c2aa98e2SPeter Wemm 
1130c2aa98e2SPeter Wemm typedef unsigned short	uid_t;
1131c2aa98e2SPeter Wemm typedef unsigned short	gid_t;
1132c2aa98e2SPeter Wemm typedef short		pid_t;
1133c2aa98e2SPeter Wemm typedef unsigned long	mode_t;
1134c2aa98e2SPeter Wemm 
1135c2aa98e2SPeter Wemm /* some stuff that should have been in the include files */
1136c2aa98e2SPeter Wemm # include <grp.h>
1137c2aa98e2SPeter Wemm extern char		*malloc();
1138c2aa98e2SPeter Wemm extern struct passwd	*getpwent();
1139c2aa98e2SPeter Wemm extern struct passwd	*getpwnam();
1140c2aa98e2SPeter Wemm extern struct passwd	*getpwuid();
1141c2aa98e2SPeter Wemm extern char		*getenv();
1142c2aa98e2SPeter Wemm extern struct group	*getgrgid();
1143c2aa98e2SPeter Wemm extern struct group	*getgrnam();
1144c2aa98e2SPeter Wemm 
1145c2aa98e2SPeter Wemm #endif
1146c2aa98e2SPeter Wemm 
1147c2aa98e2SPeter Wemm 
1148c2aa98e2SPeter Wemm /*
1149c2aa98e2SPeter Wemm **  ConvexOS 11.0 and later
1150c2aa98e2SPeter Wemm **
1151c2aa98e2SPeter Wemm **	"Todd C. Miller" <millert@mroe.cs.colorado.edu> claims this
1152c2aa98e2SPeter Wemm **	works on 9.1 as well.
1153c2aa98e2SPeter Wemm **
1154c2aa98e2SPeter Wemm **  ConvexOS 11.5 and later, should work on 11.0 as defined.
1155c2aa98e2SPeter Wemm **  For pre-ConvexOOS 11.0, define NEEDGETOPT, undef IDENTPROTO
1156c2aa98e2SPeter Wemm **
1157c2aa98e2SPeter Wemm **	Eric Schnoebelen (eric@cirr.com) For CONVEX Computer Corp.
1158c2aa98e2SPeter Wemm **		(now the CONVEX Technologies Center of Hewlett Packard)
1159c2aa98e2SPeter Wemm */
1160c2aa98e2SPeter Wemm 
1161c2aa98e2SPeter Wemm #ifdef _CONVEX_SOURCE
1162c2aa98e2SPeter Wemm # define HASGETDTABLESIZE	1	/* has getdtablesize(2) */
1163c2aa98e2SPeter Wemm # define HASINITGROUPS	1	/* has initgroups(3) */
1164c2aa98e2SPeter Wemm # define HASUNAME	1	/* use System V uname(2) system call */
1165c2aa98e2SPeter Wemm # define HASSETSID	1	/* has POSIX setsid(2) call */
1166c2aa98e2SPeter Wemm # define HASUNSETENV	1	/* has unsetenv(3) */
1167c2aa98e2SPeter Wemm # define HASFLOCK	1	/* has flock(2) */
1168c2aa98e2SPeter Wemm # define HASSETRLIMIT	1	/* has setrlimit(2) */
1169c2aa98e2SPeter Wemm # define HASSETREUID	1	/* has setreuid(2) */
1170c2aa98e2SPeter Wemm # define BROKEN_RES_SEARCH	1	/* res_search(unknown) returns h_error=0 */
1171c2aa98e2SPeter Wemm # define NEEDPUTENV	1	/* needs putenv (written in terms of setenv) */
1172c2aa98e2SPeter Wemm # define NEEDGETOPT	0	/* need replacement for getopt(3) */
1173c2aa98e2SPeter Wemm # define IP_SRCROUTE	0	/* Something is broken with getsockopt() */
1174c2aa98e2SPeter Wemm # define LA_TYPE	LA_FLOAT
1175c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_VFS	/* use <sys/vfs.h> statfs() implementation */
1176c2aa98e2SPeter Wemm # ifndef _PATH_VENDOR_CF
1177c2aa98e2SPeter Wemm #  define _PATH_VENDOR_CF	"/usr/lib/sendmail.cf"
1178c2aa98e2SPeter Wemm # endif
1179c2aa98e2SPeter Wemm # ifndef S_IREAD
1180c2aa98e2SPeter Wemm #  define S_IREAD	_S_IREAD
1181c2aa98e2SPeter Wemm #  define S_IWRITE	_S_IWRITE
1182c2aa98e2SPeter Wemm #  define S_IEXEC	_S_IEXEC
1183c2aa98e2SPeter Wemm #  define S_IFMT	_S_IFMT
1184c2aa98e2SPeter Wemm #  define S_IFCHR	_S_IFCHR
1185c2aa98e2SPeter Wemm #  define S_IFBLK	_S_IFBLK
1186c2aa98e2SPeter Wemm # endif
1187c2aa98e2SPeter Wemm # ifndef TZ_TYPE
1188c2aa98e2SPeter Wemm #  define TZ_TYPE	TZ_TIMEZONE
1189c2aa98e2SPeter Wemm # endif
1190c2aa98e2SPeter Wemm # ifndef IDENTPROTO
1191c2aa98e2SPeter Wemm #  define IDENTPROTO	1
1192c2aa98e2SPeter Wemm # endif
1193c2aa98e2SPeter Wemm # ifndef SHARE_V1
1194c2aa98e2SPeter Wemm #  define SHARE_V1	1	/* version 1 of the fair share scheduler */
1195c2aa98e2SPeter Wemm # endif
1196c2aa98e2SPeter Wemm # if !defined(__GNUC__ )
1197c2aa98e2SPeter Wemm #  define UID_T	int		/* GNUC gets it right, ConvexC botches */
1198c2aa98e2SPeter Wemm #  define GID_T	int		/* GNUC gets it right, ConvexC botches */
1199c2aa98e2SPeter Wemm # endif
1200c2aa98e2SPeter Wemm # if SECUREWARE
1201c2aa98e2SPeter Wemm #  define FORK	fork		/* SecureWare wants the real fork! */
1202c2aa98e2SPeter Wemm # else
1203c2aa98e2SPeter Wemm #  define FORK	vfork		/* the rest of the OS versions don't care */
1204c2aa98e2SPeter Wemm # endif
1205c2aa98e2SPeter Wemm #endif
1206c2aa98e2SPeter Wemm 
1207c2aa98e2SPeter Wemm 
1208c2aa98e2SPeter Wemm /*
1209c2aa98e2SPeter Wemm **  RISC/os 4.52
1210c2aa98e2SPeter Wemm **
1211c2aa98e2SPeter Wemm **	Gives a ton of warning messages, but otherwise compiles.
1212c2aa98e2SPeter Wemm */
1213c2aa98e2SPeter Wemm 
1214c2aa98e2SPeter Wemm #ifdef RISCOS
1215c2aa98e2SPeter Wemm 
1216c2aa98e2SPeter Wemm # define HASUNSETENV	1	/* has unsetenv(3) call */
1217c2aa98e2SPeter Wemm # ifndef HASFLOCK
1218c2aa98e2SPeter Wemm #  define HASFLOCK	1	/* has flock(2) call */
1219c2aa98e2SPeter Wemm # endif
1220c2aa98e2SPeter Wemm # define WAITUNION	1	/* use "union wait" as wait argument type */
1221c2aa98e2SPeter Wemm # define NEEDGETOPT	1	/* need a replacement for getopt(3) */
1222c2aa98e2SPeter Wemm # define NEEDPUTENV	1	/* need putenv(3) call */
1223c2aa98e2SPeter Wemm # define NEEDSTRSTR	1	/* need emulation of the strstr(3) call */
1224c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_VFS	/* use <sys/vfs.h> statfs() implementation */
1225c2aa98e2SPeter Wemm # define LA_TYPE	LA_INT
1226c2aa98e2SPeter Wemm # define LA_AVENRUN	"avenrun"
1227c2aa98e2SPeter Wemm # define _PATH_UNIX	"/unix"
1228c2aa98e2SPeter Wemm # undef WIFEXITED
1229c2aa98e2SPeter Wemm 
1230c2aa98e2SPeter Wemm # define setpgid	setpgrp
1231c2aa98e2SPeter Wemm 
1232c2aa98e2SPeter Wemm extern int		errno;
1233c2aa98e2SPeter Wemm typedef int		pid_t;
1234c2aa98e2SPeter Wemm # define SIGFUNC_DEFINED
1235c2aa98e2SPeter Wemm # define SIGFUNC_RETURN	(0)
1236c2aa98e2SPeter Wemm # define SIGFUNC_DECL	int
1237c2aa98e2SPeter Wemm typedef int		(*sigfunc_t)();
1238c2aa98e2SPeter Wemm extern char		*getenv();
1239c2aa98e2SPeter Wemm extern void		*malloc();
1240c2aa98e2SPeter Wemm 
1241c2aa98e2SPeter Wemm /* added for RISC/os 4.01...which is dumber than 4.50 */
1242c2aa98e2SPeter Wemm # ifdef RISCOS_4_0
1243c2aa98e2SPeter Wemm #  ifndef ARBPTR_T
1244c2aa98e2SPeter Wemm #   define ARBPTR_T	char *
1245c2aa98e2SPeter Wemm #  endif
1246c2aa98e2SPeter Wemm #  undef HASFLOCK
1247c2aa98e2SPeter Wemm #  define HASFLOCK	0
1248c2aa98e2SPeter Wemm # endif /* RISCOS_4_0 */
1249c2aa98e2SPeter Wemm 
1250c2aa98e2SPeter Wemm # include <sys/time.h>
1251c2aa98e2SPeter Wemm 
1252c2aa98e2SPeter Wemm #endif
1253c2aa98e2SPeter Wemm 
1254c2aa98e2SPeter Wemm 
1255c2aa98e2SPeter Wemm /*
1256c2aa98e2SPeter Wemm **  Linux 0.99pl10 and above...
1257c2aa98e2SPeter Wemm **
1258c2aa98e2SPeter Wemm **  Thanks to, in reverse order of contact:
1259c2aa98e2SPeter Wemm **
1260c2aa98e2SPeter Wemm **	John Kennedy <warlock@csuchico.edu>
1261c2aa98e2SPeter Wemm **	Andrew Pam <avatar@aus.xanadu.com>
1262c2aa98e2SPeter Wemm **	Florian La Roche <rzsfl@rz.uni-sb.de>
1263c2aa98e2SPeter Wemm **	Karl London <karl@borg.demon.co.uk>
1264c2aa98e2SPeter Wemm **
126576b7bf71SPeter Wemm **  Last compiled against:	[07/21/98 @ 11:47:34 AM (Tuesday)]
126676b7bf71SPeter Wemm **	sendmail 8.9.1		bind-8.1.2		db-2.4.14
126776b7bf71SPeter Wemm **	gcc-2.8.1		glibc-2.0.94		linux-2.1.109
1268c2aa98e2SPeter Wemm **
1269c2aa98e2SPeter Wemm **  NOTE: Override HASFLOCK as you will but, as of 1.99.6, mixed-style
1270c2aa98e2SPeter Wemm ** 	file locking is no longer allowed.  In particular, make sure
1271c2aa98e2SPeter Wemm **	your DBM library and sendmail are both using either flock(2)
1272c2aa98e2SPeter Wemm **	*or* fcntl(2) file locking, but not both.
1273c2aa98e2SPeter Wemm */
1274c2aa98e2SPeter Wemm 
1275c2aa98e2SPeter Wemm #ifdef __linux__
1276c2aa98e2SPeter Wemm # define BSD		1	/* include BSD defines */
127776b7bf71SPeter Wemm # define USESETEUID	0	/* Have it due to POSIX, but doesn't work */
1278c2aa98e2SPeter Wemm # define NEEDGETOPT	1	/* need a replacement for getopt(3) */
1279c2aa98e2SPeter Wemm # define HASUNAME	1	/* use System V uname(2) system call */
1280c2aa98e2SPeter Wemm # define HASUNSETENV	1	/* has unsetenv(3) call */
1281c2aa98e2SPeter Wemm # ifndef HASSNPRINTF
1282c2aa98e2SPeter Wemm #  define HASSNPRINTF	1	/* has snprintf(3) and vsnprintf(3) */
1283c2aa98e2SPeter Wemm # endif
1284c2aa98e2SPeter Wemm # define ERRLIST_PREDEFINED	/* don't declare sys_errlist */
1285c2aa98e2SPeter Wemm # define GIDSET_T	gid_t	/* from <linux/types.h> */
1286c2aa98e2SPeter Wemm # define HASGETUSERSHELL 0	/* getusershell(3) broken in Slackware 2.0 */
1287c2aa98e2SPeter Wemm # define IP_SRCROUTE	0	/* linux <= 1.2.8 doesn't support IP_OPTIONS */
1288c2aa98e2SPeter Wemm # define USE_SIGLONGJMP	1	/* sigsetjmp needed for signal handling */
1289c2aa98e2SPeter Wemm # ifndef HASFLOCK
1290c2aa98e2SPeter Wemm #  include <linux/version.h>
1291c2aa98e2SPeter Wemm #  if LINUX_VERSION_CODE < 66399
1292c2aa98e2SPeter Wemm #   define HASFLOCK	0	/* flock(2) is broken after 0.99.13 */
1293c2aa98e2SPeter Wemm #  else
1294c2aa98e2SPeter Wemm #   define HASFLOCK	1	/* flock(2) fixed after 1.3.95 */
1295c2aa98e2SPeter Wemm #  endif
1296c2aa98e2SPeter Wemm # endif
1297c2aa98e2SPeter Wemm # ifndef LA_TYPE
1298c2aa98e2SPeter Wemm #  define LA_TYPE	LA_PROCSTR
1299c2aa98e2SPeter Wemm # endif
1300c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_VFS		/* use <sys/vfs.h> statfs() impl */
1301c2aa98e2SPeter Wemm # define SPT_PADCHAR	'\0'		/* pad process title with nulls */
1302e01d6f61SPeter Wemm # ifndef TZ_TYPE
1303e01d6f61SPeter Wemm #  define TZ_TYPE	TZ_NONE		/* no standard for Linux */
1304e01d6f61SPeter Wemm # endif
1305c2aa98e2SPeter Wemm # ifndef _PATH_SENDMAILPID
1306c2aa98e2SPeter Wemm #  define _PATH_SENDMAILPID	"/var/run/sendmail.pid"
1307c2aa98e2SPeter Wemm # endif
1308c2aa98e2SPeter Wemm # include <sys/sysmacros.h>
1309c2aa98e2SPeter Wemm # undef atol			/* wounded in <stdlib.h> */
1310c2aa98e2SPeter Wemm #endif
1311c2aa98e2SPeter Wemm 
1312c2aa98e2SPeter Wemm 
1313c2aa98e2SPeter Wemm /*
1314c2aa98e2SPeter Wemm **  DELL SVR4 Issue 2.2, and others
1315c2aa98e2SPeter Wemm **	From Kimmo Suominen <kim@grendel.lut.fi>
1316c2aa98e2SPeter Wemm **
1317c2aa98e2SPeter Wemm **	It's on #ifdef DELL_SVR4 because Solaris also gets __svr4__
1318c2aa98e2SPeter Wemm **	defined, and the definitions conflict.
1319c2aa98e2SPeter Wemm **
1320c2aa98e2SPeter Wemm **	Peter Wemm <peter@perth.DIALix.oz.au> claims that the setreuid
1321c2aa98e2SPeter Wemm **	trick works on DELL 2.2 (SVR4.0/386 version 4.0) and ESIX 4.0.3A
1322c2aa98e2SPeter Wemm **	(SVR4.0/386 version 3.0).
1323c2aa98e2SPeter Wemm */
1324c2aa98e2SPeter Wemm 
1325c2aa98e2SPeter Wemm #ifdef DELL_SVR4
1326c2aa98e2SPeter Wemm 				/* no changes necessary */
1327c2aa98e2SPeter Wemm 				/* see general __svr4__ defines below */
1328c2aa98e2SPeter Wemm #endif
1329c2aa98e2SPeter Wemm 
1330c2aa98e2SPeter Wemm 
1331c2aa98e2SPeter Wemm /*
1332c2aa98e2SPeter Wemm **  Apple A/UX 3.0
1333c2aa98e2SPeter Wemm */
1334c2aa98e2SPeter Wemm 
1335c2aa98e2SPeter Wemm #ifdef _AUX_SOURCE
1336c2aa98e2SPeter Wemm # include <sys/sysmacros.h>
1337c2aa98e2SPeter Wemm # define BSD			/* has BSD routines */
1338c2aa98e2SPeter Wemm # define HASSETRLIMIT	0	/* ... but not setrlimit(2) */
1339c2aa98e2SPeter Wemm # define BROKEN_RES_SEARCH 1	/* res_search(unknown) returns h_errno=0 */
1340c2aa98e2SPeter Wemm # define BOGUS_O_EXCL	1	/* exclusive open follows symlinks */
1341c2aa98e2SPeter Wemm # define HASUNAME	1	/* use System V uname(2) system call */
1342c2aa98e2SPeter Wemm # define HASFCHMOD	1	/* has fchmod(2) syscall */
1343c2aa98e2SPeter Wemm # define HASINITGROUPS	1	/* has initgroups(3) call */
1344c2aa98e2SPeter Wemm # define HASSETVBUF	1	/* has setvbuf(3) in libc */
1345c2aa98e2SPeter Wemm # define HASSTRERROR	1	/* has strerror(3) */
1346c2aa98e2SPeter Wemm # define SIGFUNC_DEFINED	/* sigfunc_t already defined */
1347c2aa98e2SPeter Wemm # define SIGFUNC_RETURN		/* POSIX-mode */
1348c2aa98e2SPeter Wemm # define SIGFUNC_DECL	void	/* POSIX-mode */
1349c2aa98e2SPeter Wemm # define ERRLIST_PREDEFINED	1
1350c2aa98e2SPeter Wemm # ifndef IDENTPROTO
1351c2aa98e2SPeter Wemm #  define IDENTPROTO	0	/* TCP/IP implementation is broken */
1352c2aa98e2SPeter Wemm # endif
1353c2aa98e2SPeter Wemm # ifndef LA_TYPE
1354c2aa98e2SPeter Wemm #  define LA_TYPE	LA_INT
1355c2aa98e2SPeter Wemm #  define FSHIFT	16
1356c2aa98e2SPeter Wemm # endif
1357c2aa98e2SPeter Wemm # define LA_AVENRUN	"avenrun"
1358c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_VFS	/* use <sys/vfs.h> statfs() implementation */
1359c2aa98e2SPeter Wemm # define TZ_TYPE	TZ_TZNAME
1360c2aa98e2SPeter Wemm # ifndef _PATH_UNIX
1361c2aa98e2SPeter Wemm #  define _PATH_UNIX		"/unix"		/* should be in <paths.h> */
1362c2aa98e2SPeter Wemm # endif
1363c2aa98e2SPeter Wemm # ifndef _PATH_VENDOR_CF
1364c2aa98e2SPeter Wemm #  define _PATH_VENDOR_CF	"/usr/lib/sendmail.cf"
1365c2aa98e2SPeter Wemm # endif
1366c2aa98e2SPeter Wemm # undef WIFEXITED
1367c2aa98e2SPeter Wemm # undef WEXITSTATUS
1368c2aa98e2SPeter Wemm #endif
1369c2aa98e2SPeter Wemm 
1370c2aa98e2SPeter Wemm 
1371c2aa98e2SPeter Wemm /*
1372c2aa98e2SPeter Wemm **  Encore UMAX V
1373c2aa98e2SPeter Wemm **
1374c2aa98e2SPeter Wemm **	Not extensively tested.
1375c2aa98e2SPeter Wemm */
1376c2aa98e2SPeter Wemm 
1377c2aa98e2SPeter Wemm #ifdef UMAXV
1378c2aa98e2SPeter Wemm # define HASUNAME	1	/* use System V uname(2) system call */
1379c2aa98e2SPeter Wemm # define HASSETVBUF	1	/* we have setvbuf(3) in libc */
1380c2aa98e2SPeter Wemm # define HASINITGROUPS	1	/* has initgroups(3) call */
1381c2aa98e2SPeter Wemm # define HASGETUSERSHELL 0	/* does not have getusershell(3) call */
1382c2aa98e2SPeter Wemm # define SYS5SIGNALS	1	/* SysV signal semantics -- reset on each sig */
1383c2aa98e2SPeter Wemm # define SYS5SETPGRP	1	/* use System V setpgrp(2) syscall */
1384c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_4ARGS	/* four argument statfs() call */
1385c2aa98e2SPeter Wemm # define MAXPATHLEN	PATH_MAX
1386c2aa98e2SPeter Wemm extern struct passwd	*getpwent(), *getpwnam(), *getpwuid();
1387c2aa98e2SPeter Wemm extern struct group	*getgrent(), *getgrnam(), *getgrgid();
1388c2aa98e2SPeter Wemm # undef WIFEXITED
1389c2aa98e2SPeter Wemm # undef WEXITSTATUS
1390c2aa98e2SPeter Wemm #endif
1391c2aa98e2SPeter Wemm 
1392c2aa98e2SPeter Wemm 
1393c2aa98e2SPeter Wemm /*
1394c2aa98e2SPeter Wemm **  Stardent Titan 3000 running TitanOS 4.2.
1395c2aa98e2SPeter Wemm **
1396c2aa98e2SPeter Wemm **	Must be compiled in "cc -43" mode.
1397c2aa98e2SPeter Wemm **
1398c2aa98e2SPeter Wemm **	From Kate Hedstrom <kate@ahab.rutgers.edu>.
1399c2aa98e2SPeter Wemm **
1400c2aa98e2SPeter Wemm **	Note the tweaking below after the BSD defines are set.
1401c2aa98e2SPeter Wemm */
1402c2aa98e2SPeter Wemm 
1403c2aa98e2SPeter Wemm #ifdef titan
1404c2aa98e2SPeter Wemm # define setpgid	setpgrp
1405c2aa98e2SPeter Wemm typedef int		pid_t;
1406c2aa98e2SPeter Wemm # undef WIFEXITED
1407c2aa98e2SPeter Wemm # undef WEXITSTATUS
1408c2aa98e2SPeter Wemm #endif
1409c2aa98e2SPeter Wemm 
1410c2aa98e2SPeter Wemm 
1411c2aa98e2SPeter Wemm /*
1412c2aa98e2SPeter Wemm **  Sequent DYNIX 3.2.0
1413c2aa98e2SPeter Wemm **
1414c2aa98e2SPeter Wemm **	From Jim Davis <jdavis@cs.arizona.edu>.
1415c2aa98e2SPeter Wemm */
1416c2aa98e2SPeter Wemm 
1417c2aa98e2SPeter Wemm #ifdef sequent
1418c2aa98e2SPeter Wemm 
1419c2aa98e2SPeter Wemm # define BSD		1
1420c2aa98e2SPeter Wemm # define HASUNSETENV	1
1421c2aa98e2SPeter Wemm # define BSD4_3		1	/* to get signal() in conf.c */
1422c2aa98e2SPeter Wemm # define WAITUNION	1
1423c2aa98e2SPeter Wemm # define LA_TYPE	LA_FLOAT
1424c2aa98e2SPeter Wemm # ifdef	_POSIX_VERSION
1425c2aa98e2SPeter Wemm #  undef _POSIX_VERSION		/* set in <unistd.h> */
1426c2aa98e2SPeter Wemm # endif
1427c2aa98e2SPeter Wemm # undef HASSETVBUF		/* don't actually have setvbuf(3) */
1428c2aa98e2SPeter Wemm # define setpgid	setpgrp
1429c2aa98e2SPeter Wemm 
1430c2aa98e2SPeter Wemm /* Have to redefine WIFEXITED to take an int, to work with waitfor() */
1431c2aa98e2SPeter Wemm # undef	WIFEXITED
1432c2aa98e2SPeter Wemm # define WIFEXITED(s)	(((union wait*)&(s))->w_stopval != WSTOPPED && \
1433c2aa98e2SPeter Wemm 			 ((union wait*)&(s))->w_termsig == 0)
1434c2aa98e2SPeter Wemm # define WEXITSTATUS(s)	(((union wait*)&(s))->w_retcode)
1435c2aa98e2SPeter Wemm typedef int		pid_t;
1436c2aa98e2SPeter Wemm # define isgraph(c)	(isprint(c) && (c != ' '))
1437c2aa98e2SPeter Wemm 
1438c2aa98e2SPeter Wemm # ifndef IDENTPROTO
1439c2aa98e2SPeter Wemm #  define IDENTPROTO	0	/* TCP/IP implementation is broken */
1440c2aa98e2SPeter Wemm # endif
1441c2aa98e2SPeter Wemm 
1442c2aa98e2SPeter Wemm # ifndef _PATH_UNIX
1443c2aa98e2SPeter Wemm #  define _PATH_UNIX		"/dynix"
1444c2aa98e2SPeter Wemm # endif
1445c2aa98e2SPeter Wemm # ifndef _PATH_VENDOR_CF
1446c2aa98e2SPeter Wemm #  define _PATH_VENDOR_CF	"/usr/lib/sendmail.cf"
1447c2aa98e2SPeter Wemm # endif
1448c2aa98e2SPeter Wemm #endif
1449c2aa98e2SPeter Wemm 
1450c2aa98e2SPeter Wemm 
1451c2aa98e2SPeter Wemm /*
1452c2aa98e2SPeter Wemm **  Sequent DYNIX/ptx v2.0 (and higher)
1453c2aa98e2SPeter Wemm **
1454c2aa98e2SPeter Wemm **	For DYNIX/ptx v1.x, undefine HASSETREUID.
1455c2aa98e2SPeter Wemm **
1456c2aa98e2SPeter Wemm **	From Tim Wright <timw@sequent.com>.
1457c2aa98e2SPeter Wemm **	Update from Jack Woolley <jwoolley@sctcorp.com>, 26 Dec 1995,
1458c2aa98e2SPeter Wemm **		for DYNIX/ptx 4.0.2.
1459c2aa98e2SPeter Wemm */
1460c2aa98e2SPeter Wemm 
1461c2aa98e2SPeter Wemm #ifdef _SEQUENT_
1462c2aa98e2SPeter Wemm # include <sys/stream.h>
1463c2aa98e2SPeter Wemm # define SYSTEM5	1	/* include all the System V defines */
1464c2aa98e2SPeter Wemm # define HASSETSID	1	/* has POSIX setsid(2) call */
1465c2aa98e2SPeter Wemm # define HASINITGROUPS	1	/* has initgroups(3) call */
1466c2aa98e2SPeter Wemm # define HASSETREUID	1	/* has setreuid(2) call */
1467c2aa98e2SPeter Wemm # define HASGETUSERSHELL 0	/* does not have getusershell(3) call */
1468c2aa98e2SPeter Wemm # define GIDSET_T	gid_t
1469c2aa98e2SPeter Wemm # define LA_TYPE	LA_INT
1470c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_STATFS	/* use <sys/statfs.h> statfs() impl */
1471c2aa98e2SPeter Wemm # define SPT_TYPE	SPT_NONE	/* don't use setproctitle */
1472c2aa98e2SPeter Wemm # ifndef IDENTPROTO
1473c2aa98e2SPeter Wemm #  define IDENTPROTO	0	/* TCP/IP implementation is broken */
1474c2aa98e2SPeter Wemm # endif
1475c2aa98e2SPeter Wemm # ifndef _PATH_VENDOR_CF
1476c2aa98e2SPeter Wemm #  define _PATH_VENDOR_CF	"/usr/lib/sendmail.cf"
1477c2aa98e2SPeter Wemm # endif
1478c2aa98e2SPeter Wemm # ifndef _PATH_SENDMAILPID
1479c2aa98e2SPeter Wemm #  define _PATH_SENDMAILPID	"/etc/sendmail.pid"
1480c2aa98e2SPeter Wemm # endif
1481c2aa98e2SPeter Wemm #endif
1482c2aa98e2SPeter Wemm 
1483c2aa98e2SPeter Wemm 
1484c2aa98e2SPeter Wemm /*
1485c2aa98e2SPeter Wemm **  Cray Unicos
1486c2aa98e2SPeter Wemm **
1487c2aa98e2SPeter Wemm **	Ported by David L. Kensiski, Sterling Sofware <kensiski@nas.nasa.gov>
1488c2aa98e2SPeter Wemm */
1489c2aa98e2SPeter Wemm 
1490c2aa98e2SPeter Wemm #ifdef UNICOS
1491c2aa98e2SPeter Wemm # define SYSTEM5	1	/* include all the System V defines */
1492c2aa98e2SPeter Wemm # define SYS5SIGNALS	1	/* SysV signal semantics -- reset on each sig */
1493c2aa98e2SPeter Wemm # define MAXPATHLEN	PATHSIZE
1494c2aa98e2SPeter Wemm # define LA_TYPE	LA_ZERO
1495c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_4ARGS	/* four argument statfs() call */
1496c2aa98e2SPeter Wemm # define SFS_BAVAIL	f_bfree		/* alternate field name */
1497c2aa98e2SPeter Wemm #endif
1498c2aa98e2SPeter Wemm 
1499c2aa98e2SPeter Wemm 
1500c2aa98e2SPeter Wemm /*
1501c2aa98e2SPeter Wemm **  Apollo DomainOS
1502c2aa98e2SPeter Wemm **
1503c2aa98e2SPeter Wemm **  From Todd Martin <tmartint@tus.ssi1.com> & Don Lewis <gdonl@gv.ssi1.com>
1504c2aa98e2SPeter Wemm **
1505c2aa98e2SPeter Wemm **  15 Jan 1994; updated 2 Aug 1995
1506c2aa98e2SPeter Wemm **
1507c2aa98e2SPeter Wemm */
1508c2aa98e2SPeter Wemm 
1509c2aa98e2SPeter Wemm #ifdef apollo
1510c2aa98e2SPeter Wemm # define HASSETREUID	1	/* has setreuid(2) call */
1511c2aa98e2SPeter Wemm # define HASINITGROUPS	1	/* has initgroups(2) call */
1512c2aa98e2SPeter Wemm # define IP_SRCROUTE	0	/* does not have <netinet/ip_var.h> */
1513c2aa98e2SPeter Wemm # define SPT_TYPE	SPT_NONE	/* don't use setproctitle */
1514c2aa98e2SPeter Wemm # define LA_TYPE	LA_SUBR		/* use getloadavg.c */
1515c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_4ARGS	/* four argument statfs() call */
1516c2aa98e2SPeter Wemm # define SFS_BAVAIL	f_bfree		/* alternate field name */
1517c2aa98e2SPeter Wemm # define TZ_TYPE	TZ_TZNAME
1518c2aa98e2SPeter Wemm # ifndef _PATH_VENDOR_CF
1519c2aa98e2SPeter Wemm #  define _PATH_VENDOR_CF	"/usr/lib/sendmail.cf"
1520c2aa98e2SPeter Wemm # endif
1521c2aa98e2SPeter Wemm # ifndef _PATH_SENDMAILPID
1522c2aa98e2SPeter Wemm #  define _PATH_SENDMAILPID	"/etc/sendmail.pid"
1523c2aa98e2SPeter Wemm # endif
1524c2aa98e2SPeter Wemm # undef  S_IFSOCK		/* S_IFSOCK and S_IFIFO are the same */
1525c2aa98e2SPeter Wemm # undef  S_IFIFO
1526c2aa98e2SPeter Wemm # define S_IFIFO	0010000
1527c2aa98e2SPeter Wemm # ifndef IDENTPROTO
1528c2aa98e2SPeter Wemm #  define IDENTPROTO	0	/* TCP/IP implementation is broken */
1529c2aa98e2SPeter Wemm # endif
1530c2aa98e2SPeter Wemm # define RLIMIT_NEEDS_SYS_TIME_H	1
1531c2aa98e2SPeter Wemm # if defined(NGROUPS_MAX) && !NGROUPS_MAX
1532c2aa98e2SPeter Wemm #  undef NGROUPS_MAX
1533c2aa98e2SPeter Wemm # endif
1534c2aa98e2SPeter Wemm #endif
1535c2aa98e2SPeter Wemm 
153676b7bf71SPeter Wemm /*
153776b7bf71SPeter Wemm **  System V Rel 5.x (a.k.a Unixware7 w/o BSD-Compatiblity Libs ie. native)
153876b7bf71SPeter Wemm **
153976b7bf71SPeter Wemm **	Contributed by Paul Gampe <paulg@apnic.net>
154076b7bf71SPeter Wemm */
154176b7bf71SPeter Wemm 
154276b7bf71SPeter Wemm #ifdef __svr5__
154376b7bf71SPeter Wemm # include <sys/mkdev.h>
154476b7bf71SPeter Wemm # define __svr4__
154576b7bf71SPeter Wemm # define SYS5SIGNALS		1
154676b7bf71SPeter Wemm # define HASSETSID		1
154776b7bf71SPeter Wemm # define HASSETREUID		1
154876b7bf71SPeter Wemm # define HASWAITPID		1
154976b7bf71SPeter Wemm # define HASGETDTABLESIZE	1
155076b7bf71SPeter Wemm # define GIDSET_T		gid_t
155176b7bf71SPeter Wemm # define SOCKADDR_LEN_T		size_t
155276b7bf71SPeter Wemm # define SOCKOPT_LEN_T		size_t
155376b7bf71SPeter Wemm # ifndef _PATH_UNIX
155476b7bf71SPeter Wemm #  define _PATH_UNIX		"/stand/unix"
155576b7bf71SPeter Wemm # endif
155676b7bf71SPeter Wemm # define SPT_PADCHAR		'\0'	/* pad process title with nulls */
155776b7bf71SPeter Wemm # define SYSLOG_BUFSIZE		1024	/* unsure */
155876b7bf71SPeter Wemm # ifndef _PATH_VENDOR_CF
155976b7bf71SPeter Wemm #  define _PATH_VENDOR_CF	"/etc/sendmail.cf"
156076b7bf71SPeter Wemm # endif
156176b7bf71SPeter Wemm # ifndef _PATH_SENDMAILPID
156276b7bf71SPeter Wemm #  define _PATH_SENDMAILPID	"/etc/sendmail.pid"
156376b7bf71SPeter Wemm # endif
156476b7bf71SPeter Wemm #endif
156576b7bf71SPeter Wemm 
156676b7bf71SPeter Wemm /* ###################################################################### */
1567c2aa98e2SPeter Wemm 
1568c2aa98e2SPeter Wemm /*
1569c2aa98e2SPeter Wemm **  UnixWare 2.x
1570c2aa98e2SPeter Wemm */
1571c2aa98e2SPeter Wemm 
1572c2aa98e2SPeter Wemm #ifdef UNIXWARE2
1573c2aa98e2SPeter Wemm # define UNIXWARE	1
1574c2aa98e2SPeter Wemm # define HASSNPRINTF	1	/* has snprintf(3) and vsnprintf(3) */
1575c2aa98e2SPeter Wemm # undef offsetof		/* avoid stddefs.h, sys/sysmacros.h conflict */
1576c2aa98e2SPeter Wemm #endif
1577c2aa98e2SPeter Wemm 
1578c2aa98e2SPeter Wemm 
1579c2aa98e2SPeter Wemm /*
1580c2aa98e2SPeter Wemm **  UnixWare 1.1.2.
1581c2aa98e2SPeter Wemm **
1582c2aa98e2SPeter Wemm **	Updated by Petr Lampa <lampa@fee.vutbr.cz>.
1583c2aa98e2SPeter Wemm **	From Evan Champion <evanc@spatial.synapse.org>.
1584c2aa98e2SPeter Wemm */
1585c2aa98e2SPeter Wemm 
1586c2aa98e2SPeter Wemm #ifdef UNIXWARE
1587c2aa98e2SPeter Wemm # include <sys/mkdev.h>
1588c2aa98e2SPeter Wemm # define SYSTEM5		1
1589c2aa98e2SPeter Wemm # define HASGETUSERSHELL	0	/* does not have getusershell(3) call */
1590c2aa98e2SPeter Wemm # define HASSETREUID		1
1591c2aa98e2SPeter Wemm # define HASSETSID		1
1592c2aa98e2SPeter Wemm # define HASINITGROUPS		1
1593c2aa98e2SPeter Wemm # define GIDSET_T		gid_t
1594c2aa98e2SPeter Wemm # define SLEEP_T		unsigned
1595c2aa98e2SPeter Wemm # define SFS_TYPE		SFS_STATVFS
1596c2aa98e2SPeter Wemm # define LA_TYPE		LA_ZERO
1597c2aa98e2SPeter Wemm # undef WIFEXITED
1598c2aa98e2SPeter Wemm # undef WEXITSTATUS
159976b7bf71SPeter Wemm # ifndef _PATH_UNIX
1600c2aa98e2SPeter Wemm #  define _PATH_UNIX		"/unix"
160176b7bf71SPeter Wemm # endif
1602c2aa98e2SPeter Wemm # ifndef _PATH_VENDOR_CF
1603c2aa98e2SPeter Wemm #  define _PATH_VENDOR_CF	"/usr/ucblib/sendmail.cf"
1604c2aa98e2SPeter Wemm # endif
1605c2aa98e2SPeter Wemm # ifndef _PATH_SENDMAILPID
1606c2aa98e2SPeter Wemm #  define _PATH_SENDMAILPID	"/usr/ucblib/sendmail.pid"
1607c2aa98e2SPeter Wemm # endif
1608c2aa98e2SPeter Wemm # define SYSLOG_BUFSIZE	128
1609c2aa98e2SPeter Wemm #endif
1610c2aa98e2SPeter Wemm 
1611c2aa98e2SPeter Wemm 
1612c2aa98e2SPeter Wemm /*
1613c2aa98e2SPeter Wemm **  Intergraph CLIX 3.1
1614c2aa98e2SPeter Wemm **
1615c2aa98e2SPeter Wemm **	From Paul Southworth <pauls@locust.cic.net>
1616c2aa98e2SPeter Wemm */
1617c2aa98e2SPeter Wemm 
1618c2aa98e2SPeter Wemm #ifdef CLIX
1619c2aa98e2SPeter Wemm # define SYSTEM5	1	/* looks like System V */
1620c2aa98e2SPeter Wemm # ifndef HASGETUSERSHELL
1621c2aa98e2SPeter Wemm #  define HASGETUSERSHELL 0	/* does not have getusershell(3) call */
1622c2aa98e2SPeter Wemm # endif
1623c2aa98e2SPeter Wemm # define DEV_BSIZE	512	/* device block size not defined */
1624c2aa98e2SPeter Wemm # define GIDSET_T	gid_t
1625c2aa98e2SPeter Wemm # undef LOG			/* syslog not available */
1626c2aa98e2SPeter Wemm # define NEEDFSYNC	1	/* no fsync in system library */
1627c2aa98e2SPeter Wemm # define GETSHORT	_getshort
1628c2aa98e2SPeter Wemm #endif
1629c2aa98e2SPeter Wemm 
1630c2aa98e2SPeter Wemm 
1631c2aa98e2SPeter Wemm /*
1632c2aa98e2SPeter Wemm **  NCR MP-RAS 2.x (SysVr4) with Wollongong TCP/IP
1633c2aa98e2SPeter Wemm **
1634c2aa98e2SPeter Wemm **	From Kevin Darcy <kevin@tech.mis.cfc.com>.
1635c2aa98e2SPeter Wemm */
1636c2aa98e2SPeter Wemm 
1637c2aa98e2SPeter Wemm #ifdef NCR_MP_RAS2
1638c2aa98e2SPeter Wemm # include <sys/sockio.h>
1639c2aa98e2SPeter Wemm # define __svr4__
1640c2aa98e2SPeter Wemm # define IP_SRCROUTE	0	/* Something is broken with getsockopt() */
1641c2aa98e2SPeter Wemm # define SYSLOG_BUFSIZE	1024
1642c2aa98e2SPeter Wemm # define SPT_TYPE  SPT_NONE
1643c2aa98e2SPeter Wemm #endif
1644c2aa98e2SPeter Wemm 
1645c2aa98e2SPeter Wemm 
1646c2aa98e2SPeter Wemm /*
1647c2aa98e2SPeter Wemm **  NCR MP-RAS 3.x (SysVr4) with STREAMware TCP/IP
1648c2aa98e2SPeter Wemm **
1649c2aa98e2SPeter Wemm **	From Tom Moore <Tom.Moore@DaytonOH.NCR.COM>
1650c2aa98e2SPeter Wemm */
1651c2aa98e2SPeter Wemm 
1652c2aa98e2SPeter Wemm #ifdef NCR_MP_RAS3
1653c2aa98e2SPeter Wemm # define __svr4__
1654c2aa98e2SPeter Wemm # define SIOCGIFNUM_IS_BROKEN	1	/* SIOCGIFNUM has non-std interface */
1655c2aa98e2SPeter Wemm # define SYSLOG_BUFSIZE	1024
1656c2aa98e2SPeter Wemm # define SPT_TYPE 	SPT_NONE
1657c2aa98e2SPeter Wemm #endif
1658c2aa98e2SPeter Wemm 
1659c2aa98e2SPeter Wemm 
1660c2aa98e2SPeter Wemm /*
1661c2aa98e2SPeter Wemm **  Tandem NonStop-UX SVR4
1662c2aa98e2SPeter Wemm **
1663c2aa98e2SPeter Wemm **	From Rick McCarty <mccarty@mpd.tandem.com>.
1664c2aa98e2SPeter Wemm */
1665c2aa98e2SPeter Wemm 
1666c2aa98e2SPeter Wemm #ifdef NonStop_UX_BXX
1667c2aa98e2SPeter Wemm # define __svr4__
1668c2aa98e2SPeter Wemm #endif
1669c2aa98e2SPeter Wemm 
1670c2aa98e2SPeter Wemm 
1671c2aa98e2SPeter Wemm /*
1672c2aa98e2SPeter Wemm **  Hitachi 3050R & 3050RX Workstations running HI-UX/WE2.
1673c2aa98e2SPeter Wemm **
1674c2aa98e2SPeter Wemm **	Tested for 1.04 and 1.03
1675c2aa98e2SPeter Wemm **	From Akihiro Hashimoto ("Hash") <hash@dominic.ipc.chiba-u.ac.jp>.
1676c2aa98e2SPeter Wemm */
1677c2aa98e2SPeter Wemm 
1678c2aa98e2SPeter Wemm #ifdef __H3050R
1679c2aa98e2SPeter Wemm # define SYSTEM5	1	/* include all the System V defines */
1680c2aa98e2SPeter Wemm # define HASINITGROUPS	1	/* has initgroups(3) call */
1681c2aa98e2SPeter Wemm # define setreuid(r, e)	setresuid(r, e, -1)
1682c2aa98e2SPeter Wemm # define LA_TYPE	LA_FLOAT
1683c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_VFS	/* use <sys/vfs.h> statfs() implementation */
1684c2aa98e2SPeter Wemm # define HASSETVBUF	/* HI-UX has no setlinebuf */
1685c2aa98e2SPeter Wemm # ifndef GIDSET_T
1686c2aa98e2SPeter Wemm #  define GIDSET_T	gid_t
1687c2aa98e2SPeter Wemm # endif
1688c2aa98e2SPeter Wemm # ifndef _PATH_UNIX
1689c2aa98e2SPeter Wemm #  define _PATH_UNIX		"/HI-UX"
1690c2aa98e2SPeter Wemm # endif
1691c2aa98e2SPeter Wemm # ifndef _PATH_VENDOR_CF
1692c2aa98e2SPeter Wemm #  define _PATH_VENDOR_CF	"/usr/lib/sendmail.cf"
1693c2aa98e2SPeter Wemm # endif
1694c2aa98e2SPeter Wemm # ifndef IDENTPROTO
1695c2aa98e2SPeter Wemm #  define IDENTPROTO	0	/* TCP/IP implementation is broken */
1696c2aa98e2SPeter Wemm # endif
1697c2aa98e2SPeter Wemm # ifndef HASGETUSERSHELL
1698c2aa98e2SPeter Wemm #  define HASGETUSERSHELL 0	/* getusershell(3) causes core dumps */
1699c2aa98e2SPeter Wemm # endif
1700c2aa98e2SPeter Wemm 
1701c2aa98e2SPeter Wemm /*
1702c2aa98e2SPeter Wemm **  avoid m_flags conflict between Berkeley DB 1.85 db.h & sys/sysmacros.h
1703c2aa98e2SPeter Wemm **  on HIUX 3050
1704c2aa98e2SPeter Wemm */
1705c2aa98e2SPeter Wemm # undef m_flags
1706c2aa98e2SPeter Wemm 
1707c2aa98e2SPeter Wemm # ifdef __STDC__
1708c2aa98e2SPeter Wemm extern int	syslog(int, char *, ...);
1709c2aa98e2SPeter Wemm #else
1710c2aa98e2SPeter Wemm extern int	syslog();
1711c2aa98e2SPeter Wemm # endif
1712c2aa98e2SPeter Wemm 
1713c2aa98e2SPeter Wemm #endif
1714c2aa98e2SPeter Wemm 
1715c2aa98e2SPeter Wemm 
1716c2aa98e2SPeter Wemm /*
1717c2aa98e2SPeter Wemm **  Amdahl UTS System V 2.1.5 (SVr3-based)
1718c2aa98e2SPeter Wemm **
1719c2aa98e2SPeter Wemm **    From: Janet Jackson <janet@dialix.oz.au>.
1720c2aa98e2SPeter Wemm */
1721c2aa98e2SPeter Wemm 
1722c2aa98e2SPeter Wemm #ifdef _UTS
1723c2aa98e2SPeter Wemm # include <sys/sysmacros.h>
1724c2aa98e2SPeter Wemm # undef HASLSTAT		/* has symlinks, but they cause problems */
1725c2aa98e2SPeter Wemm # define NEEDFSYNC	1	/* system fsync(2) fails on non-EFS filesys */
1726c2aa98e2SPeter Wemm # define SYS5SIGNALS	1	/* System V signal semantics */
1727c2aa98e2SPeter Wemm # define SYS5SETPGRP	1	/* use System V setpgrp(2) syscall */
1728c2aa98e2SPeter Wemm # define HASUNAME	1	/* use System V uname(2) system call */
1729c2aa98e2SPeter Wemm # define HASINITGROUPS	1	/* has initgroups(3) function */
1730c2aa98e2SPeter Wemm # define HASSETVBUF	1	/* has setvbuf(3) function */
1731c2aa98e2SPeter Wemm # ifndef HASGETUSERSHELL
1732c2aa98e2SPeter Wemm #  define HASGETUSERSHELL 0	/* does not have getusershell(3) function */
1733c2aa98e2SPeter Wemm # endif
1734c2aa98e2SPeter Wemm # define GIDSET_T	gid_t	/* type of 2nd arg to getgroups(2) isn't int */
1735c2aa98e2SPeter Wemm # define LA_TYPE	LA_ZERO		/* doesn't have load average */
1736c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_4ARGS	/* use 4-arg statfs() */
1737c2aa98e2SPeter Wemm # define SFS_BAVAIL	f_bfree		/* alternate field name */
1738c2aa98e2SPeter Wemm # define _PATH_UNIX		"/unix"
1739c2aa98e2SPeter Wemm # ifndef _PATH_VENDOR_CF
1740c2aa98e2SPeter Wemm #  define _PATH_VENDOR_CF	"/usr/lib/sendmail.cf"
1741c2aa98e2SPeter Wemm # endif
1742c2aa98e2SPeter Wemm #endif
1743c2aa98e2SPeter Wemm 
1744c2aa98e2SPeter Wemm /*
1745c2aa98e2SPeter Wemm **  Cray Computer Corporation's CSOS
1746c2aa98e2SPeter Wemm **
1747c2aa98e2SPeter Wemm **	From Scott Bolte <scott@craycos.com>.
1748c2aa98e2SPeter Wemm */
1749c2aa98e2SPeter Wemm 
1750c2aa98e2SPeter Wemm #ifdef _CRAYCOM
1751c2aa98e2SPeter Wemm # define SYSTEM5	1	/* include all the System V defines */
1752c2aa98e2SPeter Wemm # define SYS5SIGNALS	1	/* SysV signal semantics -- reset on each sig */
1753c2aa98e2SPeter Wemm # define NEEDFSYNC	1	/* no fsync in system library */
1754c2aa98e2SPeter Wemm # define MAXPATHLEN	PATHSIZE
1755c2aa98e2SPeter Wemm # define LA_TYPE	LA_ZERO
1756c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_4ARGS	/* four argument statfs() call */
1757c2aa98e2SPeter Wemm # define SFS_BAVAIL	f_bfree		/* alternate field name */
1758c2aa98e2SPeter Wemm # define _POSIX_CHOWN_RESTRICTED	-1
1759c2aa98e2SPeter Wemm extern struct group	*getgrent(), *getgrnam(), *getgrgid();
1760c2aa98e2SPeter Wemm #endif
1761c2aa98e2SPeter Wemm 
1762c2aa98e2SPeter Wemm 
1763c2aa98e2SPeter Wemm /*
1764c2aa98e2SPeter Wemm **  Sony NEWS-OS 4.2.1R and 6.0.3
1765c2aa98e2SPeter Wemm **
1766c2aa98e2SPeter Wemm **	From Motonori NAKAMURA <motonori@cs.ritsumei.ac.jp>.
1767c2aa98e2SPeter Wemm */
1768c2aa98e2SPeter Wemm 
1769c2aa98e2SPeter Wemm #ifdef sony_news
1770c2aa98e2SPeter Wemm # ifndef __svr4
1771c2aa98e2SPeter Wemm 			/* NEWS-OS 4.2.1R */
1772c2aa98e2SPeter Wemm #  ifndef BSD
1773c2aa98e2SPeter Wemm #   define BSD			/* has BSD routines */
1774c2aa98e2SPeter Wemm #  endif
1775c2aa98e2SPeter Wemm #  define HASUNSETENV	1	/* has unsetenv(2) call */
1776c2aa98e2SPeter Wemm #  undef HASSETVBUF		/* don't actually have setvbuf(3) */
1777c2aa98e2SPeter Wemm #  define WAITUNION	1	/* use "union wait" as wait argument type */
1778c2aa98e2SPeter Wemm #  define LA_TYPE	LA_INT
1779c2aa98e2SPeter Wemm #  define SFS_TYPE	SFS_VFS /* use <sys/vfs.h> statfs() implementation */
1780c2aa98e2SPeter Wemm #  ifndef HASFLOCK
1781c2aa98e2SPeter Wemm #   define HASFLOCK	1	/* has flock(2) call */
1782c2aa98e2SPeter Wemm #  endif
1783c2aa98e2SPeter Wemm #  define setpgid	setpgrp
1784c2aa98e2SPeter Wemm #  undef WIFEXITED
1785c2aa98e2SPeter Wemm #  undef WEXITSTATUS
1786c2aa98e2SPeter Wemm #  define MODE_T	int	/* system include files have no mode_t */
1787c2aa98e2SPeter Wemm typedef int		pid_t;
1788c2aa98e2SPeter Wemm typedef int		(*sigfunc_t)();
1789c2aa98e2SPeter Wemm #  define SIGFUNC_DEFINED
1790c2aa98e2SPeter Wemm #  define SIGFUNC_RETURN	(0)
1791c2aa98e2SPeter Wemm #  define SIGFUNC_DECL		int
1792c2aa98e2SPeter Wemm 
1793c2aa98e2SPeter Wemm # else
1794c2aa98e2SPeter Wemm 			/* NEWS-OS 6.0.3 with /bin/cc */
1795c2aa98e2SPeter Wemm #  ifndef __svr4__
1796c2aa98e2SPeter Wemm #   define __svr4__		/* use all System V Releae 4 defines below */
1797c2aa98e2SPeter Wemm #  endif
1798c2aa98e2SPeter Wemm #  define HASSETSID	1	/* has Posix setsid(2) call */
1799c2aa98e2SPeter Wemm #  define HASGETUSERSHELL 1	/* DOES have getusershell(3) call in libc */
1800c2aa98e2SPeter Wemm #  define LA_TYPE	LA_READKSYM	/* use MIOC_READKSYM ioctl */
1801c2aa98e2SPeter Wemm #  ifndef SPT_TYPE
1802c2aa98e2SPeter Wemm #   define SPT_TYPE	SPT_SYSMIPS	/* use sysmips() (OS 6.0.2 or later) */
1803c2aa98e2SPeter Wemm #  endif
1804c2aa98e2SPeter Wemm #  define GIDSET_T	gid_t
1805c2aa98e2SPeter Wemm #  undef WIFEXITED
1806c2aa98e2SPeter Wemm #  undef WEXITSTATUS
1807c2aa98e2SPeter Wemm #  ifndef SYSLOG_BUFSIZE
1808c2aa98e2SPeter Wemm #   define SYSLOG_BUFSIZE	1024
1809c2aa98e2SPeter Wemm #  endif
1810c2aa98e2SPeter Wemm #  define _PATH_UNIX		"/stand/unix"
1811c2aa98e2SPeter Wemm #  ifndef _PATH_VENDOR_CF
1812c2aa98e2SPeter Wemm #   define _PATH_VENDOR_CF	"/etc/mail/sendmail.cf"
1813c2aa98e2SPeter Wemm #  endif
1814c2aa98e2SPeter Wemm #  ifndef _PATH_SENDMAILPID
1815c2aa98e2SPeter Wemm #   define _PATH_SENDMAILPID	"/etc/mail/sendmail.pid"
1816c2aa98e2SPeter Wemm #  endif
1817c2aa98e2SPeter Wemm 
1818c2aa98e2SPeter Wemm # endif
1819c2aa98e2SPeter Wemm #endif
1820c2aa98e2SPeter Wemm 
1821c2aa98e2SPeter Wemm 
1822c2aa98e2SPeter Wemm /*
1823c2aa98e2SPeter Wemm **  Omron LUNA/UNIOS-B 3.0, LUNA2/Mach and LUNA88K Mach
1824c2aa98e2SPeter Wemm **
1825c2aa98e2SPeter Wemm **	From Motonori NAKAMURA <motonori@cs.ritsumei.ac.jp>.
1826c2aa98e2SPeter Wemm */
1827c2aa98e2SPeter Wemm 
1828c2aa98e2SPeter Wemm #ifdef luna
1829c2aa98e2SPeter Wemm # ifndef IDENTPROTO
1830c2aa98e2SPeter Wemm #  define IDENTPROTO	0	/* TCP/IP implementation is broken */
1831c2aa98e2SPeter Wemm # endif
1832c2aa98e2SPeter Wemm # define HASUNSETENV	1	/* has unsetenv(2) call */
1833c2aa98e2SPeter Wemm # define NEEDPUTENV	1	/* need putenv(3) call */
1834c2aa98e2SPeter Wemm # define NEEDGETOPT	1	/* need a replacement for getopt(3) */
1835c2aa98e2SPeter Wemm # define NEEDSTRSTR	1	/* need emulation of the strstr(3) call */
1836c2aa98e2SPeter Wemm # define WAITUNION	1	/* use "union wait" as wait argument type */
1837c2aa98e2SPeter Wemm # ifdef uniosb
1838c2aa98e2SPeter Wemm #  include <sys/time.h>
1839c2aa98e2SPeter Wemm #  define NEEDVPRINTF	1	/* need a replacement for vprintf(3) */
1840c2aa98e2SPeter Wemm #  define LA_TYPE	LA_INT
1841c2aa98e2SPeter Wemm #  define TZ_TYPE	TZ_TM_ZONE	/* use tm->tm_zone */
1842c2aa98e2SPeter Wemm # endif
1843c2aa98e2SPeter Wemm # ifdef luna2
1844c2aa98e2SPeter Wemm #  define LA_TYPE	LA_SUBR
1845c2aa98e2SPeter Wemm #  define TZ_TYPE	TZ_TM_ZONE	/* use tm->tm_zone */
1846c2aa98e2SPeter Wemm # endif
1847c2aa98e2SPeter Wemm # ifdef luna88k
1848c2aa98e2SPeter Wemm #  define HASSNPRINTF	1	/* has snprintf(3) and vsnprintf(3) */
1849c2aa98e2SPeter Wemm #  define LA_TYPE	LA_INT
1850c2aa98e2SPeter Wemm # endif
1851c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_VFS /* use <sys/vfs.h> statfs() implementation */
1852c2aa98e2SPeter Wemm # define setpgid	setpgrp
1853c2aa98e2SPeter Wemm # undef WIFEXITED
1854c2aa98e2SPeter Wemm # undef WEXITSTATUS
1855c2aa98e2SPeter Wemm typedef int		pid_t;
1856c2aa98e2SPeter Wemm typedef int		(*sigfunc_t)();
1857c2aa98e2SPeter Wemm # define SIGFUNC_DEFINED
1858c2aa98e2SPeter Wemm # define SIGFUNC_RETURN	(0)
1859c2aa98e2SPeter Wemm # define SIGFUNC_DECL	int
1860c2aa98e2SPeter Wemm extern char	*getenv();
1861c2aa98e2SPeter Wemm extern int	errno;
1862c2aa98e2SPeter Wemm # ifndef _PATH_VENDOR_CF
1863c2aa98e2SPeter Wemm #  define _PATH_VENDOR_CF	"/usr/lib/sendmail.cf"
1864c2aa98e2SPeter Wemm # endif
1865c2aa98e2SPeter Wemm #endif
1866c2aa98e2SPeter Wemm 
1867c2aa98e2SPeter Wemm 
1868c2aa98e2SPeter Wemm /*
1869c2aa98e2SPeter Wemm **  NEC EWS-UX/V 4.2 (with /usr/ucb/cc)
1870c2aa98e2SPeter Wemm **
1871c2aa98e2SPeter Wemm **	From Motonori NAKAMURA <motonori@cs.ritsumei.ac.jp>.
1872c2aa98e2SPeter Wemm */
1873c2aa98e2SPeter Wemm 
1874c2aa98e2SPeter Wemm #if defined(nec_ews_svr4) || defined(_nec_ews_svr4)
1875c2aa98e2SPeter Wemm # ifndef __svr4__
1876c2aa98e2SPeter Wemm #  define __svr4__		/* use all System V Releae 4 defines below */
1877c2aa98e2SPeter Wemm # endif
1878c2aa98e2SPeter Wemm # define SYS5SIGNALS	1	/* SysV signal semantics -- reset on each sig */
1879c2aa98e2SPeter Wemm # define HASSETSID	1	/* has Posix setsid(2) call */
1880c2aa98e2SPeter Wemm # define LA_TYPE	LA_READKSYM	/* use MIOC_READSYM ioctl */
1881c2aa98e2SPeter Wemm # define SFS_TYPE	SFS_USTAT	/* use System V ustat(2) syscall */
1882c2aa98e2SPeter Wemm # define GIDSET_T	gid_t
1883c2aa98e2SPeter Wemm # undef WIFEXITED
1884c2aa98e2SPeter Wemm # undef WEXITSTATUS
1885c2aa98e2SPeter Wemm # define NAMELISTMASK	0x7fffffff	/* mask for nlist() values */
1886c2aa98e2SPeter Wemm # ifndef SYSLOG_BUFSIZE
1887c2aa98e2SPeter Wemm #  define SYSLOG_BUFSIZE	1024	/* allow full size syslog buffer */
1888c2aa98e2SPeter Wemm # endif
1889c2aa98e2SPeter Wemm #endif
1890c2aa98e2SPeter Wemm 
1891c2aa98e2SPeter Wemm 
1892c2aa98e2SPeter Wemm /*
1893c2aa98e2SPeter Wemm **  Fujitsu/ICL UXP/DS (For the DS/90 Series)
1894c2aa98e2SPeter Wemm **
1895c2aa98e2SPeter Wemm **	From Diego R. Lopez <drlopez@cica.es>.
1896c2aa98e2SPeter Wemm **	Additional changes from Fumio Moriya and Toshiaki Nomura of the
1897c2aa98e2SPeter Wemm **		Fujitsu Fresoftware gruop <dsfrsoft@oai6.yk.fujitsu.co.jp>.
1898c2aa98e2SPeter Wemm */
1899c2aa98e2SPeter Wemm 
1900c2aa98e2SPeter Wemm #ifdef __uxp__
1901c2aa98e2SPeter Wemm # include <arpa/nameser.h>
1902c2aa98e2SPeter Wemm # include <sys/sysmacros.h>
1903c2aa98e2SPeter Wemm # include <sys/mkdev.h>
1904c2aa98e2SPeter Wemm # define __svr4__
1905c2aa98e2SPeter Wemm # define HASGETUSERSHELL	0
1906c2aa98e2SPeter Wemm # define HASFLOCK		0
1907c2aa98e2SPeter Wemm # if UXPDS == 10
1908c2aa98e2SPeter Wemm #  define HASSNPRINTF		0	/* no snprintf(3) or vsnprintf(3) */
1909c2aa98e2SPeter Wemm # else
1910c2aa98e2SPeter Wemm #  define HASSNPRINTF		1	/* has snprintf(3) and vsnprintf(3) */
1911c2aa98e2SPeter Wemm # endif
1912c2aa98e2SPeter Wemm # define _PATH_UNIX		"/stand/unix"
1913c2aa98e2SPeter Wemm # ifndef _PATH_VENDOR_CF
1914c2aa98e2SPeter Wemm #  define _PATH_VENDOR_CF	"/usr/ucblib/sendmail.cf"
1915c2aa98e2SPeter Wemm # endif
1916c2aa98e2SPeter Wemm # ifndef _PATH_SENDMAILPID
1917c2aa98e2SPeter Wemm #  define _PATH_SENDMAILPID	"/usr/ucblib/sendmail.pid"
1918c2aa98e2SPeter Wemm # endif
1919c2aa98e2SPeter Wemm #endif
1920c2aa98e2SPeter Wemm 
1921c2aa98e2SPeter Wemm /*
1922c2aa98e2SPeter Wemm **  Pyramid DC/OSx
1923c2aa98e2SPeter Wemm **
1924c2aa98e2SPeter Wemm **	From Earle Ake <akee@wpdiss1.wpafb.af.mil>.
1925c2aa98e2SPeter Wemm */
1926c2aa98e2SPeter Wemm 
1927c2aa98e2SPeter Wemm #ifdef DCOSx
1928c2aa98e2SPeter Wemm # define GIDSET_T	gid_t
1929c2aa98e2SPeter Wemm # ifndef IDENTPROTO
1930c2aa98e2SPeter Wemm #  define IDENTPROTO	0	/* TCP/IP implementation is broken */
1931c2aa98e2SPeter Wemm # endif
1932c2aa98e2SPeter Wemm #endif
1933c2aa98e2SPeter Wemm 
1934c2aa98e2SPeter Wemm /*
1935c2aa98e2SPeter Wemm **  Concurrent Computer Corporation Maxion
1936c2aa98e2SPeter Wemm **
1937c2aa98e2SPeter Wemm **	From Donald R. Laster Jr. <laster@access.digex.net>.
1938c2aa98e2SPeter Wemm */
1939c2aa98e2SPeter Wemm 
1940c2aa98e2SPeter Wemm #ifdef __MAXION__
1941c2aa98e2SPeter Wemm 
1942c2aa98e2SPeter Wemm # include <sys/stream.h>
1943c2aa98e2SPeter Wemm # define __svr4__		1	/* SVR4.2MP */
1944c2aa98e2SPeter Wemm # define HASSETREUID		1	/* have setreuid(2) */
1945c2aa98e2SPeter Wemm # define HASLSTAT		1	/* have lstat(2) */
1946c2aa98e2SPeter Wemm # define HASSETRLIMIT		1	/* have setrlimit(2) */
1947c2aa98e2SPeter Wemm # define HASGETDTABLESIZE	1	/* have getdtablesize(2) */
1948c2aa98e2SPeter Wemm # define HASSNPRINTF		1	/* have snprintf(3) */
1949c2aa98e2SPeter Wemm # define HASGETUSERSHELL	1	/* have getusershell(3) */
1950c2aa98e2SPeter Wemm # define NOFTRUNCATE		1	/* do not have ftruncate(2) */
1951c2aa98e2SPeter Wemm # define SLEEP_T		unsigned
1952c2aa98e2SPeter Wemm # define SFS_TYPE		SFS_STATVFS
1953c2aa98e2SPeter Wemm # define SFS_BAVAIL		f_bavail
1954c2aa98e2SPeter Wemm # ifndef SYSLOG_BUFSIZE
1955c2aa98e2SPeter Wemm #  define SYSLOG_BUFSIZE	256	/* Use 256 bytes */
1956c2aa98e2SPeter Wemm # endif
1957c2aa98e2SPeter Wemm 
1958c2aa98e2SPeter Wemm # undef WUNTRACED
1959c2aa98e2SPeter Wemm # undef WIFEXITED
1960c2aa98e2SPeter Wemm # undef WIFSIGNALED
1961c2aa98e2SPeter Wemm # undef WIFSTOPPED
1962c2aa98e2SPeter Wemm # undef WEXITSTATUS
1963c2aa98e2SPeter Wemm # undef WTERMSIG
1964c2aa98e2SPeter Wemm # undef WSTOPSIG
1965c2aa98e2SPeter Wemm 
1966c2aa98e2SPeter Wemm #endif
1967c2aa98e2SPeter Wemm 
1968c2aa98e2SPeter Wemm /*
1969c2aa98e2SPeter Wemm **  Harris Nighthawk PowerUX (nh6000 box)
1970c2aa98e2SPeter Wemm **
1971c2aa98e2SPeter Wemm **  Contributed by Bob Miorelli, Pratt & Whitney <miorelli@pweh.com>
1972c2aa98e2SPeter Wemm */
1973c2aa98e2SPeter Wemm 
1974c2aa98e2SPeter Wemm #ifdef _PowerUX
1975c2aa98e2SPeter Wemm # ifndef __svr4__
1976c2aa98e2SPeter Wemm #  define __svr4__
1977c2aa98e2SPeter Wemm # endif
1978c2aa98e2SPeter Wemm # ifndef _PATH_VENDOR_CF
1979c2aa98e2SPeter Wemm #  define _PATH_VENDOR_CF	"/etc/mail/sendmail.cf"
1980c2aa98e2SPeter Wemm # endif
1981c2aa98e2SPeter Wemm # ifndef _PATH_SENDMAILPID
1982c2aa98e2SPeter Wemm #  define _PATH_SENDMAILPID	"/etc/mail/sendmail.pid"
1983c2aa98e2SPeter Wemm # endif
1984c2aa98e2SPeter Wemm # define SYSLOG_BUFSIZE		1024
1985c2aa98e2SPeter Wemm # define HASSNPRINTF		1	/* has snprintf(3) and vsnprintf(3) */
1986c2aa98e2SPeter Wemm # define LA_TYPE		LA_ZERO
1987c2aa98e2SPeter Wemm typedef struct msgb		mblk_t;
1988c2aa98e2SPeter Wemm # undef offsetof	/* avoid stddefs.h and sys/sysmacros.h conflict */
1989c2aa98e2SPeter Wemm #endif
1990c2aa98e2SPeter Wemm 
1991c2aa98e2SPeter Wemm /*
1992c2aa98e2SPeter Wemm **  Siemens Nixdorf Informationssysteme AG SINIX
1993c2aa98e2SPeter Wemm **
1994c2aa98e2SPeter Wemm **	Contributed by Gerald Rinske <Gerald.Rinske@mch.sni.de>
1995c2aa98e2SPeter Wemm **	of Siemens Business Services VAS.
1996c2aa98e2SPeter Wemm */
1997c2aa98e2SPeter Wemm #ifdef sinix
1998c2aa98e2SPeter Wemm # define SYSLOG_BUFSIZE		1024
1999c2aa98e2SPeter Wemm #endif
2000c2aa98e2SPeter Wemm 
2001c2aa98e2SPeter Wemm /*
2002c2aa98e2SPeter Wemm **  CRAY T3E
2003c2aa98e2SPeter Wemm **
2004c2aa98e2SPeter Wemm **	Contributed by Manu Mahonen <mailadm@csc.fi>
2005c2aa98e2SPeter Wemm **	of Center for Scientific Computing.
2006c2aa98e2SPeter Wemm */
2007c2aa98e2SPeter Wemm #ifdef _CRAY
2008c2aa98e2SPeter Wemm # define GET_IPOPT_DST(dst)	*(struct in_addr *)&(dst)
2009c2aa98e2SPeter Wemm #endif
2010c2aa98e2SPeter Wemm 
2011c2aa98e2SPeter Wemm /**********************************************************************
2012c2aa98e2SPeter Wemm **  End of Per-Operating System defines
2013c2aa98e2SPeter Wemm **********************************************************************/
2014c2aa98e2SPeter Wemm /**********************************************************************
2015c2aa98e2SPeter Wemm **  More general defines
2016c2aa98e2SPeter Wemm **********************************************************************/
2017c2aa98e2SPeter Wemm 
2018c2aa98e2SPeter Wemm /* general BSD defines */
2019c2aa98e2SPeter Wemm #ifdef BSD
2020c2aa98e2SPeter Wemm # define HASGETDTABLESIZE 1	/* has getdtablesize(2) call */
2021c2aa98e2SPeter Wemm # define HASSETREUID	1	/* has setreuid(2) call */
2022c2aa98e2SPeter Wemm # define HASINITGROUPS	1	/* has initgroups(3) call */
2023c2aa98e2SPeter Wemm # ifndef IP_SRCROUTE
2024c2aa98e2SPeter Wemm #  define IP_SRCROUTE	1	/* can check IP source routing */
2025c2aa98e2SPeter Wemm # endif
2026c2aa98e2SPeter Wemm # ifndef HASSETRLIMIT
2027c2aa98e2SPeter Wemm #  define HASSETRLIMIT	1	/* has setrlimit(2) call */
2028c2aa98e2SPeter Wemm # endif
2029c2aa98e2SPeter Wemm # ifndef HASFLOCK
2030c2aa98e2SPeter Wemm #  define HASFLOCK	1	/* has flock(2) call */
2031c2aa98e2SPeter Wemm # endif
2032c2aa98e2SPeter Wemm # ifndef TZ_TYPE
2033c2aa98e2SPeter Wemm #  define TZ_TYPE	TZ_TM_ZONE	/* use tm->tm_zone variable */
2034c2aa98e2SPeter Wemm # endif
2035c2aa98e2SPeter Wemm #endif
2036c2aa98e2SPeter Wemm 
2037c2aa98e2SPeter Wemm /* general System V Release 4 defines */
2038c2aa98e2SPeter Wemm #ifdef __svr4__
2039c2aa98e2SPeter Wemm # define SYSTEM5	1
2040c2aa98e2SPeter Wemm # define USESETEUID	1	/* has useable seteuid(2) call */
2041c2aa98e2SPeter Wemm # define HASINITGROUPS	1	/* has initgroups(3) call */
2042c2aa98e2SPeter Wemm # define BSD_COMP	1	/* get BSD ioctl calls */
2043c2aa98e2SPeter Wemm # ifndef HASSETRLIMIT
2044c2aa98e2SPeter Wemm #  define HASSETRLIMIT	1	/* has setrlimit(2) call */
2045c2aa98e2SPeter Wemm # endif
2046c2aa98e2SPeter Wemm # ifndef HASGETUSERSHELL
2047c2aa98e2SPeter Wemm #  define HASGETUSERSHELL 0	/* does not have getusershell(3) call */
2048c2aa98e2SPeter Wemm # endif
2049c2aa98e2SPeter Wemm # ifndef HASFCHMOD
2050c2aa98e2SPeter Wemm #  define HASFCHMOD	1	/* most (all?) SVr4s seem to have fchmod(2) */
2051c2aa98e2SPeter Wemm # endif
2052c2aa98e2SPeter Wemm 
2053c2aa98e2SPeter Wemm # ifndef _PATH_UNIX
2054c2aa98e2SPeter Wemm #  define _PATH_UNIX		"/unix"
2055c2aa98e2SPeter Wemm # endif
2056c2aa98e2SPeter Wemm # ifndef _PATH_VENDOR_CF
2057c2aa98e2SPeter Wemm #  define _PATH_VENDOR_CF	"/usr/ucblib/sendmail.cf"
2058c2aa98e2SPeter Wemm # endif
2059c2aa98e2SPeter Wemm # ifndef _PATH_SENDMAILPID
2060c2aa98e2SPeter Wemm #  define _PATH_SENDMAILPID	"/usr/ucblib/sendmail.pid"
2061c2aa98e2SPeter Wemm # endif
2062c2aa98e2SPeter Wemm # ifndef SYSLOG_BUFSIZE
2063c2aa98e2SPeter Wemm #  define SYSLOG_BUFSIZE	128
2064c2aa98e2SPeter Wemm # endif
2065c2aa98e2SPeter Wemm # ifndef SFS_TYPE
2066c2aa98e2SPeter Wemm #  define SFS_TYPE		SFS_STATVFS
2067c2aa98e2SPeter Wemm # endif
2068c2aa98e2SPeter Wemm 
2069c2aa98e2SPeter Wemm # define USE_SIGLONGJMP	1	/* sigsetjmp needed for signal handling */
2070c2aa98e2SPeter Wemm #endif
2071c2aa98e2SPeter Wemm 
2072c2aa98e2SPeter Wemm /* general System V defines */
2073c2aa98e2SPeter Wemm #ifdef SYSTEM5
2074c2aa98e2SPeter Wemm # include <sys/sysmacros.h>
2075c2aa98e2SPeter Wemm # define HASUNAME	1	/* use System V uname(2) system call */
2076c2aa98e2SPeter Wemm # define SYS5SETPGRP	1	/* use System V setpgrp(2) syscall */
2077c2aa98e2SPeter Wemm # define HASSETVBUF	1	/* we have setvbuf(3) in libc */
2078c2aa98e2SPeter Wemm # ifndef HASULIMIT
2079c2aa98e2SPeter Wemm #  define HASULIMIT	1	/* has the ulimit(2) syscall */
2080c2aa98e2SPeter Wemm # endif
2081c2aa98e2SPeter Wemm # ifndef LA_TYPE
2082c2aa98e2SPeter Wemm #  ifdef MIOC_READKSYM
2083c2aa98e2SPeter Wemm #   define LA_TYPE	LA_READKSYM	/* use MIOC_READKSYM ioctl */
2084c2aa98e2SPeter Wemm #  else
2085c2aa98e2SPeter Wemm #   define LA_TYPE	LA_INT		/* assume integer load average */
2086c2aa98e2SPeter Wemm #  endif
2087c2aa98e2SPeter Wemm # endif
2088c2aa98e2SPeter Wemm # ifndef SFS_TYPE
2089c2aa98e2SPeter Wemm #  define SFS_TYPE	SFS_USTAT	/* use System V ustat(2) syscall */
2090c2aa98e2SPeter Wemm # endif
2091c2aa98e2SPeter Wemm # ifndef TZ_TYPE
2092c2aa98e2SPeter Wemm #  define TZ_TYPE	TZ_TZNAME	/* use tzname[] vector */
2093c2aa98e2SPeter Wemm # endif
2094c2aa98e2SPeter Wemm # define bcopy(s, d, l)		(memmove((d), (s), (l)))
2095c2aa98e2SPeter Wemm # define bzero(d, l)		(memset((d), '\0', (l)))
2096c2aa98e2SPeter Wemm # define bcmp(s, d, l)		(memcmp((s), (d), (l)))
2097c2aa98e2SPeter Wemm #endif
2098c2aa98e2SPeter Wemm 
2099c2aa98e2SPeter Wemm /* general POSIX defines */
2100c2aa98e2SPeter Wemm #ifdef _POSIX_VERSION
2101c2aa98e2SPeter Wemm # define HASSETSID	1	/* has Posix setsid(2) call */
2102c2aa98e2SPeter Wemm # define HASWAITPID	1	/* has Posix waitpid(2) call */
2103c2aa98e2SPeter Wemm # if _POSIX_VERSION >= 199500 && !defined(USESETEUID)
2104c2aa98e2SPeter Wemm #  define USESETEUID	1	/* has useable seteuid(2) call */
2105c2aa98e2SPeter Wemm # endif
2106c2aa98e2SPeter Wemm # ifndef bcopy
2107c2aa98e2SPeter Wemm #  define bcopy(s, d, l)	(memmove((d), (s), (l)))
2108c2aa98e2SPeter Wemm #  define bzero(d, l)		(memset((d), '\0', (l)))
2109c2aa98e2SPeter Wemm #  define bcmp(s, d, l)		(memcmp((s), (d), (l)))
2110c2aa98e2SPeter Wemm # endif
2111c2aa98e2SPeter Wemm #endif
2112c2aa98e2SPeter Wemm /*
2113c2aa98e2SPeter Wemm **  Tweaking for systems that (for example) claim to be BSD or POSIX
2114c2aa98e2SPeter Wemm **  but don't have all the standard BSD or POSIX routines (boo hiss).
2115c2aa98e2SPeter Wemm */
2116c2aa98e2SPeter Wemm 
2117c2aa98e2SPeter Wemm #ifdef titan
2118c2aa98e2SPeter Wemm # undef HASINITGROUPS		/* doesn't have initgroups(3) call */
2119c2aa98e2SPeter Wemm #endif
2120c2aa98e2SPeter Wemm 
2121c2aa98e2SPeter Wemm #ifdef _CRAYCOM
2122c2aa98e2SPeter Wemm # undef HASSETSID		/* despite POSIX claim, doesn't have setsid */
2123c2aa98e2SPeter Wemm #endif
2124c2aa98e2SPeter Wemm 
2125c2aa98e2SPeter Wemm #ifdef ISC_UNIX
2126c2aa98e2SPeter Wemm # undef bcopy			/* despite SystemV claim, uses BSD bcopy */
2127c2aa98e2SPeter Wemm #endif
2128c2aa98e2SPeter Wemm 
2129c2aa98e2SPeter Wemm #ifdef ALTOS_SYSTEM_V
2130c2aa98e2SPeter Wemm # undef bcopy			/* despite SystemV claim, uses BSD bcopy */
2131c2aa98e2SPeter Wemm # undef bzero			/* despite SystemV claim, uses BSD bzero */
2132c2aa98e2SPeter Wemm # undef bcmp			/* despite SystemV claim, uses BSD bcmp */
2133c2aa98e2SPeter Wemm #endif
2134c2aa98e2SPeter Wemm 
2135c2aa98e2SPeter Wemm #if defined(sun) && !defined(BSD) && !defined(SOLARIS) && !defined(__svr4__) && !defined(__SVR4)
2136c2aa98e2SPeter Wemm # undef bcopy			/* SunOS 4 doesn't have memmove() */
2137c2aa98e2SPeter Wemm #endif
2138c2aa98e2SPeter Wemm 
2139c2aa98e2SPeter Wemm 
2140c2aa98e2SPeter Wemm /*
2141c2aa98e2SPeter Wemm **  Due to a "feature" in some operating systems such as Ultrix 4.3 and
2142c2aa98e2SPeter Wemm **  HPUX 8.0, if you receive a "No route to host" message (ICMP message
2143c2aa98e2SPeter Wemm **  ICMP_UNREACH_HOST) on _any_ connection, all connections to that host
2144c2aa98e2SPeter Wemm **  are closed.  Some firewalls return this error if you try to connect
2145c2aa98e2SPeter Wemm **  to the IDENT port (113), so you can't receive email from these hosts
2146c2aa98e2SPeter Wemm **  on these systems.  The firewall really should use a more specific
2147c2aa98e2SPeter Wemm **  message such as ICMP_UNREACH_PROTOCOL or _PORT or _FILTER_PROHIB.  If
2148c2aa98e2SPeter Wemm **  not explicitly set to zero above, default it on.
2149c2aa98e2SPeter Wemm */
2150c2aa98e2SPeter Wemm 
2151c2aa98e2SPeter Wemm #ifndef IDENTPROTO
2152c2aa98e2SPeter Wemm # define IDENTPROTO	1	/* use IDENT proto (RFC 1413) */
2153c2aa98e2SPeter Wemm #endif
2154c2aa98e2SPeter Wemm 
2155c2aa98e2SPeter Wemm #ifndef IP_SRCROUTE
2156c2aa98e2SPeter Wemm # define IP_SRCROUTE	1	/* Detect IP source routing */
2157c2aa98e2SPeter Wemm #endif
2158c2aa98e2SPeter Wemm 
2159c2aa98e2SPeter Wemm #ifndef HASGETUSERSHELL
2160c2aa98e2SPeter Wemm # define HASGETUSERSHELL 1	/* libc has getusershell(3) call */
2161c2aa98e2SPeter Wemm #endif
2162c2aa98e2SPeter Wemm 
2163c2aa98e2SPeter Wemm #ifndef NETUNIX
2164c2aa98e2SPeter Wemm # define NETUNIX	1	/* include unix domain support */
2165c2aa98e2SPeter Wemm #endif
2166c2aa98e2SPeter Wemm 
2167c2aa98e2SPeter Wemm #ifndef HASFLOCK
2168c2aa98e2SPeter Wemm # define HASFLOCK	0	/* assume no flock(2) support */
2169c2aa98e2SPeter Wemm #endif
2170c2aa98e2SPeter Wemm 
2171c2aa98e2SPeter Wemm #ifndef HASSETREUID
2172c2aa98e2SPeter Wemm # define HASSETREUID	0	/* assume no setreuid(2) call */
2173c2aa98e2SPeter Wemm #endif
2174c2aa98e2SPeter Wemm 
2175c2aa98e2SPeter Wemm #ifndef HASFCHMOD
2176c2aa98e2SPeter Wemm # define HASFCHMOD	0	/* assume no fchmod(2) syscall */
2177c2aa98e2SPeter Wemm #endif
2178c2aa98e2SPeter Wemm 
2179c2aa98e2SPeter Wemm #ifndef USESETEUID
2180c2aa98e2SPeter Wemm # define USESETEUID	0	/* assume no seteuid(2) call or no saved ids */
2181c2aa98e2SPeter Wemm #endif
2182c2aa98e2SPeter Wemm 
2183c2aa98e2SPeter Wemm #ifndef HASSETRLIMIT
2184c2aa98e2SPeter Wemm # define HASSETRLIMIT	0	/* assume no setrlimit(2) support */
2185c2aa98e2SPeter Wemm #endif
2186c2aa98e2SPeter Wemm 
2187c2aa98e2SPeter Wemm #ifndef HASULIMIT
2188c2aa98e2SPeter Wemm # define HASULIMIT	0	/* assume no ulimit(2) support */
2189c2aa98e2SPeter Wemm #endif
2190c2aa98e2SPeter Wemm 
2191c2aa98e2SPeter Wemm #ifndef SECUREWARE
2192c2aa98e2SPeter Wemm # define SECUREWARE	0	/* assume no SecureWare C2 auditing hooks */
2193c2aa98e2SPeter Wemm #endif
2194c2aa98e2SPeter Wemm 
2195c2aa98e2SPeter Wemm #ifndef USE_SIGLONGJMP
2196c2aa98e2SPeter Wemm # define USE_SIGLONGJMP	0	/* assume setjmp handles signals properly */
2197c2aa98e2SPeter Wemm #endif
2198c2aa98e2SPeter Wemm 
2199c2aa98e2SPeter Wemm #ifndef FDSET_CAST
2200c2aa98e2SPeter Wemm # define FDSET_CAST		/* (empty) cast for fd_set arg to select */
2201c2aa98e2SPeter Wemm #endif
2202c2aa98e2SPeter Wemm 
2203c2aa98e2SPeter Wemm /*
2204c2aa98e2SPeter Wemm **  If no type for argument two of getgroups call is defined, assume
2205c2aa98e2SPeter Wemm **  it's an integer -- unfortunately, there seem to be several choices
2206c2aa98e2SPeter Wemm **  here.
2207c2aa98e2SPeter Wemm */
2208c2aa98e2SPeter Wemm 
2209c2aa98e2SPeter Wemm #ifndef GIDSET_T
2210c2aa98e2SPeter Wemm # define GIDSET_T	int
2211c2aa98e2SPeter Wemm #endif
2212c2aa98e2SPeter Wemm 
2213c2aa98e2SPeter Wemm #ifndef UID_T
2214c2aa98e2SPeter Wemm # define UID_T		uid_t
2215c2aa98e2SPeter Wemm #endif
2216c2aa98e2SPeter Wemm 
2217c2aa98e2SPeter Wemm #ifndef GID_T
2218c2aa98e2SPeter Wemm # define GID_T		gid_t
2219c2aa98e2SPeter Wemm #endif
2220c2aa98e2SPeter Wemm 
2221c2aa98e2SPeter Wemm #ifndef SIZE_T
2222c2aa98e2SPeter Wemm # define SIZE_T		size_t
2223c2aa98e2SPeter Wemm #endif
2224c2aa98e2SPeter Wemm 
2225c2aa98e2SPeter Wemm #ifndef MODE_T
2226c2aa98e2SPeter Wemm # define MODE_T		mode_t
2227c2aa98e2SPeter Wemm #endif
2228c2aa98e2SPeter Wemm 
2229c2aa98e2SPeter Wemm #ifndef ARGV_T
2230c2aa98e2SPeter Wemm # define ARGV_T		char **
2231c2aa98e2SPeter Wemm #endif
2232c2aa98e2SPeter Wemm 
2233c2aa98e2SPeter Wemm #ifndef SOCKADDR_LEN_T
2234c2aa98e2SPeter Wemm # define SOCKADDR_LEN_T	int
2235c2aa98e2SPeter Wemm #endif
2236c2aa98e2SPeter Wemm 
2237c2aa98e2SPeter Wemm #ifndef SOCKOPT_LEN_T
2238c2aa98e2SPeter Wemm # define SOCKOPT_LEN_T	int
2239c2aa98e2SPeter Wemm #endif
2240c2aa98e2SPeter Wemm 
2241c2aa98e2SPeter Wemm #ifndef QUAD_T
2242c2aa98e2SPeter Wemm # define QUAD_T	unsigned long
2243c2aa98e2SPeter Wemm #endif
2244c2aa98e2SPeter Wemm /**********************************************************************
2245c2aa98e2SPeter Wemm **  Remaining definitions should never have to be changed.  They are
2246c2aa98e2SPeter Wemm **  primarily to provide back compatibility for older systems -- for
2247c2aa98e2SPeter Wemm **  example, it includes some POSIX compatibility definitions
2248c2aa98e2SPeter Wemm **********************************************************************/
2249c2aa98e2SPeter Wemm 
2250c2aa98e2SPeter Wemm /* System 5 compatibility */
2251c2aa98e2SPeter Wemm #ifndef S_ISREG
2252c2aa98e2SPeter Wemm # define S_ISREG(foo)	((foo & S_IFMT) == S_IFREG)
2253c2aa98e2SPeter Wemm #endif
2254c2aa98e2SPeter Wemm #ifndef S_ISDIR
2255c2aa98e2SPeter Wemm # define S_ISDIR(foo)	((foo & S_IFMT) == S_IFDIR)
2256c2aa98e2SPeter Wemm #endif
2257c2aa98e2SPeter Wemm #if !defined(S_ISLNK) && defined(S_IFLNK)
2258c2aa98e2SPeter Wemm # define S_ISLNK(foo)	((foo & S_IFMT) == S_IFLNK)
2259c2aa98e2SPeter Wemm #endif
2260c2aa98e2SPeter Wemm #ifndef S_IRUSR
2261c2aa98e2SPeter Wemm # define S_IRUSR		0400
2262c2aa98e2SPeter Wemm #endif
2263c2aa98e2SPeter Wemm #ifndef S_IWUSR
2264c2aa98e2SPeter Wemm # define S_IWUSR		0200
2265c2aa98e2SPeter Wemm #endif
2266c2aa98e2SPeter Wemm #ifndef S_IRGRP
2267c2aa98e2SPeter Wemm # define S_IRGRP		0040
2268c2aa98e2SPeter Wemm #endif
2269c2aa98e2SPeter Wemm #ifndef S_IWGRP
2270c2aa98e2SPeter Wemm # define S_IWGRP		0020
2271c2aa98e2SPeter Wemm #endif
2272c2aa98e2SPeter Wemm #ifndef S_IROTH
2273c2aa98e2SPeter Wemm # define S_IROTH		0004
2274c2aa98e2SPeter Wemm #endif
2275c2aa98e2SPeter Wemm #ifndef S_IWOTH
2276c2aa98e2SPeter Wemm # define S_IWOTH		0002
2277c2aa98e2SPeter Wemm #endif
2278c2aa98e2SPeter Wemm 
2279c2aa98e2SPeter Wemm /*
2280c2aa98e2SPeter Wemm **  Older systems don't have this error code -- it should be in
2281c2aa98e2SPeter Wemm **  /usr/include/sysexits.h.
2282c2aa98e2SPeter Wemm */
2283c2aa98e2SPeter Wemm 
2284c2aa98e2SPeter Wemm # ifndef EX_CONFIG
2285c2aa98e2SPeter Wemm # define EX_CONFIG	78	/* configuration error */
2286c2aa98e2SPeter Wemm # endif
2287c2aa98e2SPeter Wemm 
2288c2aa98e2SPeter Wemm /* pseudo-code used in server SMTP */
2289c2aa98e2SPeter Wemm # define EX_QUIT	22	/* drop out of server immediately */
2290c2aa98e2SPeter Wemm 
2291c2aa98e2SPeter Wemm /* pseudo-code used for mci_setstat */
2292c2aa98e2SPeter Wemm # define EX_NOTSTICKY	-5	/* don't save persistent status */
2293c2aa98e2SPeter Wemm 
2294c2aa98e2SPeter Wemm 
2295c2aa98e2SPeter Wemm /*
2296c2aa98e2SPeter Wemm **  An "impossible" file mode to indicate that the file does not exist.
2297c2aa98e2SPeter Wemm */
2298c2aa98e2SPeter Wemm 
2299c2aa98e2SPeter Wemm #define ST_MODE_NOFILE	0171147		/* unlikely to occur */
2300c2aa98e2SPeter Wemm 
2301c2aa98e2SPeter Wemm 
2302c2aa98e2SPeter Wemm /*
2303c2aa98e2SPeter Wemm **  These are used in a few cases where we need some special
2304c2aa98e2SPeter Wemm **  error codes, but where the system doesn't provide something
2305c2aa98e2SPeter Wemm **  reasonable.  They are printed in errstring.
2306c2aa98e2SPeter Wemm */
2307c2aa98e2SPeter Wemm 
2308c2aa98e2SPeter Wemm #ifndef E_PSEUDOBASE
2309c2aa98e2SPeter Wemm # define E_PSEUDOBASE	256
2310c2aa98e2SPeter Wemm #endif
2311c2aa98e2SPeter Wemm 
2312c2aa98e2SPeter Wemm #define E_SM_OPENTIMEOUT (E_PSEUDOBASE + 0)	/* Timeout on file open */
2313c2aa98e2SPeter Wemm #define E_SM_NOSLINK	(E_PSEUDOBASE + 1)	/* Symbolic links not allowed */
2314c2aa98e2SPeter Wemm #define E_SM_NOHLINK	(E_PSEUDOBASE + 2)	/* Hard links not allowed */
2315c2aa98e2SPeter Wemm #define E_SM_REGONLY	(E_PSEUDOBASE + 3)	/* Regular files only */
2316c2aa98e2SPeter Wemm #define E_SM_ISEXEC	(E_PSEUDOBASE + 4)	/* Executable files not allowed */
2317c2aa98e2SPeter Wemm #define E_SM_WWDIR	(E_PSEUDOBASE + 5)	/* World writable directory */
2318c2aa98e2SPeter Wemm #define E_SM_GWDIR	(E_PSEUDOBASE + 6)	/* Group writable directory */
2319c2aa98e2SPeter Wemm #define E_SM_FILECHANGE (E_PSEUDOBASE + 7)	/* File changed after open */
2320c2aa98e2SPeter Wemm #define E_SM_WWFILE	(E_PSEUDOBASE + 8)	/* World writable file */
2321c2aa98e2SPeter Wemm #define E_SM_GWFILE	(E_PSEUDOBASE + 9)	/* Group writable file */
2322c2aa98e2SPeter Wemm #define E_DNSBASE	(E_PSEUDOBASE + 20)	/* base for DNS h_errno */
2323c2aa98e2SPeter Wemm 
2324c2aa98e2SPeter Wemm /* type of arbitrary pointer */
2325c2aa98e2SPeter Wemm #ifndef ARBPTR_T
2326c2aa98e2SPeter Wemm # define ARBPTR_T	void *
2327c2aa98e2SPeter Wemm #endif
2328c2aa98e2SPeter Wemm 
2329c2aa98e2SPeter Wemm #ifndef __P
2330c2aa98e2SPeter Wemm # include "cdefs.h"
2331c2aa98e2SPeter Wemm #endif
2332c2aa98e2SPeter Wemm 
2333c2aa98e2SPeter Wemm #if HESIOD && !defined(NAMED_BIND)
2334c2aa98e2SPeter Wemm # define NAMED_BIND	1	/* not one without the other */
2335c2aa98e2SPeter Wemm #endif
2336c2aa98e2SPeter Wemm 
2337c2aa98e2SPeter Wemm #if NAMED_BIND && !defined(__ksr__) && !defined(h_errno)
2338c2aa98e2SPeter Wemm extern int	h_errno;
2339c2aa98e2SPeter Wemm #endif
2340c2aa98e2SPeter Wemm 
2341c2aa98e2SPeter Wemm /*
2342c2aa98e2SPeter Wemm **  Do some required dependencies
2343c2aa98e2SPeter Wemm */
2344c2aa98e2SPeter Wemm 
2345c2aa98e2SPeter Wemm #if NETINET || NETISO
2346c2aa98e2SPeter Wemm # ifndef SMTP
2347c2aa98e2SPeter Wemm #  define SMTP		1	/* enable user and server SMTP */
2348c2aa98e2SPeter Wemm # endif
2349c2aa98e2SPeter Wemm # ifndef QUEUE
2350c2aa98e2SPeter Wemm #  define QUEUE		1	/* enable queueing */
2351c2aa98e2SPeter Wemm # endif
2352c2aa98e2SPeter Wemm # ifndef DAEMON
2353c2aa98e2SPeter Wemm #  define DAEMON	1	/* include the daemon (requires IPC & SMTP) */
2354c2aa98e2SPeter Wemm # endif
2355c2aa98e2SPeter Wemm #endif
2356c2aa98e2SPeter Wemm 
2357c2aa98e2SPeter Wemm 
2358c2aa98e2SPeter Wemm /*
2359c2aa98e2SPeter Wemm **  Arrange to use either varargs or stdargs
2360c2aa98e2SPeter Wemm */
2361c2aa98e2SPeter Wemm 
2362c2aa98e2SPeter Wemm # ifdef __STDC__
2363c2aa98e2SPeter Wemm 
2364c2aa98e2SPeter Wemm # include <stdarg.h>
2365c2aa98e2SPeter Wemm 
2366c2aa98e2SPeter Wemm # define VA_LOCAL_DECL	va_list ap;
2367c2aa98e2SPeter Wemm # define VA_START(f)	va_start(ap, f)
2368c2aa98e2SPeter Wemm # define VA_END		va_end(ap)
2369c2aa98e2SPeter Wemm 
2370c2aa98e2SPeter Wemm # else
2371c2aa98e2SPeter Wemm 
2372c2aa98e2SPeter Wemm # include <varargs.h>
2373c2aa98e2SPeter Wemm 
2374c2aa98e2SPeter Wemm # define VA_LOCAL_DECL	va_list ap;
2375c2aa98e2SPeter Wemm # define VA_START(f)	va_start(ap)
2376c2aa98e2SPeter Wemm # define VA_END		va_end(ap)
2377c2aa98e2SPeter Wemm 
2378c2aa98e2SPeter Wemm # endif
2379c2aa98e2SPeter Wemm 
2380c2aa98e2SPeter Wemm #ifdef HASUNAME
2381c2aa98e2SPeter Wemm # include <sys/utsname.h>
2382c2aa98e2SPeter Wemm # ifdef newstr
2383c2aa98e2SPeter Wemm #  undef newstr
2384c2aa98e2SPeter Wemm # endif
2385c2aa98e2SPeter Wemm #else /* ! HASUNAME */
2386c2aa98e2SPeter Wemm # define NODE_LENGTH 32
2387c2aa98e2SPeter Wemm struct utsname
2388c2aa98e2SPeter Wemm {
2389c2aa98e2SPeter Wemm 	char nodename[NODE_LENGTH+1];
2390c2aa98e2SPeter Wemm };
2391c2aa98e2SPeter Wemm #endif /* HASUNAME */
2392c2aa98e2SPeter Wemm 
2393c2aa98e2SPeter Wemm #if !defined(MAXHOSTNAMELEN) && !defined(_SCO_unix_) && !defined(NonStop_UX_BXX) && !defined(ALTOS_SYSTEM_V)
2394c2aa98e2SPeter Wemm # define MAXHOSTNAMELEN	256
2395c2aa98e2SPeter Wemm #endif
2396c2aa98e2SPeter Wemm 
2397c2aa98e2SPeter Wemm #if !defined(SIGCHLD) && defined(SIGCLD)
2398c2aa98e2SPeter Wemm # define SIGCHLD	SIGCLD
2399c2aa98e2SPeter Wemm #endif
2400c2aa98e2SPeter Wemm 
2401c2aa98e2SPeter Wemm #ifndef STDIN_FILENO
2402c2aa98e2SPeter Wemm # define STDIN_FILENO	0
2403c2aa98e2SPeter Wemm #endif
2404c2aa98e2SPeter Wemm 
2405c2aa98e2SPeter Wemm #ifndef STDOUT_FILENO
2406c2aa98e2SPeter Wemm # define STDOUT_FILENO	1
2407c2aa98e2SPeter Wemm #endif
2408c2aa98e2SPeter Wemm 
2409c2aa98e2SPeter Wemm #ifndef STDERR_FILENO
2410c2aa98e2SPeter Wemm # define STDERR_FILENO	2
2411c2aa98e2SPeter Wemm #endif
2412c2aa98e2SPeter Wemm 
2413c2aa98e2SPeter Wemm #ifndef LOCK_SH
2414c2aa98e2SPeter Wemm # define LOCK_SH	0x01	/* shared lock */
2415c2aa98e2SPeter Wemm # define LOCK_EX	0x02	/* exclusive lock */
2416c2aa98e2SPeter Wemm # define LOCK_NB	0x04	/* non-blocking lock */
2417c2aa98e2SPeter Wemm # define LOCK_UN	0x08	/* unlock */
2418c2aa98e2SPeter Wemm #endif
2419c2aa98e2SPeter Wemm 
2420c2aa98e2SPeter Wemm #ifndef S_IXOTH
2421c2aa98e2SPeter Wemm # define S_IXOTH	(S_IEXEC >> 6)
2422c2aa98e2SPeter Wemm #endif
2423c2aa98e2SPeter Wemm 
2424c2aa98e2SPeter Wemm #ifndef S_IXGRP
2425c2aa98e2SPeter Wemm # define S_IXGRP	(S_IEXEC >> 3)
2426c2aa98e2SPeter Wemm #endif
2427c2aa98e2SPeter Wemm 
2428c2aa98e2SPeter Wemm #ifndef S_IXUSR
2429c2aa98e2SPeter Wemm # define S_IXUSR	(S_IEXEC)
2430c2aa98e2SPeter Wemm #endif
2431c2aa98e2SPeter Wemm 
2432c2aa98e2SPeter Wemm #ifndef SEEK_SET
2433c2aa98e2SPeter Wemm # define SEEK_SET	0
2434c2aa98e2SPeter Wemm # define SEEK_CUR	1
2435c2aa98e2SPeter Wemm # define SEEK_END	2
2436c2aa98e2SPeter Wemm #endif
2437c2aa98e2SPeter Wemm 
2438c2aa98e2SPeter Wemm #ifndef SIG_ERR
2439c2aa98e2SPeter Wemm # define SIG_ERR	((void (*)()) -1)
2440c2aa98e2SPeter Wemm #endif
2441c2aa98e2SPeter Wemm 
2442c2aa98e2SPeter Wemm #ifndef WEXITSTATUS
2443c2aa98e2SPeter Wemm # define WEXITSTATUS(st)	(((st) >> 8) & 0377)
2444c2aa98e2SPeter Wemm #endif
2445c2aa98e2SPeter Wemm #ifndef WIFEXITED
2446c2aa98e2SPeter Wemm # define WIFEXITED(st)		(((st) & 0377) == 0)
2447c2aa98e2SPeter Wemm #endif
2448c2aa98e2SPeter Wemm 
2449c2aa98e2SPeter Wemm #ifndef SIGFUNC_DEFINED
2450c2aa98e2SPeter Wemm typedef void		(*sigfunc_t) __P((int));
2451c2aa98e2SPeter Wemm #endif
2452c2aa98e2SPeter Wemm #ifndef SIGFUNC_RETURN
2453c2aa98e2SPeter Wemm # define SIGFUNC_RETURN
2454c2aa98e2SPeter Wemm #endif
2455c2aa98e2SPeter Wemm #ifndef SIGFUNC_DECL
2456c2aa98e2SPeter Wemm # define SIGFUNC_DECL	void
2457c2aa98e2SPeter Wemm #endif
2458c2aa98e2SPeter Wemm 
2459c2aa98e2SPeter Wemm /* size of syslog buffer */
2460c2aa98e2SPeter Wemm #ifndef SYSLOG_BUFSIZE
2461c2aa98e2SPeter Wemm # define SYSLOG_BUFSIZE	1024
2462c2aa98e2SPeter Wemm #endif
2463c2aa98e2SPeter Wemm 
2464c2aa98e2SPeter Wemm /*
2465c2aa98e2SPeter Wemm **  Size of prescan buffer.
2466c2aa98e2SPeter Wemm **	Despite comments in the _sendmail_ book, this probably should
2467c2aa98e2SPeter Wemm **	not be changed; there are some hard-to-define dependencies.
2468c2aa98e2SPeter Wemm */
2469c2aa98e2SPeter Wemm 
2470c2aa98e2SPeter Wemm # define PSBUFSIZE	(MAXNAME + MAXATOM)	/* size of prescan buffer */
2471c2aa98e2SPeter Wemm 
2472c2aa98e2SPeter Wemm /* fork routine -- set above using #ifdef _osname_ or in Makefile */
2473c2aa98e2SPeter Wemm # ifndef FORK
2474c2aa98e2SPeter Wemm # define FORK		fork		/* function to call to fork mailer */
2475c2aa98e2SPeter Wemm # endif
2476c2aa98e2SPeter Wemm 
2477c2aa98e2SPeter Wemm /*
2478c2aa98e2SPeter Wemm **  Default to using scanf in readcf.
2479c2aa98e2SPeter Wemm */
2480c2aa98e2SPeter Wemm 
2481c2aa98e2SPeter Wemm #ifndef SCANF
2482c2aa98e2SPeter Wemm # define SCANF		1
2483c2aa98e2SPeter Wemm #endif
2484c2aa98e2SPeter Wemm 
2485c2aa98e2SPeter Wemm /*
2486c2aa98e2SPeter Wemm **  SVr4 and similar systems use different routines for setjmp/longjmp
2487c2aa98e2SPeter Wemm **  with signal support
2488c2aa98e2SPeter Wemm */
2489c2aa98e2SPeter Wemm 
2490c2aa98e2SPeter Wemm #if USE_SIGLONGJMP
2491c2aa98e2SPeter Wemm # ifdef jmp_buf
2492c2aa98e2SPeter Wemm #  undef jmp_buf
2493c2aa98e2SPeter Wemm # endif
2494c2aa98e2SPeter Wemm # define jmp_buf		sigjmp_buf
2495c2aa98e2SPeter Wemm # ifdef setjmp
2496c2aa98e2SPeter Wemm #  undef setjmp
2497c2aa98e2SPeter Wemm # endif
2498c2aa98e2SPeter Wemm # define setjmp(env)		sigsetjmp(env, 1)
2499c2aa98e2SPeter Wemm # ifdef longjmp
2500c2aa98e2SPeter Wemm #  undef longjmp
2501c2aa98e2SPeter Wemm # endif
2502c2aa98e2SPeter Wemm # define longjmp(env, val)	siglongjmp(env, val)
2503c2aa98e2SPeter Wemm #endif
2504c2aa98e2SPeter Wemm 
2505c2aa98e2SPeter Wemm #if !defined(NGROUPS_MAX) && defined(NGROUPS)
2506c2aa98e2SPeter Wemm # define NGROUPS_MAX	NGROUPS		/* POSIX naming convention */
2507c2aa98e2SPeter Wemm #endif
2508c2aa98e2SPeter Wemm 
2509c2aa98e2SPeter Wemm /*
2510c2aa98e2SPeter Wemm **  If we don't have a system syslog, simulate it.
2511c2aa98e2SPeter Wemm */
2512c2aa98e2SPeter Wemm 
2513c2aa98e2SPeter Wemm #if !LOG
2514c2aa98e2SPeter Wemm # define LOG_EMERG	0	/* system is unusable */
2515c2aa98e2SPeter Wemm # define LOG_ALERT	1	/* action must be taken immediately */
2516c2aa98e2SPeter Wemm # define LOG_CRIT	2	/* critical conditions */
2517c2aa98e2SPeter Wemm # define LOG_ERR	3	/* error conditions */
2518c2aa98e2SPeter Wemm # define LOG_WARNING	4	/* warning conditions */
2519c2aa98e2SPeter Wemm # define LOG_NOTICE	5	/* normal but significant condition */
2520c2aa98e2SPeter Wemm # define LOG_INFO	6	/* informational */
2521c2aa98e2SPeter Wemm # define LOG_DEBUG	7	/* debug-level messages */
2522c2aa98e2SPeter Wemm #endif
2523