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