diff options
author | gshapiro <gshapiro@FreeBSD.org> | 2002-02-17 21:56:45 +0000 |
---|---|---|
committer | gshapiro <gshapiro@FreeBSD.org> | 2002-02-17 21:56:45 +0000 |
commit | 514d1553cc1f49dd008e6e432664359124af60a9 (patch) | |
tree | e71b01386ad11f2e0c99bab2eab606f5c7360807 /contrib/sendmail/include/sm/conf.h | |
parent | c2a47cdbe88de50d484d2cdb605874e1168626dc (diff) | |
parent | 8449595fe97f4474b9b9a7e4edee1ef35dcff393 (diff) | |
download | FreeBSD-src-514d1553cc1f49dd008e6e432664359124af60a9.zip FreeBSD-src-514d1553cc1f49dd008e6e432664359124af60a9.tar.gz |
This commit was generated by cvs2svn to compensate for changes in r90792,
which included commits to RCS files with non-trunk default branches.
Diffstat (limited to 'contrib/sendmail/include/sm/conf.h')
-rw-r--r-- | contrib/sendmail/include/sm/conf.h | 2803 |
1 files changed, 2803 insertions, 0 deletions
diff --git a/contrib/sendmail/include/sm/conf.h b/contrib/sendmail/include/sm/conf.h new file mode 100644 index 0000000..f54cd96 --- /dev/null +++ b/contrib/sendmail/include/sm/conf.h @@ -0,0 +1,2803 @@ +/* + * Copyright (c) 1998-2001 Sendmail, Inc. and its suppliers. + * All rights reserved. + * Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved. + * Copyright (c) 1988, 1993 + * The Regents of the University of California. All rights reserved. + * + * By using this file, you agree to the terms and conditions set + * forth in the LICENSE file which can be found at the top level of + * the sendmail distribution. + * + * + * $Id: conf.h,v 1.82 2001/12/20 16:14:48 ca Exp $ + */ + +/* +** CONF.H -- All user-configurable parameters for sendmail +** +** Send updates to sendmail@Sendmail.ORG so they will be +** included in the next release. +*/ + +#ifndef SM_CONF_H +# define SM_CONF_H 1 + + +# include <sm/config.h> +# include <sm/varargs.h> + +/* +** General "standard C" defines. +** +** These may be undone later, to cope with systems that claim to +** be Standard C but aren't. Gcc is the biggest offender -- it +** doesn't realize that the library is part of the language. +** +** Life would be much easier if we could get rid of this sort +** of bozo problems. +*/ + +# ifdef __STDC__ +# define HASSETVBUF 1 /* we have setvbuf(3) in libc */ +# endif /* __STDC__ */ + +/* +** Assume you have standard calls; can be #undefed below if necessary. +*/ + +# ifndef HASLSTAT +# define HASLSTAT 1 /* has lstat(2) call */ +# endif /* ! HASLSTAT */ + +# ifndef HASNICE +# define HASNICE 1 /* has nice(2) call */ +# endif /* ! HASNICE */ + +# ifndef HASRRESVPORT +# define HASRRESVPORT 1 /* has rrsevport(3) call */ +# endif /* ! HASRRESVPORT */ + +/********************************************************************** +** "Hard" compilation options. +** #define these if they are available; comment them out otherwise. +** These cannot be overridden from the Makefile, and should really not +** be turned off unless absolutely necessary. +**********************************************************************/ + +#define LOG 1 /* enable logging -- don't turn off */ + +/********************************************************************** +** Operating system configuration. +** +** Unless you are porting to a new OS, you shouldn't have to +** change these. +**********************************************************************/ + +/* +** HP-UX -- tested for 8.07, 9.00, and 9.01. +** +** If V4FS is defined, compile for HP-UX 10.0. +** 11.x support from Richard Allen <ra@hp.is>. +*/ + +# ifdef __hpux + /* common definitions for HP-UX 9.x and 10.x */ +# undef m_flags /* conflict between Berkeley DB 1.85 db.h & sys/sysmacros.h on HP 300 */ +# define SYSTEM5 1 /* include all the System V defines */ +# define HASINITGROUPS 1 /* has initgroups(3) call */ +# define HASFCHMOD 1 /* has fchmod(2) syscall */ +# define USESETEUID 1 /* has usable seteuid(2) call */ +# define HASSETRESGID 1 /* use setresgid(2) to set saved gid */ +# define BOGUS_O_EXCL 1 /* exclusive open follows symlinks */ +# define seteuid(e) setresuid(-1, e, -1) +# define IP_SRCROUTE 1 /* can check IP source routing */ +# define LA_TYPE LA_HPUX +# define SPT_TYPE SPT_PSTAT +# define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() implementation */ +# define GIDSET_T gid_t +# define LDA_USE_LOCKF 1 +# ifndef HASGETUSERSHELL +# define HASGETUSERSHELL 0 /* getusershell(3) causes core dumps */ +# endif /* ! HASGETUSERSHELL */ +# ifdef HPUX10 +# define _PATH_SENDMAIL "/usr/sbin/sendmail" +# define SMRSH_CMDDIR "/var/adm/sm.bin" +# endif /* HPUX10 */ +# ifdef HPUX11 +# define HASFCHOWN 1 /* has fchown(2) */ +# ifndef BROKEN_RES_SEARCH +# define BROKEN_RES_SEARCH 1 /* res_search(unknown) returns h_errno=0 */ +# endif /* ! BROKEN_RES_SEARCH */ +# define SMRSH_CMDDIR "/var/adm/sm.bin" +# define _PATH_SENDMAIL "/usr/sbin/sendmail" +# else /* HPUX11 */ +# ifndef NOT_SENDMAIL +# define syslog hard_syslog +# endif /* ! NOT_SENDMAIL */ +# endif /* HPUX11 */ +# define SAFENFSPATHCONF 1 /* pathconf(2) pessimizes on NFS filesystems */ + +# ifdef V4FS + /* HP-UX 10.x */ +# define _PATH_UNIX "/stand/vmunix" +# ifndef _PATH_VENDOR_CF +# define _PATH_VENDOR_CF "/etc/mail/sendmail.cf" +# endif /* ! _PATH_VENDOR_CF */ +# ifndef _PATH_SENDMAILPID +# define _PATH_SENDMAILPID "/etc/mail/sendmail.pid" +# endif /* ! _PATH_SENDMAILPID */ +# ifndef IDENTPROTO +# define IDENTPROTO 1 /* TCP/IP implementation fixed in 10.0 */ +# endif /* ! IDENTPROTO */ +# include <sys/mpctl.h> /* for mpctl() in get_num_procs_online() */ +# else /* V4FS */ + /* HP-UX 9.x */ +# define _PATH_UNIX "/hp-ux" +# ifndef _PATH_VENDOR_CF +# define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" +# endif /* ! _PATH_VENDOR_CF */ +# ifndef IDENTPROTO +# define IDENTPROTO 0 /* TCP/IP implementation is broken */ +# endif /* ! IDENTPROTO */ +# ifdef __STDC__ +extern void hard_syslog(int, char *, ...); +# else /* __STDC__ */ +extern void hard_syslog(); +# endif /* __STDC__ */ +# define FDSET_CAST (int *) /* cast for fd_set parameters to select */ +# endif /* V4FS */ + +# endif /* __hpux */ + +/* +** IBM AIX 5.x +*/ + +# ifdef _AIX5 +# define _AIX4 40300 +# endif /* _AIX5 */ + +/* +** IBM AIX 4.x +*/ + +# ifdef _AIX4 +# define _AIX3 1 /* pull in AIX3 stuff */ +# define BSD4_4_SOCKADDR /* has sa_len */ +# define USESETEUID 1 /* seteuid(2) works */ +# define TZ_TYPE TZ_NAME /* use tzname[] vector */ +# define SOCKOPT_LEN_T size_t /* arg#5 to getsockopt */ +# if _AIX4 >= 40200 +# define HASSETREUID 1 /* setreuid(2) works as of AIX 4.2 */ +# define SOCKADDR_LEN_T size_t /* e.g., arg#3 to accept, getsockname */ +# endif /* _AIX4 >= 40200 */ +# if defined(_ILS_MACROS) /* IBM versions aren't side-effect clean */ +# undef isascii +# define isascii(c) !(c & ~0177) +# undef isdigit +# define isdigit(__a) (_IS(__a,_ISDIGIT)) +# undef isspace +# define isspace(__a) (_IS(__a,_ISSPACE)) +# endif /* defined(_ILS_MACROS) */ +# endif /* _AIX4 */ + + +/* +** IBM AIX 3.x -- actually tested for 3.2.3 +*/ + +# ifdef _AIX3 +# include <paths.h> +# include <sys/machine.h> /* to get byte order */ +# include <sys/select.h> +# define HASFCHOWN 1 /* has fchown(2) */ +# define HASINITGROUPS 1 /* has initgroups(3) call */ +# define HASUNAME 1 /* use System V uname(2) system call */ +# define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ +# define HASFCHMOD 1 /* has fchmod(2) syscall */ +# define IP_SRCROUTE 0 /* Something is broken with getsockopt() */ +# define GIDSET_T gid_t +# define SFS_TYPE SFS_STATFS /* use <sys/statfs.h> statfs() impl */ +# define SPT_PADCHAR '\0' /* pad process title with nulls */ +# define LA_TYPE LA_INT +# define FSHIFT 16 +# define LA_AVENRUN "avenrun" +# if !defined(_AIX4) || _AIX4 < 40300 +# ifndef __BIT_TYPES_DEFINED__ +# define SM_INT32 int +# endif /* __BIT_TYPES_DEFINED__ */ +# endif /* !defined(_AIX4) || _AIX4 < 40300 */ +# if !defined(_AIX4) || _AIX4 < 40200 +# define SM_CONF_SYSLOG 0 +# endif /* !defined(_AIX4) || _AIX4 < 40200 */ +# endif /* _AIX3 */ + + +/* +** IBM AIX 2.2.1 -- actually tested for osupdate level 2706+1773 +** +** From Mark Whetzel <markw@wg.waii.com>. +*/ + +# ifdef AIX /* AIX/RT compiler pre-defines this */ +# include <paths.h> +# include <sys/time.h> /* AIX/RT resource.h does NOT include this */ +# define HASINITGROUPS 1 /* has initgroups(3) call */ +# define HASUNAME 1 /* use System V uname(2) system call */ +# define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ +# define HASFCHMOD 0 /* does not have fchmod(2) syscall */ +# define HASSETREUID 1 /* use setreuid(2) -lbsd system call */ +# define HASSETVBUF 1 /* use setvbuf(2) system call */ +# define HASSETRLIMIT 0 /* does not have setrlimit call */ +# define HASFLOCK 0 /* does not have flock call - use fcntl */ +# define HASULIMIT 1 /* use ulimit instead of setrlimit call */ +# define SM_CONF_GETOPT 0 /* Do we need theirs or ours */ +# define SYS5SETPGRP 1 /* don't have setpgid on AIX/RT */ +# define IP_SRCROUTE 0 /* Something is broken with getsockopt() */ +# define BSD4_3 1 /* NOT bsd 4.4 or posix signals */ +# define GIDSET_T int +# define SFS_TYPE SFS_STATFS /* use <sys/statfs.h> statfs() impl */ +# define SPT_PADCHAR '\0' /* pad process title with nulls */ +# define LA_TYPE LA_SUBR /* use our ported loadavgd daemon */ +# define TZ_TYPE TZ_TZNAME /* use tzname[] vector */ +# define ARBPTR_T int * +# define void int +typedef int pid_t; +/* RTisms for BSD compatibility, specified in the Makefile + define BSD 1 + define BSD_INCLUDES 1 + define BSD_REMAP_SIGNAL_TO_SIGVEC + RTisms needed above */ +/* make this sendmail in a completely different place */ +# ifndef _PATH_VENDOR_CF +# define _PATH_VENDOR_CF "/usr/local/newmail/sendmail.cf" +# endif /* ! _PATH_VENDOR_CF */ +# ifndef _PATH_SENDMAILPID +# define _PATH_SENDMAILPID "/usr/local/newmail/sendmail.pid" +# endif /* ! _PATH_SENDMAILPID */ +# endif /* AIX */ + +# if defined(_AIX) +# define LDA_USE_LOCKF 1 +# define LDA_USE_SETEUID 1 +# endif /* defined(_AIX) */ + +/* +** Silicon Graphics IRIX +** +** Compiles on 4.0.1. +** +** Use IRIX64 instead of IRIX for 64-bit IRIX (6.0). +** Use IRIX5 instead of IRIX for IRIX 5.x. +** +** IRIX64 changes from Mark R. Levinson <ml@cvdev.rochester.edu>. +** IRIX5 changes from Kari E. Hurtta <Kari.Hurtta@fmi.fi>. +*/ + +# ifdef IRIX +# define SYSTEM5 1 /* this is a System-V derived system */ +# define HASSETREUID 1 /* has setreuid(2) call */ +# define HASINITGROUPS 1 /* has initgroups(3) call */ +# define HASFCHMOD 1 /* has fchmod(2) syscall */ +# define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ +# define IP_SRCROUTE 1 /* can check IP source routing */ +# define setpgid BSDsetpgrp +# define GIDSET_T gid_t +# define SFS_TYPE SFS_4ARGS /* four argument statfs() call */ +# define SFS_BAVAIL f_bfree /* alternate field name */ +# define SYSLOG_BUFSIZE 512 +# ifdef IRIX6 +# define STAT64 1 +# define QUAD_T unsigned long long +# define LA_TYPE LA_IRIX6 /* figure out at run time */ +# define SAFENFSPATHCONF 0 /* pathconf(2) lies on NFS filesystems */ +# else /* IRIX6 */ +# define LA_TYPE LA_INT + +# ifdef IRIX64 +# define STAT64 1 +# define QUAD_T unsigned long long +# define NAMELISTMASK 0x7fffffffffffffff /* mask for nlist() values */ +# else /* IRIX64 */ +# define STAT64 0 +# define NAMELISTMASK 0x7fffffff /* mask for nlist() values */ +# endif /* IRIX64 */ +# endif /* IRIX6 */ +# if defined(IRIX64) || defined(IRIX5) || defined(IRIX6) +# include <sys/cdefs.h> +# include <paths.h> +# define ARGV_T char *const * +# define HASFCHOWN 1 /* has fchown(2) */ +# define HASSETRLIMIT 1 /* has setrlimit(2) syscall */ +# define HASGETDTABLESIZE 1 /* has getdtablesize(2) syscall */ +# define HASSTRERROR 1 /* has strerror(3) */ +# else /* defined(IRIX64) || defined(IRIX5) || defined(IRIX6) */ +# define ARGV_T const char ** +# define WAITUNION 1 /* use "union wait" as wait argument type */ +# endif /* defined(IRIX64) || defined(IRIX5) || defined(IRIX6) */ +# endif /* IRIX */ + + +/* +** SunOS and Solaris +** +** Tested on SunOS 4.1.x (a.k.a. Solaris 1.1.x) and +** Solaris 2.4 (a.k.a. SunOS 5.4). +*/ + +# if defined(sun) && !defined(BSD) + +# include <sys/time.h> +# define HASINITGROUPS 1 /* has initgroups(3) call */ +# define HASUNAME 1 /* use System V uname(2) system call */ +# define HASFCHMOD 1 /* has fchmod(2) syscall */ +# define IP_SRCROUTE 1 /* can check IP source routing */ +# define SAFENFSPATHCONF 1 /* pathconf(2) pessimizes on NFS filesystems */ +# ifndef HASFCHOWN +# define HASFCHOWN 1 /* fchown(2) */ +# endif /* ! HASFCHOWN */ + +# ifdef __svr4__ +# define LDA_USE_LOCKF 1 +# define LDA_USE_SETEUID 1 +# define _PATH_MAILDIR "/var/mail" +# endif /* __svr4__ */ + +# ifdef SOLARIS_2_3 +# define SOLARIS 20300 /* for back compat only -- use -DSOLARIS=20300 */ +# endif /* SOLARIS_2_3 */ + +# if defined(NOT_SENDMAIL) && !defined(SOLARIS) && defined(sun) && (defined(__svr4__) || defined(__SVR4)) +# define SOLARIS 1 /* unknown Solaris version */ +# endif /* defined(NOT_SENDMAIL) && !defined(SOLARIS) && defined(sun) && (defined(__svr4__) || defined(__SVR4)) */ + +# ifdef SOLARIS + /* Solaris 2.x (a.k.a. SunOS 5.x) */ +# ifndef __svr4__ +# define __svr4__ /* use all System V Release 4 defines below */ +# endif /* ! __svr4__ */ +# define GIDSET_T gid_t +# define USE_SA_SIGACTION 1 /* use sa_sigaction field */ +# define BROKEN_PTHREAD_SLEEP 1 /* sleep after pthread_create() fails */ +# define HASSTRERROR 1 /* has strerror(3) */ +# ifndef _PATH_UNIX +# define _PATH_UNIX "/dev/ksyms" +# endif /* ! _PATH_UNIX */ +# ifndef _PATH_VENDOR_CF +# define _PATH_VENDOR_CF "/etc/mail/sendmail.cf" +# endif /* ! _PATH_VENDOR_CF */ +# ifndef _PATH_SENDMAILPID +# define _PATH_SENDMAILPID "/etc/mail/sendmail.pid" +# endif /* ! _PATH_SENDMAILPID */ +# ifndef _PATH_HOSTS +# define _PATH_HOSTS "/etc/inet/hosts" +# endif /* ! _PATH_HOSTS */ +# ifndef SYSLOG_BUFSIZE +# define SYSLOG_BUFSIZE 1024 /* allow full size syslog buffer */ +# endif /* ! SYSLOG_BUFSIZE */ +# ifndef TZ_TYPE +# define TZ_TYPE TZ_TZNAME +# endif /* ! TZ_TYPE */ +# if SOLARIS >= 20300 || (SOLARIS < 10000 && SOLARIS >= 203) +# define USESETEUID 1 /* seteuid works as of 2.3 */ +# define LDA_CONTENTLENGTH 1 /* Needs the Content-Length header */ +# endif /* SOLARIS >= 20300 || (SOLARIS < 10000 && SOLARIS >= 203) */ +# if SOLARIS >= 20500 || (SOLARIS < 10000 && SOLARIS >= 205) +# define HASSETREUID 1 /* setreuid works as of 2.5 */ +# define HASSETREGID 1 /* use setregid(2) to set saved gid */ +# if SOLARIS < 207 || (SOLARIS > 10000 && SOLARIS < 20700) +# ifndef LA_TYPE +# define LA_TYPE LA_KSTAT /* use kstat(3k) -- may work in < 2.5 */ +# endif /* ! LA_TYPE */ +# ifndef RANDOMSHIFT /* random() doesn't work well (sometimes) */ +# define RANDOMSHIFT 8 +# endif /* ! RANDOMSHIFT */ +# endif /* SOLARIS < 207 || (SOLARIS > 10000 && SOLARIS < 20700) */ +# else /* SOLARIS >= 20500 || (SOLARIS < 10000 && SOLARIS >= 205) */ +# ifndef HASRANDOM +# define HASRANDOM 0 /* doesn't have random(3) */ +# endif /* ! HASRANDOM */ +# endif /* SOLARIS >= 20500 || (SOLARIS < 10000 && SOLARIS >= 205) */ +# if (SOLARIS > 10000 && SOLARIS < 20600) || SOLARIS < 206 +# define SM_INT32 int /* 32bit integer */ +# endif /* (SOLARIS > 10000 && SOLARIS < 20600) || SOLARIS < 206 */ +# if SOLARIS >= 20700 || (SOLARIS < 10000 && SOLARIS >= 207) +# ifndef LA_TYPE +# include <sys/loadavg.h> +# if SOLARIS >= 20900 || (SOLARIS < 10000 && SOLARIS >= 209) +# include <sys/pset.h> +# define LA_TYPE LA_PSET /* pset_getloadavg(3c) appears in 2.9 */ +# else /* SOLARIS >= 20900 || (SOLARIS < 10000 && SOLARIS >= 209) */ +# define LA_TYPE LA_SUBR /* getloadavg(3c) appears in 2.7 */ +# endif /* SOLARIS >= 20900 || (SOLARIS < 10000 && SOLARIS >= 209) */ +# endif /* ! LA_TYPE */ +# define HASGETUSERSHELL 1 /* getusershell(3c) bug fixed in 2.7 */ +# endif /* SOLARIS >= 20700 || (SOLARIS < 10000 && SOLARIS >= 207) */ +# if SOLARIS >= 20800 || (SOLARIS < 10000 && SOLARIS >= 208) +# undef _PATH_SENDMAILPID /* tmpfs /var/run added in 2.8 */ +# define _PATH_SENDMAILPID "/var/run/sendmail.pid" +# define SMRSH_CMDDIR "/var/adm/sm.bin" +# define SL_FUDGE 34 /* fudge offset for SyslogPrefixLen */ +# endif /* SOLARIS >= 20800 || (SOLARIS < 10000 && SOLARIS >= 208) */ +# if SOLARIS >= 20900 || (SOLARIS < 10000 && SOLARIS >= 209) +# define HASURANDOMDEV 1 /* /dev/[u]random added in S9 */ +# endif /* SOLARIS >= 20900 || (SOLARIS < 10000 && SOLARIS >= 209) */ +# ifndef HASGETUSERSHELL +# define HASGETUSERSHELL 0 /* getusershell(3) causes core dumps pre-2.7 */ +# endif /* ! HASGETUSERSHELL */ + +# else /* SOLARIS */ + /* SunOS 4.0.3 or 4.1.x */ +# define HASGETUSERSHELL 1 /* DOES have getusershell(3) call in libc */ +# define HASSETREUID 1 /* has setreuid(2) call */ +# ifndef HASFLOCK +# define HASFLOCK 1 /* has flock(2) call */ +# endif /* ! HASFLOCK */ +# define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() implementation */ +# define TZ_TYPE TZ_TM_ZONE /* use tm->tm_zone */ +# include <memory.h> +# include <vfork.h> +# ifdef __GNUC__ +# define strtoul strtol /* gcc library bogosity */ +# endif /* __GNUC__ */ +# define memmove(d, s, l) (bcopy((s), (d), (l))) +# define atexit(f) on_exit((f), 0) /* ugly hack for SunOS */ +# define SM_INT32 int /* 32bit integer */ +# define SM_ALIGN_SIZE (sizeof(long)) +# define GIDSET_T int +# define SM_CONF_SYSLOG 0 + +# ifdef SUNOS403 + /* special tweaking for SunOS 4.0.3 */ +# include <malloc.h> +# define BSD4_3 1 /* 4.3 BSD-based */ +# define NEEDSTRSTR 1 /* need emulation of strstr(3) routine */ +# define WAITUNION 1 /* use "union wait" as wait argument type */ +# undef WIFEXITED +# undef WEXITSTATUS +# undef HASUNAME +# define setpgid setpgrp +# define MODE_T int +typedef int pid_t; +extern char *getenv(); + +# else /* SUNOS403 */ + /* 4.1.x specifics */ +# define HASSETSID 1 /* has Posix setsid(2) call */ +# define HASSETVBUF 1 /* we have setvbuf(3) in libc */ + +# endif /* SUNOS403 */ +# endif /* SOLARIS */ + +# ifndef LA_TYPE +# define LA_TYPE LA_INT +# endif /* ! LA_TYPE */ + +# endif /* defined(sun) && !defined(BSD) */ + +/* +** DG/UX +** +** Tested on 5.4.2 and 5.4.3. Use DGUX_5_4_2 to get the +** older support. +** 5.4.3 changes from Mark T. Robinson <mtr@ornl.gov>. +*/ + +# ifdef DGUX_5_4_2 +# define DGUX 1 +# endif /* DGUX_5_4_2 */ + +# ifdef DGUX +# define SYSTEM5 1 +# define LA_TYPE LA_DGUX +# define HASSETREUID 1 /* has setreuid(2) call */ +# define HASUNAME 1 /* use System V uname(2) system call */ +# define HASSETSID 1 /* has Posix setsid(2) call */ +# define HASINITGROUPS 1 /* has initgroups(3) call */ +# define IP_SRCROUTE 0 /* does not have <netinet/ip_var.h> */ +# define HASGETUSERSHELL 0 /* does not have getusershell(3) */ +# ifndef IDENTPROTO +# define IDENTPROTO 0 /* TCP/IP implementation is broken */ +# endif /* ! IDENTPROTO */ +# define SPT_TYPE SPT_NONE /* don't use setproctitle */ +# define SFS_TYPE SFS_4ARGS /* four argument statfs() call */ +# define LDA_USE_LOCKF 1 + +/* these include files must be included early on DG/UX */ +# include <netinet/in.h> +# include <arpa/inet.h> + +/* compiler doesn't understand const? */ +# define const + +# ifdef DGUX_5_4_2 +# define inet_addr dgux_inet_addr +extern long dgux_inet_addr(); +# endif /* DGUX_5_4_2 */ +# endif /* DGUX */ + + +/* +** Digital Ultrix 4.2 - 4.5 +** +** Apparently, fcntl locking is broken on 4.2A, in that locks are +** not dropped when the process exits. This causes major problems, +** so flock is the only alternative. +*/ + +# ifdef ultrix +# define HASSETREUID 1 /* has setreuid(2) call */ +# define HASUNSETENV 1 /* has unsetenv(3) call */ +# define HASINITGROUPS 1 /* has initgroups(3) call */ +# define HASUNAME 1 /* use System V uname(2) system call */ +# define HASFCHMOD 1 /* has fchmod(2) syscall */ +# define HASFCHOWN 1 /* has fchown(2) syscall */ +# ifndef HASFLOCK +# define HASFLOCK 1 /* has flock(2) call */ +# endif /* ! HASFLOCK */ +# define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ +# ifndef BROKEN_RES_SEARCH +# define BROKEN_RES_SEARCH 1 /* res_search(unknown) returns h_errno=0 */ +# endif /* ! BROKEN_RES_SEARCH */ +# if !defined(NEEDLOCAL_HOSTNAME_LENGTH) && NAMED_BIND && __RES >= 19931104 && __RES < 19950621 +# define NEEDLOCAL_HOSTNAME_LENGTH 1 /* see sendmail/README */ +# endif /* !defined(NEEDLOCAL_HOSTNAME_LENGTH) && NAMED_BIND && __RES >= 19931104 && __RES < 19950621 */ +# ifdef vax +# define LA_TYPE LA_FLOAT +# else /* vax */ +# define LA_TYPE LA_INT +# define LA_AVENRUN "avenrun" +# endif /* vax */ +# define SFS_TYPE SFS_MOUNT /* use <sys/mount.h> statfs() impl */ +# ifndef IDENTPROTO +# define IDENTPROTO 0 /* pre-4.4 TCP/IP implementation is broken */ +# endif /* ! IDENTPROTO */ +# define SYSLOG_BUFSIZE 256 +# define SM_CONF_SYSLOG 0 +# endif /* ultrix */ + + +/* +** OSF/1 for KSR. +** +** Contributed by Todd C. Miller <Todd.Miller@cs.colorado.edu> +*/ + +# ifdef __ksr__ +# define __osf__ 1 /* get OSF/1 defines below */ +# ifndef TZ_TYPE +# define TZ_TYPE TZ_TZNAME /* use tzname[] vector */ +# endif /* ! TZ_TYPE */ +# endif /* __ksr__ */ + + +/* +** OSF/1 for Intel Paragon. +** +** Contributed by Jeff A. Earickson <jeff@ssd.intel.com> +** of Intel Scalable Systems Divison. +*/ + +# ifdef __PARAGON__ +# define __osf__ 1 /* get OSF/1 defines below */ +# ifndef TZ_TYPE +# define TZ_TYPE TZ_TZNAME /* use tzname[] vector */ +# endif /* ! TZ_TYPE */ +# define GIDSET_T gid_t +# define MAXNAMLEN NAME_MAX +# endif /* __PARAGON__ */ + + +/* +** Tru64 UNIX, formerly known as Digital UNIX, formerly known as DEC OSF/1 +** +** Tested for 3.2 and 4.0. +*/ + +# ifdef __osf__ +# define HASUNAME 1 /* has uname(2) call */ +# define HASUNSETENV 1 /* has unsetenv(3) call */ +# define USESETEUID 1 /* has usable seteuid(2) call */ +# define HASINITGROUPS 1 /* has initgroups(3) call */ +# define HASFCHMOD 1 /* has fchmod(2) syscall */ +# define HASFCHOWN 1 /* has fchown(2) syscall */ +# define HASSETLOGIN 1 /* has setlogin(2) */ +# define IP_SRCROUTE 1 /* can check IP source routing */ +# define HAS_ST_GEN 1 /* has st_gen field in stat struct */ +# define GIDSET_T gid_t +# define SM_INT32 int /* 32bit integer */ +# ifndef HASFLOCK +# define HASFLOCK 1 /* has flock(2) call */ +# endif /* ! HASFLOCK */ +# define LA_TYPE LA_ALPHAOSF +# define SFS_TYPE SFS_STATVFS /* use <sys/statvfs.h> statfs() impl */ +# ifndef _PATH_VENDOR_CF +# define _PATH_VENDOR_CF "/var/adm/sendmail/sendmail.cf" +# endif /* ! _PATH_VENDOR_CF */ +# ifndef _PATH_SENDMAILPID +# define _PATH_SENDMAILPID "/var/run/sendmail.pid" +# endif /* ! _PATH_SENDMAILPID */ +# endif /* __osf__ */ + + +/* +** NeXTstep +*/ + +# ifdef NeXT +# define HASINITGROUPS 1 /* has initgroups(3) call */ +# define NEEDPUTENV 2 /* need putenv(3) call; no setenv(3) call */ +# ifndef HASFLOCK +# define HASFLOCK 1 /* has flock(2) call */ +# endif /* ! HASFLOCK */ +# define UID_T int /* compiler gripes on uid_t */ +# define GID_T int /* ditto for gid_t */ +# define MODE_T int /* and mode_t */ +# define setpgid setpgrp +# ifndef NOT_SENDMAIL +# define sleep sleepX +# endif /* ! NOT_SENDMAIL */ +# ifndef LA_TYPE +# define LA_TYPE LA_MACH +# endif /* ! LA_TYPE */ +# define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() implementation */ +# ifdef _POSIX_SOURCE +extern struct passwd *getpwent(); +# else /* _POSIX_SOURCE */ +# define SM_CONF_GETOPT 0 /* need a replacement for getopt(3) */ +# define WAITUNION 1 /* use "union wait" as wait argument type */ +typedef int pid_t; +# undef WEXITSTATUS +# undef WIFEXITED +# undef WIFSTOPPED +# undef WTERMSIG +# endif /* _POSIX_SOURCE */ +# ifndef _PATH_VENDOR_CF +# define _PATH_VENDOR_CF "/etc/sendmail/sendmail.cf" +# endif /* ! _PATH_VENDOR_CF */ +# ifndef _PATH_SENDMAILPID +# define _PATH_SENDMAILPID "/etc/sendmail/sendmail.pid" +# endif /* ! _PATH_SENDMAILPID */ +# define SM_INT32 int /* 32bit integer */ + +# ifdef TCPWRAPPERS +# ifndef HASUNSETENV +# define HASUNSETENV 1 +# endif /* ! HASUNSETENV */ +# undef NEEDPUTENV +# endif /* TCPWRAPPERS */ +# ifndef __APPLE__ +# include <libc.h> +# ifndef S_IRUSR +# define S_IRUSR S_IREAD +# endif /* ! S_IRUSR */ +# ifndef S_IWUSR +# define S_IWUSR S_IWRITE +# endif /* ! S_IWUSR */ +# define _PATH_MAILDIR "/usr/spool/mail" +# endif /* ! __APPLE__ */ +# ifndef isascii +# define isascii(c) ((unsigned)(c) <= 0177) +# endif /* ! isascii */ +# endif /* NeXT */ + +/* +** Apple Rhapsody +** Contributed by Wilfredo Sanchez <wsanchez@apple.com> +** +** Also used for Apple Darwin support. +*/ + +# if defined(DARWIN) +# define HASFCHMOD 1 /* has fchmod(2) syscall */ +# define HASFLOCK 1 /* has flock(2) syscall */ +# define HASUNAME 1 /* has uname(2) syscall */ +# define HASUNSETENV 1 +# define HASSETSID 1 /* has the setsid(2) POSIX syscall */ +# define HASINITGROUPS 1 +# define HASSETVBUF 1 +# define HASSETREUID 0 +# define HASSETEUID 1 +# define USESETEUID 1 /* has usable seteuid(2) call */ +# define HASLSTAT 1 +# define HASSETRLIMIT 1 +# define HASWAITPID 1 +# define HASSTRERROR 1 /* has strerror(3) */ +# define HASGETDTABLESIZE 1 +# define HASGETUSERSHELL 1 +# define SM_CONF_GETOPT 0 /* need a replacement for getopt(3) */ +# define BSD4_4_SOCKADDR /* has sa_len */ +# define NETLINK 1 /* supports AF_LINK */ +# define HAS_ST_GEN 1 /* has st_gen field in stat struct */ +# define GIDSET_T gid_t +# define LA_TYPE LA_SUBR /* use getloadavg(3) */ +# define SFS_TYPE SFS_MOUNT /* use <sys/mount.h> statfs() impl */ +# define SPT_TYPE SPT_PSSTRINGS +# define SPT_PADCHAR '\0' /* pad process title with nulls */ +# define ERRLIST_PREDEFINED /* don't declare sys_errlist */ +# endif /* defined(DARWIN) */ + + +/* +** 4.4 BSD +** +** See also BSD defines. +*/ + +# if defined(BSD4_4) && !defined(__bsdi__) && !defined(__GNU__) +# include <paths.h> +# define HASUNSETENV 1 /* has unsetenv(3) call */ +# define USESETEUID 1 /* has usable seteuid(2) call */ +# define HASFCHMOD 1 /* has fchmod(2) syscall */ +# define HASFCHOWN 1 /* has fchown(2) syscall */ +# define HASSTRERROR 1 /* has strerror(3) */ +# define HAS_ST_GEN 1 /* has st_gen field in stat struct */ +# include <sys/cdefs.h> +# define ERRLIST_PREDEFINED /* don't declare sys_errlist */ +# define BSD4_4_SOCKADDR /* has sa_len */ +# define NEED_PRINTF_PERCENTQ 1 /* doesn't have %lld */ +# define NETLINK 1 /* supports AF_LINK */ +# ifndef LA_TYPE +# define LA_TYPE LA_SUBR +# endif /* ! LA_TYPE */ +# define SFS_TYPE SFS_MOUNT /* use <sys/mount.h> statfs() impl */ +# define SPT_TYPE SPT_PSSTRINGS /* use PS_STRINGS pointer */ +# endif /* defined(BSD4_4) && !defined(__bsdi__) && !defined(__GNU__) */ + + +/* +** BSD/OS (was BSD/386) (all versions) +** From Tony Sanders, BSDI +*/ + +# ifdef __bsdi__ +# include <paths.h> +# define HASUNSETENV 1 /* has the unsetenv(3) call */ +# define HASSETREUID 0 /* BSD-OS has broken setreuid(2) emulation */ +# define HASSETSID 1 /* has the setsid(2) POSIX syscall */ +# define USESETEUID 1 /* has usable seteuid(2) call */ +# define HASFCHMOD 1 /* has fchmod(2) syscall */ +# define HASSETLOGIN 1 /* has setlogin(2) */ +# define HASUNAME 1 /* has uname(2) syscall */ +# define HASSTRERROR 1 /* has strerror(3) */ +# define HAS_ST_GEN 1 /* has st_gen field in stat struct */ +# include <sys/cdefs.h> +# define ERRLIST_PREDEFINED /* don't declare sys_errlist */ +# define BSD4_4_SOCKADDR /* has sa_len */ +# define NETLINK 1 /* supports AF_LINK */ +# define SFS_TYPE SFS_MOUNT /* use <sys/mount.h> statfs() impl */ +# ifndef LA_TYPE +# define LA_TYPE LA_SUBR +# endif /* ! LA_TYPE */ +# define GIDSET_T gid_t +# define QUAD_T quad_t +# if defined(_BSDI_VERSION) && _BSDI_VERSION >= 199312 + /* version 1.1 or later */ +# undef SPT_TYPE +# define SPT_TYPE SPT_BUILTIN /* setproctitle is in libc */ +# else /* defined(_BSDI_VERSION) && _BSDI_VERSION >= 199312 */ + /* version 1.0 or earlier */ +# define SPT_PADCHAR '\0' /* pad process title with nulls */ +# endif /* defined(_BSDI_VERSION) && _BSDI_VERSION >= 199312 */ +# if defined(_BSDI_VERSION) && _BSDI_VERSION >= 199701 /* on 3.x */ +# define HASSETUSERCONTEXT 1 /* has setusercontext */ +# endif /* defined(_BSDI_VERSION) && _BSDI_VERSION >= 199701 */ +# if defined(_BSDI_VERSION) && _BSDI_VERSION <= 199701 /* 3.1 and earlier */ +# define MODE_T int /* va_arg() can't handle less than int */ +# endif /* defined(_BSDI_VERSION) && _BSDI_VERSION <= 199701 */ +# if defined(_BSDI_VERSION) && _BSDI_VERSION >= 199910 /* on 4.x */ +# define HASURANDOMDEV 1 /* has /dev/urandom(4) */ +# endif /* defined(_BSDI_VERSION) && _BSDI_VERSION >= 199910 */ +# endif /* __bsdi__ */ + + +/* +** QNX 4.2x +** Contributed by Glen McCready <glen@qnx.com>. +** +** Should work with all versions of QNX. +*/ + +# if defined(__QNX__) +# include <unix.h> +# include <sys/select.h> +# undef NGROUPS_MAX +# define HASSETSID 1 /* has the setsid(2) POSIX syscall */ +# define USESETEUID 1 /* has usable seteuid(2) call */ +# define HASFCHMOD 1 /* has fchmod(2) syscall */ +# define HASGETDTABLESIZE 1 /* has getdtablesize(2) call */ +# define HASSETREUID 1 /* has setreuid(2) call */ +# define HASSTRERROR 1 /* has strerror(3) */ +# define HASFLOCK 0 +# undef HASINITGROUPS /* has initgroups(3) call */ +# define SM_CONF_GETOPT 0 /* need a replacement for getopt(3) */ +# define IP_SRCROUTE 1 /* can check IP source routing */ +# define TZ_TYPE TZ_TMNAME /* use tmname variable */ +# define GIDSET_T gid_t +# define LA_TYPE LA_ZERO +# define SFS_TYPE SFS_NONE +# define SPT_TYPE SPT_REUSEARGV +# define SPT_PADCHAR '\0' /* pad process title with nulls */ +# define HASGETUSERSHELL 0 +# define E_PSEUDOBASE 512 +# define _FILE_H_INCLUDED +# endif /* defined(__QNX__) */ + + +/* +** FreeBSD / NetBSD / OpenBSD (all architectures, all versions) +** +** 4.3BSD clone, closer to 4.4BSD for FreeBSD 1.x and NetBSD 0.9x +** 4.4BSD-Lite based for FreeBSD 2.x and NetBSD 1.x +** +** See also BSD defines. +*/ + +# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) +# include <paths.h> +# define HASUNSETENV 1 /* has unsetenv(3) call */ +# define HASSETSID 1 /* has the setsid(2) POSIX syscall */ +# define USESETEUID 1 /* has usable seteuid(2) call */ +# define HASFCHMOD 1 /* has fchmod(2) syscall */ +# define HASFCHOWN 1 /* fchown(2) */ +# define HASUNAME 1 /* has uname(2) syscall */ +# define HASSTRERROR 1 /* has strerror(3) */ +# define HAS_ST_GEN 1 /* has st_gen field in stat struct */ +# define NEED_PRINTF_PERCENTQ 1 /* doesn't have %lld */ +# include <sys/cdefs.h> +# define ERRLIST_PREDEFINED /* don't declare sys_errlist */ +# define BSD4_4_SOCKADDR /* has sa_len */ +# define NETLINK 1 /* supports AF_LINK */ +# define SAFENFSPATHCONF 1 /* pathconf(2) pessimizes on NFS filesystems */ +# define GIDSET_T gid_t +# define QUAD_T unsigned long long +# ifndef LA_TYPE +# define LA_TYPE LA_SUBR +# endif /* ! LA_TYPE */ +# define SFS_TYPE SFS_MOUNT /* use <sys/mount.h> statfs() impl */ +# if defined(__NetBSD__) && (NetBSD > 199307 || NetBSD0_9 > 1) +# undef SPT_TYPE +# define SPT_TYPE SPT_BUILTIN /* setproctitle is in libc */ +# endif /* defined(__NetBSD__) && (NetBSD > 199307 || NetBSD0_9 > 1) */ +# if defined(__NetBSD__) && ((__NetBSD_Version__ > 102070000) || (NetBSD1_2 > 8) || defined(NetBSD1_4) || defined(NetBSD1_3)) +# define HASURANDOMDEV 1 /* has /dev/urandom(4) */ +# endif /* defined(__NetBSD__) && ((__NetBSD_Version__ > 102070000) || (NetBSD1_2 > 8) || defined(NetBSD1_4) || defined(NetBSD1_3)) */ +# if defined(__FreeBSD__) +# define HASSETLOGIN 1 /* has setlogin(2) */ +# if __FreeBSD_version >= 227001 +# define HASSRANDOMDEV 1 /* has srandomdev(3) */ +# define HASURANDOMDEV 1 /* has /dev/urandom(4) */ +# endif /* __FreeBSD_version >= 227001 */ +# undef SPT_TYPE +# if __FreeBSD__ >= 2 +# include <osreldate.h> +# if __FreeBSD_version >= 199512 /* 2.2-current when it appeared */ +# include <libutil.h> +# define SPT_TYPE SPT_BUILTIN +# endif /* __FreeBSD_version >= 199512 */ +# if __FreeBSD_version >= 222000 /* 2.2.2-release and later */ +# define HASSETUSERCONTEXT 1 /* BSDI-style login classes */ +# endif /* __FreeBSD_version >= 222000 */ +# if __FreeBSD_version >= 330000 /* 3.3.0-release and later */ +# define SMRSH_CMDDIR "/usr/libexec/sm.bin" +# define SMRSH_PATH "/bin:/usr/bin" +# endif /* __FreeBSD_version >= 330000 */ +# define USESYSCTL 1 /* use sysctl(3) for getting ncpus */ +# include <sys/sysctl.h> +# endif /* __FreeBSD__ >= 2 */ +# ifndef SPT_TYPE +# define SPT_TYPE SPT_REUSEARGV +# define SPT_PADCHAR '\0' /* pad process title with nulls */ +# endif /* ! SPT_TYPE */ +# endif /* defined(__FreeBSD__) */ +# if defined(__OpenBSD__) +# undef SPT_TYPE +# define SPT_TYPE SPT_BUILTIN /* setproctitle is in libc */ +# define HASSETLOGIN 1 /* has setlogin(2) */ +# define HASSETREUID 0 /* OpenBSD has broken setreuid(2) emulation */ +# define HASSETEGID 1 /* use setegid(2) to set saved gid */ +# define HASURANDOMDEV 1 /* has /dev/urandom(4) */ +# if OpenBSD >= 200006 +# define HASSRANDOMDEV 1 /* has srandomdev(3) */ +# endif /* OpenBSD >= 200006 */ +# if OpenBSD >= 200012 +# define HASSETUSERCONTEXT 1 /* BSDI-style login classes */ +# endif /* OpenBSD >= 200012 */ +# endif /* defined(__OpenBSD__) */ +# endif /* defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) */ + + +/* +** Mach386 +** +** For mt Xinu's Mach386 system. +*/ + +# if defined(MACH) && defined(i386) && !defined(__GNU__) +# define MACH386 1 +# define HASUNSETENV 1 /* has unsetenv(3) call */ +# define HASINITGROUPS 1 /* has initgroups(3) call */ +# ifndef HASFLOCK +# define HASFLOCK 1 /* has flock(2) call */ +# endif /* ! HASFLOCK */ +# define SM_CONF_GETOPT 0 /* need a replacement for getopt(3) */ +# define NEEDSTRTOL 1 /* need the strtol() function */ +# define setpgid setpgrp +# ifndef LA_TYPE +# define LA_TYPE LA_FLOAT +# endif /* ! LA_TYPE */ +# define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() implementation */ +# undef HASSETVBUF /* don't actually have setvbuf(3) */ +# undef WEXITSTATUS +# undef WIFEXITED +# ifndef _PATH_VENDOR_CF +# define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" +# endif /* ! _PATH_VENDOR_CF */ +# ifndef _PATH_SENDMAILPID +# define _PATH_SENDMAILPID "/etc/sendmail.pid" +# endif /* ! _PATH_SENDMAILPID */ +# endif /* defined(MACH) && defined(i386) && !defined(__GNU__) */ + + + +/* +** GNU OS (hurd) +** Largely BSD & posix compatible. +** Port contributed by Miles Bader <miles@gnu.ai.mit.edu>. +** Updated by Mark Kettenis <kettenis@wins.uva.nl>. +*/ + +# if defined(__GNU__) && !defined(NeXT) +# include <paths.h> +# define HASFCHMOD 1 /* has fchmod(2) call */ +# define HASFCHOWN 1 /* has fchown(2) call */ +# define HASUNAME 1 /* has uname(2) call */ +# define HASUNSETENV 1 /* has unsetenv(3) call */ +# define HAS_ST_GEN 1 /* has st_gen field in stat struct */ +# define HASSTRERROR 1 /* has strerror(3) */ +# define GIDSET_T gid_t +# define SOCKADDR_LEN_T socklen_t +# define SOCKOPT_LEN_T socklen_t +# if (__GLIBC__ == 2 && __GLIBC_MINOR__ > 1) || __GLIBC__ > 2 +# define LA_TYPE LA_SUBR +# else /* (__GLIBC__ == 2 && __GLIBC_MINOR__ > 1) || __GLIBC__ > 2 */ +# define LA_TYPE LA_MACH + /* GNU uses mach[34], which renames some rpcs from mach2.x. */ +# define host_self mach_host_self +# endif /* (__GLIBC__ == 2 && __GLIBC_MINOR__ > 1) || __GLIBC__ > 2 */ +# define SFS_TYPE SFS_STATFS +# define SPT_TYPE SPT_CHANGEARGV +# define ERRLIST_PREDEFINED 1 /* don't declare sys_errlist */ +# define BSD4_4_SOCKADDR 1 /* has sa_len */ +# define SIOCGIFCONF_IS_BROKEN 1 /* SIOCGFCONF doesn't work */ +# define HAS_IN_H 1 /* GNU has netinet/in.h. */ +/* GNU has no MAXPATHLEN; ideally the code should be changed to not use it. */ +# define MAXPATHLEN 2048 +# endif /* defined(__GNU__) && !defined(NeXT) */ + +/* +** 4.3 BSD -- this is for very old systems +** +** Should work for mt Xinu MORE/BSD and Mips UMIPS-BSD 2.1. +** +** You'll also have to install a new resolver library. +** I don't guarantee that support for this environment is complete. +*/ + +# if defined(oldBSD43) || defined(MORE_BSD) || defined(umipsbsd) +# define NEEDVPRINTF 1 /* need a replacement for vprintf(3) */ +# define SM_CONF_GETOPT 0 /* need a replacement for getopt(3) */ +# define ARBPTR_T char * +# define setpgid setpgrp +# ifndef LA_TYPE +# define LA_TYPE LA_FLOAT +# endif /* ! LA_TYPE */ +# ifndef _PATH_VENDOR_CF +# define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" +# endif /* ! _PATH_VENDOR_CF */ +# ifndef IDENTPROTO +# define IDENTPROTO 0 /* TCP/IP implementation is broken */ +# endif /* ! IDENTPROTO */ +# undef WEXITSTATUS +# undef WIFEXITED +typedef short pid_t; +# endif /* defined(oldBSD43) || defined(MORE_BSD) || defined(umipsbsd) */ + + +/* +** SCO Unix +** +** This includes three parts: +** +** The first is for SCO OpenServer 5. +** (Contributed by Keith Reynolds <keithr@sco.COM>). +** +** SCO OpenServer 5 has a compiler version number macro, +** which we can use to figure out what version we're on. +** This may have to change in future releases. +** +** The second is for SCO UNIX 3.2v4.2/Open Desktop 3.0. +** (Contributed by Philippe Brand <phb@colombo.telesys-innov.fr>). +** +** The third is for SCO UNIX 3.2v4.0/Open Desktop 2.0 and earlier. +*/ + +/* SCO OpenServer 5 */ +# if _SCO_DS >= 1 +# include <paths.h> +# define SIOCGIFNUM_IS_BROKEN 1 /* SIOCGIFNUM returns bogus value */ +# define HASFCHMOD 1 /* has fchmod(2) call */ +# define HASFCHOWN 1 /* has fchown(2) call */ +# define HASSETRLIMIT 1 /* has setrlimit(2) call */ +# define USESETEUID 1 /* has seteuid(2) call */ +# define HASINITGROUPS 1 /* has initgroups(3) call */ +# define HASGETDTABLESIZE 1 /* has getdtablesize(2) call */ +# define RLIMIT_NEEDS_SYS_TIME_H 1 +# define LDA_USE_LOCKF 1 +# ifndef LA_TYPE +# define LA_TYPE LA_DEVSHORT +# endif /* ! LA_TYPE */ +# define _PATH_AVENRUN "/dev/table/avenrun" +# ifndef _SCO_unix_4_2 +# define _SCO_unix_4_2 +# else /* ! _SCO_unix_4_2 */ +# define SOCKADDR_LEN_T size_t /* e.g., arg#3 to accept, getsockname */ +# define SOCKOPT_LEN_T size_t /* arg#5 to getsockopt */ +# endif /* ! _SCO_unix_4_2 */ +# endif /* _SCO_DS >= 1 */ + +/* SCO UNIX 3.2v4.2/Open Desktop 3.0 */ +# ifdef _SCO_unix_4_2 +# define _SCO_unix_ +# define HASSETREUID 1 /* has setreuid(2) call */ +# endif /* _SCO_unix_4_2 */ + +/* SCO UNIX 3.2v4.0 Open Desktop 2.0 and earlier */ +# ifdef _SCO_unix_ +# include <sys/stream.h> /* needed for IP_SRCROUTE */ +# define SYSTEM5 1 /* include all the System V defines */ +# define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ +# define NOFTRUNCATE 0 /* has (simulated) ftruncate call */ +# ifndef USE_SIGLONGJMP +# define USE_SIGLONGJMP 1 /* sigsetjmp needed for signal handling */ +# endif /* ! USE_SIGLONGJMP */ +# define MAXPATHLEN PATHSIZE +# define SFS_TYPE SFS_4ARGS /* use <sys/statfs.h> 4-arg impl */ +# define SFS_BAVAIL f_bfree /* alternate field name */ +# define SPT_TYPE SPT_SCO /* write kernel u. area */ +# define TZ_TYPE TZ_TM_NAME /* use tm->tm_name */ +# define UID_T uid_t +# define GID_T gid_t +# define GIDSET_T gid_t +# define _PATH_UNIX "/unix" +# ifndef _PATH_VENDOR_CF +# define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" +# endif /* ! _PATH_VENDOR_CF */ +# ifndef _PATH_SENDMAILPID +# define _PATH_SENDMAILPID "/etc/sendmail.pid" +# endif /* ! _PATH_SENDMAILPID */ + +/* stuff fixed in later releases */ +# ifndef _SCO_unix_4_2 +# define SYS5SIGNALS 1 /* SysV signal semantics -- reset on each sig */ +# endif /* ! _SCO_unix_4_2 */ + +# ifndef _SCO_DS +# define ftruncate chsize /* use chsize(2) to emulate ftruncate */ +# define NEEDFSYNC 1 /* needs the fsync(2) call stub */ +# define NETUNIX 0 /* no unix domain socket support */ +# define LA_TYPE LA_SHORT +# endif /* ! _SCO_DS */ + +# endif /* _SCO_unix_ */ + +/* +** ISC (SunSoft) Unix. +** +** Contributed by J.J. Bailey <jjb@jagware.bcc.com> +*/ + +# ifdef ISC_UNIX +# include <net/errno.h> +# include <sys/stream.h> /* needed for IP_SRCROUTE */ +# include <sys/bsdtypes.h> +# define SYSTEM5 1 /* include all the System V defines */ +# define SYS5SIGNALS 1 /* SysV signal semantics -- reset on each sig */ +# define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ +# define HASSETREUID 1 /* has setreuid(2) call */ +# define NEEDFSYNC 1 /* needs the fsync(2) call stub */ +# define NETUNIX 0 /* no unix domain socket support */ +# define MAXPATHLEN 1024 +# define LA_TYPE LA_SHORT +# define SFS_TYPE SFS_STATFS /* use <sys/statfs.h> statfs() impl */ +# define SFS_BAVAIL f_bfree /* alternate field name */ +# define _PATH_UNIX "/unix" +# ifndef _PATH_VENDOR_CF +# define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" +# endif /* ! _PATH_VENDOR_CF */ +# ifndef _PATH_SENDMAILPID +# define _PATH_SENDMAILPID "/etc/sendmail.pid" +# endif /* ! _PATH_SENDMAILPID */ +# endif /* ISC_UNIX */ + + +/* +** Altos System V (5.3.1) +** Contributed by Tim Rice <tim@trr.metro.net>. +*/ + +# ifdef ALTOS_SYSTEM_V +# include <sys/stream.h> +# include <limits.h> +# define SYSTEM5 1 /* include all the System V defines */ +# define SYS5SIGNALS 1 /* SysV signal semantics -- reset on each sig */ +# define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ +# define WAITUNION 1 /* use "union wait" as wait argument type */ +# define NEEDFSYNC 1 /* no fsync(2) in system library */ +# define NEEDSTRSTR 1 /* need emulation of the strstr(3) call */ +# define NOFTRUNCATE 1 /* do not have ftruncate(2) */ +# define MAXPATHLEN PATH_MAX +# define LA_TYPE LA_SHORT +# define SFS_TYPE SFS_STATFS /* use <sys/statfs.h> statfs() impl */ +# define SFS_BAVAIL f_bfree /* alternate field name */ +# define TZ_TYPE TZ_TZNAME /* use tzname[] vector */ +# define NETUNIX 0 /* no unix domain socket support */ +# undef WIFEXITED +# undef WEXITSTATUS +# define strtoul strtol /* gcc library bogosity */ + +typedef unsigned short uid_t; +typedef unsigned short gid_t; +typedef short pid_t; +typedef unsigned long mode_t; + +/* some stuff that should have been in the include files */ +extern char *malloc(); +extern struct passwd *getpwent(); +extern struct passwd *getpwnam(); +extern struct passwd *getpwuid(); +extern char *getenv(); +extern struct group *getgrgid(); +extern struct group *getgrnam(); + +# endif /* ALTOS_SYSTEM_V */ + + +/* +** ConvexOS 11.0 and later +** +** "Todd C. Miller" <millert@mroe.cs.colorado.edu> claims this +** works on 9.1 as well. +** +** ConvexOS 11.5 and later, should work on 11.0 as defined. +** For pre-ConvexOOS 11.0, define SM_CONF_GETOPT=0, undef IDENTPROTO +** +** Eric Schnoebelen (eric@cirr.com) For CONVEX Computer Corp. +** (now the CONVEX Technologies Center of Hewlett Packard) +*/ + +# ifdef _CONVEX_SOURCE +# define HASGETDTABLESIZE 1 /* has getdtablesize(2) */ +# define HASINITGROUPS 1 /* has initgroups(3) */ +# define HASUNAME 1 /* use System V uname(2) system call */ +# define HASSETSID 1 /* has POSIX setsid(2) call */ +# define HASUNSETENV 1 /* has unsetenv(3) */ +# define HASFLOCK 1 /* has flock(2) */ +# define HASSETRLIMIT 1 /* has setrlimit(2) */ +# define HASSETREUID 1 /* has setreuid(2) */ +# define BROKEN_RES_SEARCH 1 /* res_search(unknown) returns h_error=0 */ +# define NEEDPUTENV 1 /* needs putenv (written in terms of setenv) */ +# define SM_CONF_GETOPT 1 /* need a replacement for getopt(3) */ +# define IP_SRCROUTE 0 /* Something is broken with getsockopt() */ +# define LA_TYPE LA_FLOAT +# define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() implementation */ +# ifndef _PATH_VENDOR_CF +# define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" +# endif /* ! _PATH_VENDOR_CF */ +# ifndef S_IREAD +# define S_IREAD _S_IREAD +# define S_IWRITE _S_IWRITE +# define S_IEXEC _S_IEXEC +# define S_IFMT _S_IFMT +# define S_IFCHR _S_IFCHR +# define S_IFBLK _S_IFBLK +# endif /* ! S_IREAD */ +# ifndef TZ_TYPE +# define TZ_TYPE TZ_TIMEZONE +# endif /* ! TZ_TYPE */ +# ifndef IDENTPROTO +# define IDENTPROTO 1 +# endif /* ! IDENTPROTO */ +# ifndef SHARE_V1 +# define SHARE_V1 1 /* version 1 of the fair share scheduler */ +# endif /* ! SHARE_V1 */ +# if !defined(__GNUC__ ) +# define UID_T int /* GNUC gets it right, ConvexC botches */ +# define GID_T int /* GNUC gets it right, ConvexC botches */ +# endif /* !defined(__GNUC__ ) */ +# if SECUREWARE +# define FORK fork /* SecureWare wants the real fork! */ +# else /* SECUREWARE */ +# define FORK vfork /* the rest of the OS versions don't care */ +# endif /* SECUREWARE */ +# endif /* _CONVEX_SOURCE */ + + +/* +** RISC/os 4.52 +** +** Gives a ton of warning messages, but otherwise compiles. +*/ + +# ifdef RISCOS + +# define HASUNSETENV 1 /* has unsetenv(3) call */ +# ifndef HASFLOCK +# define HASFLOCK 1 /* has flock(2) call */ +# endif /* ! HASFLOCK */ +# define WAITUNION 1 /* use "union wait" as wait argument type */ +# define SM_CONF_GETOPT 0 /* need a replacement for getopt(3) */ +# define NEEDPUTENV 1 /* need putenv(3) call */ +# define NEEDSTRSTR 1 /* need emulation of the strstr(3) call */ +# define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() implementation */ +# define LA_TYPE LA_INT +# define LA_AVENRUN "avenrun" +# define _PATH_UNIX "/unix" +# undef WIFEXITED + +# define setpgid setpgrp + +typedef int pid_t; +# define SIGFUNC_DEFINED +# define SIGFUNC_RETURN (0) +# define SIGFUNC_DECL int +typedef int (*sigfunc_t)(); +extern char *getenv(); +extern void *malloc(); + +/* added for RISC/os 4.01...which is dumber than 4.50 */ +# ifdef RISCOS_4_0 +# ifndef ARBPTR_T +# define ARBPTR_T char * +# endif /* ! ARBPTR_T */ +# undef HASFLOCK +# define HASFLOCK 0 +# endif /* RISCOS_4_0 */ + +# include <sys/time.h> + +# endif /* RISCOS */ + + +/* +** Linux 0.99pl10 and above... +** +** Thanks to, in reverse order of contact: +** +** John Kennedy <warlock@csuchico.edu> +** Andrew Pam <avatar@aus.xanadu.com> +** Florian La Roche <rzsfl@rz.uni-sb.de> +** Karl London <karl@borg.demon.co.uk> +** +** Last compiled against: [07/21/98 @ 11:47:34 AM (Tuesday)] +** sendmail 8.9.1 bind-8.1.2 db-2.4.14 +** gcc-2.8.1 glibc-2.0.94 linux-2.1.109 +** +** NOTE: Override HASFLOCK as you will but, as of 1.99.6, mixed-style +** file locking is no longer allowed. In particular, make sure +** your DBM library and sendmail are both using either flock(2) +** *or* fcntl(2) file locking, but not both. +*/ + +# ifdef __linux__ +# include <linux/version.h> +# if !defined(KERNEL_VERSION) /* not defined in 2.0.x kernel series */ +# define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) +# endif /* !defined(KERNEL_VERSION) */ +# define BSD 1 /* include BSD defines */ +# define HASSETREGID 1 /* use setregid(2) to set saved gid */ +# ifndef REQUIRES_DIR_FSYNC +# define REQUIRES_DIR_FSYNC 1 /* requires fsync() on directory */ +# endif /* REQUIRES_DIR_FSYNC */ +# ifndef USESETEUID +# define USESETEUID 0 /* has it due to POSIX, but doesn't work */ +# endif /* USESETEUID */ +# define SM_CONF_GETOPT 0 /* need a replacement for getopt(3) */ +# define HASUNAME 1 /* use System V uname(2) system call */ +# define HASUNSETENV 1 /* has unsetenv(3) call */ +# define ERRLIST_PREDEFINED /* don't declare sys_errlist */ +# define GIDSET_T gid_t /* from <linux/types.h> */ +# ifndef HASGETUSERSHELL +# define HASGETUSERSHELL 0 /* getusershell(3) broken in Slackware 2.0 */ +# endif /* HASGETUSERSHELL */ +# ifndef IP_SRCROUTE +# define IP_SRCROUTE 0 /* linux <= 1.2.8 doesn't support IP_OPTIONS */ +# endif /* ! IP_SRCROUTE */ +# ifndef HAS_IN_H +# define HAS_IN_H 1 /* use netinet/in.h */ +# endif /* ! HAS_IN_H */ +# ifndef USE_SIGLONGJMP +# define USE_SIGLONGJMP 1 /* sigsetjmp needed for signal handling */ +# endif /* ! USE_SIGLONGJMP */ +# ifndef HASFLOCK +# if LINUX_VERSION_CODE < 66399 +# define HASFLOCK 0 /* flock(2) is broken after 0.99.13 */ +# else /* LINUX_VERSION_CODE < 66399 */ +# define HASFLOCK 1 /* flock(2) fixed after 1.3.95 */ +# endif /* LINUX_VERSION_CODE < 66399 */ +# endif /* ! HASFLOCK */ +# ifndef LA_TYPE +# define LA_TYPE LA_PROCSTR +# endif /* ! LA_TYPE */ +# define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() impl */ +# define SPT_PADCHAR '\0' /* pad process title with nulls */ +# if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,0,0)) +# ifndef HASURANDOMDEV +# define HASURANDOMDEV 1 /* 2.0 (at least) has linux/drivers/char/random.c */ +# endif /* ! HASURANDOMDEV */ +# endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,0,0)) */ +# ifndef TZ_TYPE +# define TZ_TYPE TZ_NONE /* no standard for Linux */ +# endif /* ! TZ_TYPE */ +# ifndef _PATH_SENDMAILPID +# define _PATH_SENDMAILPID "/var/run/sendmail.pid" +# endif /* ! _PATH_SENDMAILPID */ +# include <sys/sysmacros.h> +# undef atol /* wounded in <stdlib.h> */ +# if NETINET6 + /* + ** Linux doesn't have a good way to tell userland what interfaces are + ** IPv6-capable. Therefore, the BIND resolver can not determine if there + ** are IPv6 interfaces to honor AI_ADDRCONFIG. Unfortunately, it assumes + ** that none are present. (Excuse the macro name ADDRCONFIG_IS_BROKEN.) + */ +# define ADDRCONFIG_IS_BROKEN 1 + + /* + ** Indirectly included from glibc's <feature.h>. IPv6 support is native + ** in 2.1 and later, but the APIs appear before the functions. + */ +# if defined(__GLIBC__) && defined(__GLIBC_MINOR__) +# define HASSTRERROR 1 /* has strerror(3) */ +# define GLIBC_VERSION ((__GLIBC__ << 8) + __GLIBC_MINOR__) +# if (GLIBC_VERSION >= 0x201) +# undef IPPROTO_ICMPV6 /* linux #defines, glibc enums */ +# else /* (GLIBC_VERSION >= 0x201) */ +# include <linux/in6.h> /* IPv6 support */ +# endif /* (GLIBC_VERSION >= 0x201) */ +# if (GLIBC_VERSION >= 0x201 && !defined(NEEDSGETIPNODE)) + /* Have APIs in <netdb.h>, but no support in glibc */ +# define NEEDSGETIPNODE 1 +# endif /* (GLIBC_VERSION >= 0x201 && !defined(NEEDSGETIPNODE)) */ +# undef GLIBC_VERSION +# endif /* defined(__GLIBC__) && defined(__GLIBC_MINOR__) */ +# endif /* NETINET6 */ +# ifndef HASFCHOWN +# define HASFCHOWN 1 /* fchown(2) */ +# endif /* ! HASFCHOWN */ +# if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,0,36)) && !defined(HASFCHMOD) +# define HASFCHMOD 1 /* fchmod(2) */ +# endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,0,36)) && !defined(HASFCHMOD) */ +# endif /* __linux__ */ + + +/* +** DELL SVR4 Issue 2.2, and others +** From Kimmo Suominen <kim@grendel.lut.fi> +** +** It's on #ifdef DELL_SVR4 because Solaris also gets __svr4__ +** defined, and the definitions conflict. +** +** Peter Wemm <peter@perth.DIALix.oz.au> claims that the setreuid +** trick works on DELL 2.2 (SVR4.0/386 version 4.0) and ESIX 4.0.3A +** (SVR4.0/386 version 3.0). +*/ + +# ifdef DELL_SVR4 + /* no changes necessary */ + /* see general __svr4__ defines below */ +# endif /* DELL_SVR4 */ + + +/* +** Apple A/UX 3.0 +*/ + +# ifdef _AUX_SOURCE +# include <sys/sysmacros.h> +# define BSD /* has BSD routines */ +# define HASSETRLIMIT 0 /* ... but not setrlimit(2) */ +# define BROKEN_RES_SEARCH 1 /* res_search(unknown) returns h_errno=0 */ +# define BOGUS_O_EXCL 1 /* exclusive open follows symlinks */ +# define HASUNAME 1 /* use System V uname(2) system call */ +# define HASFCHMOD 1 /* has fchmod(2) syscall */ +# define HASINITGROUPS 1 /* has initgroups(3) call */ +# define HASSETVBUF 1 /* has setvbuf(3) in libc */ +# define HASSTRERROR 1 /* has strerror(3) */ +# define SIGFUNC_DEFINED /* sigfunc_t already defined */ +# define SIGFUNC_RETURN /* POSIX-mode */ +# define SIGFUNC_DECL void /* POSIX-mode */ +# define ERRLIST_PREDEFINED 1 +# ifndef IDENTPROTO +# define IDENTPROTO 0 /* TCP/IP implementation is broken */ +# endif /* ! IDENTPROTO */ +# ifndef LA_TYPE +# define LA_TYPE LA_INT +# define FSHIFT 16 +# endif /* ! LA_TYPE */ +# define LA_AVENRUN "avenrun" +# define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() implementation */ +# define TZ_TYPE TZ_TZNAME +# ifndef _PATH_UNIX +# define _PATH_UNIX "/unix" /* should be in <paths.h> */ +# endif /* ! _PATH_UNIX */ +# ifndef _PATH_VENDOR_CF +# define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" +# endif /* ! _PATH_VENDOR_CF */ +# undef WIFEXITED +# undef WEXITSTATUS +# endif /* _AUX_SOURCE */ + + +/* +** Encore UMAX V +** +** Not extensively tested. +*/ + +# ifdef UMAXV +# define HASUNAME 1 /* use System V uname(2) system call */ +# define HASSETVBUF 1 /* we have setvbuf(3) in libc */ +# define HASINITGROUPS 1 /* has initgroups(3) call */ +# define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ +# define SYS5SIGNALS 1 /* SysV signal semantics -- reset on each sig */ +# define SYS5SETPGRP 1 /* use System V setpgrp(2) syscall */ +# define SFS_TYPE SFS_4ARGS /* four argument statfs() call */ +# define MAXPATHLEN PATH_MAX +extern struct passwd *getpwent(), *getpwnam(), *getpwuid(); +extern struct group *getgrent(), *getgrnam(), *getgrgid(); +# undef WIFEXITED +# undef WEXITSTATUS +# endif /* UMAXV */ + + +/* +** Stardent Titan 3000 running TitanOS 4.2. +** +** Must be compiled in "cc -43" mode. +** +** From Kate Hedstrom <kate@ahab.rutgers.edu>. +** +** Note the tweaking below after the BSD defines are set. +*/ + +# ifdef titan +# define setpgid setpgrp +typedef int pid_t; +# undef WIFEXITED +# undef WEXITSTATUS +# endif /* titan */ + + +/* +** Sequent DYNIX 3.2.0 +** +** From Jim Davis <jdavis@cs.arizona.edu>. +*/ + +# ifdef sequent + +# define BSD 1 +# define HASUNSETENV 1 +# define BSD4_3 1 /* to get signal() in conf.c */ +# define WAITUNION 1 +# define LA_TYPE LA_FLOAT +# ifdef _POSIX_VERSION +# undef _POSIX_VERSION /* set in <unistd.h> */ +# endif /* _POSIX_VERSION */ +# undef HASSETVBUF /* don't actually have setvbuf(3) */ +# define setpgid setpgrp + +/* Have to redefine WIFEXITED to take an int, to work with waitfor() */ +# undef WIFEXITED +# define WIFEXITED(s) (((union wait*)&(s))->w_stopval != WSTOPPED && \ + ((union wait*)&(s))->w_termsig == 0) +# define WEXITSTATUS(s) (((union wait*)&(s))->w_retcode) +typedef int pid_t; +# define isgraph(c) (isprint(c) && (c != ' ')) + +# ifndef IDENTPROTO +# define IDENTPROTO 0 /* TCP/IP implementation is broken */ +# endif /* ! IDENTPROTO */ + +# ifndef _PATH_UNIX +# define _PATH_UNIX "/dynix" +# endif /* ! _PATH_UNIX */ +# ifndef _PATH_VENDOR_CF +# define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" +# endif /* ! _PATH_VENDOR_CF */ +# endif /* sequent */ + + +/* +** Sequent DYNIX/ptx v2.0 (and higher) +** +** For DYNIX/ptx v1.x, undefine HASSETREUID. +** +** From Tim Wright <timw@sequent.com>. +** Update from Jack Woolley <jwoolley@sctcorp.com>, 26 Dec 1995, +** for DYNIX/ptx 4.0.2. +*/ + +# ifdef _SEQUENT_ +# include <sys/stream.h> +# define SYSTEM5 1 /* include all the System V defines */ +# define HASSETSID 1 /* has POSIX setsid(2) call */ +# define HASINITGROUPS 1 /* has initgroups(3) call */ +# define HASSETREUID 1 /* has setreuid(2) call */ +# define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ +# define GIDSET_T gid_t +# define LA_TYPE LA_INT +# define SFS_TYPE SFS_STATFS /* use <sys/statfs.h> statfs() impl */ +# define SPT_TYPE SPT_NONE /* don't use setproctitle */ +# ifndef IDENTPROTO +# define IDENTPROTO 0 /* TCP/IP implementation is broken */ +# endif /* ! IDENTPROTO */ +# ifndef _PATH_VENDOR_CF +# define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" +# endif /* ! _PATH_VENDOR_CF */ +# ifndef _PATH_SENDMAILPID +# define _PATH_SENDMAILPID "/etc/sendmail.pid" +# endif /* ! _PATH_SENDMAILPID */ +# endif /* _SEQUENT_ */ + + +/* +** Cray Unicos +** +** Ported by David L. Kensiski, Sterling Sofware <kensiski@nas.nasa.gov> +*/ + +# ifdef UNICOS +# define SYSTEM5 1 /* include all the System V defines */ +# define SYS5SIGNALS 1 /* SysV signal semantics -- reset on each sig */ +# define MAXPATHLEN PATHSIZE +# define LA_TYPE LA_ZERO +# define SFS_TYPE SFS_4ARGS /* four argument statfs() call */ +# define SFS_BAVAIL f_bfree /* alternate field name */ +# endif /* UNICOS */ + + +/* +** Apollo DomainOS +** +** From Todd Martin <tmartint@tus.ssi1.com> & Don Lewis <gdonl@gv.ssi1.com> +** +** 15 Jan 1994; updated 2 Aug 1995 +** +*/ + +# ifdef apollo +# define HASSETREUID 1 /* has setreuid(2) call */ +# define HASINITGROUPS 1 /* has initgroups(2) call */ +# define IP_SRCROUTE 0 /* does not have <netinet/ip_var.h> */ +# define SPT_TYPE SPT_NONE /* don't use setproctitle */ +# define LA_TYPE LA_SUBR /* use getloadavg.c */ +# define SFS_TYPE SFS_4ARGS /* four argument statfs() call */ +# define SFS_BAVAIL f_bfree /* alternate field name */ +# define TZ_TYPE TZ_TZNAME +# ifndef _PATH_VENDOR_CF +# define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" +# endif /* ! _PATH_VENDOR_CF */ +# ifndef _PATH_SENDMAILPID +# define _PATH_SENDMAILPID "/etc/sendmail.pid" +# endif /* ! _PATH_SENDMAILPID */ +# undef S_IFSOCK /* S_IFSOCK and S_IFIFO are the same */ +# undef S_IFIFO +# define S_IFIFO 0010000 +# ifndef IDENTPROTO +# define IDENTPROTO 0 /* TCP/IP implementation is broken */ +# endif /* ! IDENTPROTO */ +# define RLIMIT_NEEDS_SYS_TIME_H 1 +# if defined(NGROUPS_MAX) && !NGROUPS_MAX +# undef NGROUPS_MAX +# endif /* defined(NGROUPS_MAX) && !NGROUPS_MAX */ +# endif /* apollo */ + +/* +** MPE-iX +** +** Requires MPE 6.0 or greater. See sendmail/README for more info. +** +** From Mark Bixby <mark_bixby@hp.com> or <mark@bixby.org>. +*/ + +# ifdef MPE + +# include <sys/sysmacros.h> +# include <fcntl.h> + +/* Sendmail stuff */ +# define HASFCHOWN 0 /* lacks fchown() */ +# define HASGETUSERSHELL 0 /* lacks getusershell() */ +# ifdef HASNICE +# undef HASNICE +# endif /* HASNICE */ +# define HASNICE 0 /* lacks nice() */ +# define HASRANDOM 0 /* lacks random() */ +# ifdef HASRRESVPORT +# undef HASRRESVPORT +# endif /* HASRRESVPORT */ +# define HASRRESVPORT 0 /* lacks rresvport() */ +# define IP_SRCROUTE 0 /* lacks IP source routing fields */ +# ifdef MATCHGECOS +# undef MATCHGECOS +# endif /* MATCHGECOS */ +# define MATCHGECOS 0 /* lacks an initialized GECOS field */ +# define NEEDFSYNC 1 /* use sendmail's fsync() */ +# define NEEDLINK 1 /* use sendmail's link() */ +# define NOFTRUNCATE 1 /* lacks ftruncate() */ +# define SFS_TYPE SFS_NONE /* can't determine disk space */ +# define SM_CONF_SYSLOG 0 /* use sendmail decl of syslog() */ +# define USE_DOUBLE_FORK 0 /* don't fork an intermediate zombie */ +# define USE_ENVIRON 1 /* use environ instead of envp */ + +/* Missing header stuff */ +# define AF_UNSPEC 0 +# define AF_MAX AF_INET +# define IFF_LOOPBACK 0x8 +# define IN_LOOPBACKNET 127 +# define MAXNAMLEN NAME_MAX +# define S_IEXEC S_IXUSR +# define S_IREAD S_IRUSR +# define S_IWRITE S_IWUSR + +/* Present header stuff that needs to be missing */ +# undef NGROUPS_MAX + +/* Shadow functions */ +# define bind sendmail_mpe_bind +# define _exit sendmail_mpe__exit +# define exit sendmail_mpe_exit +# define fcntl sendmail_mpe_fcntl +# define getegid sendmail_mpe_getegid +# define geteuid sendmail_mpe_geteuid +# define getpwnam sendmail_mpe_getpwnam +# define getpwuid sendmail_mpe_getpwuid +# define setgid sendmail_mpe_setgid +# define setuid sendmail_mpe_setuid +extern int sendmail_mpe_fcntl __P((int, int, ...)); +extern struct passwd * sendmail_mpe_getpwnam __P((const char *)); +extern struct passwd * sendmail_mpe_getpwuid __P((uid_t)); +# endif /* MPE */ + +/* +** System V Rel 5.x (a.k.a Unixware7 w/o BSD-Compatibility Libs ie. native) +** +** Contributed by Paul Gampe <paulg@apnic.net> +*/ + +# ifdef __svr5__ +# include <sys/mkdev.h> +# define __svr4__ +# define SYS5SIGNALS 1 +# define HASFCHOWN 1 /* has fchown(2) call */ +# define HASSETSID 1 +# define HASSETREUID 1 +# define HASWAITPID 1 +# define HASGETDTABLESIZE 1 +# define GIDSET_T gid_t +# define SOCKADDR_LEN_T size_t +# define SOCKOPT_LEN_T size_t +# ifndef _PATH_UNIX +# define _PATH_UNIX "/stand/unix" +# endif /* ! _PATH_UNIX */ +# define SPT_PADCHAR '\0' /* pad process title with nulls */ +# ifndef SYSLOG_BUFSIZE +# define SYSLOG_BUFSIZE 1024 /* unsure */ +# endif /* ! SYSLOG_BUFSIZE */ +# ifndef _PATH_VENDOR_CF +# define _PATH_VENDOR_CF "/etc/sendmail.cf" +# endif /* ! _PATH_VENDOR_CF */ +# ifndef _PATH_SENDMAILPID +# define _PATH_SENDMAILPID "/etc/sendmail.pid" +# endif /* ! _PATH_SENDMAILPID */ +# undef offsetof /* avoid stddefs.h, sys/sysmacros.h conflict */ +#if !defined(SM_SET_H_ERRNO) && defined(_REENTRANT) +# define SM_SET_H_ERRNO(err) set_h_errno((err)) +#endif /* ! SM_SET_H_ERRNO && _REENTRANT */ +# endif /* __svr5__ */ + +/* ###################################################################### */ + +/* +** UnixWare 2.x +*/ + +# ifdef UNIXWARE2 +# define UNIXWARE 1 +# undef offsetof /* avoid stddefs.h, sys/sysmacros.h conflict */ +# endif /* UNIXWARE2 */ + + +/* +** UnixWare 1.1.2. +** +** Updated by Petr Lampa <lampa@fee.vutbr.cz>. +** From Evan Champion <evanc@spatial.synapse.org>. +*/ + +# ifdef UNIXWARE +# include <sys/mkdev.h> +# define SYSTEM5 1 +# define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ +# define HASSETREUID 1 +# define HASSETSID 1 +# define HASINITGROUPS 1 +# define GIDSET_T gid_t +# define SLEEP_T unsigned +# define SFS_TYPE SFS_STATVFS +# define LA_TYPE LA_ZERO +# undef WIFEXITED +# undef WEXITSTATUS +# ifndef _PATH_UNIX +# define _PATH_UNIX "/unix" +# endif /* ! _PATH_UNIX */ +# ifndef _PATH_VENDOR_CF +# define _PATH_VENDOR_CF "/usr/ucblib/sendmail.cf" +# endif /* ! _PATH_VENDOR_CF */ +# ifndef _PATH_SENDMAILPID +# define _PATH_SENDMAILPID "/usr/ucblib/sendmail.pid" +# endif /* ! _PATH_SENDMAILPID */ +# define SYSLOG_BUFSIZE 128 +# endif /* UNIXWARE */ + + +/* +** Intergraph CLIX 3.1 +** +** From Paul Southworth <pauls@locust.cic.net> +*/ + +# ifdef CLIX +# define SYSTEM5 1 /* looks like System V */ +# ifndef HASGETUSERSHELL +# define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ +# endif /* ! HASGETUSERSHELL */ +# define DEV_BSIZE 512 /* device block size not defined */ +# define GIDSET_T gid_t +# undef LOG /* syslog not available */ +# define NEEDFSYNC 1 /* no fsync in system library */ +# define GETSHORT _getshort +# endif /* CLIX */ + + +/* +** NCR MP-RAS 2.x (SysVr4) with Wollongong TCP/IP +** +** From Kevin Darcy <kevin@tech.mis.cfc.com>. +*/ + +# ifdef NCR_MP_RAS2 +# include <sys/sockio.h> +# define __svr4__ +# define IP_SRCROUTE 0 /* Something is broken with getsockopt() */ +# define SYSLOG_BUFSIZE 1024 +# define SPT_TYPE SPT_NONE +# endif /* NCR_MP_RAS2 */ + + +/* +** NCR MP-RAS 3.x (SysVr4) with STREAMware TCP/IP +** +** From Tom Moore <Tom.Moore@DaytonOH.NCR.COM> +*/ + +# ifdef NCR_MP_RAS3 +# define __svr4__ +# define HASFCHOWN 1 /* has fchown(2) call */ +# define LDA_USE_LOCKF 1 +# define SIOCGIFNUM_IS_BROKEN 1 /* SIOCGIFNUM has non-std interface */ +# define SO_REUSEADDR_IS_BROKEN 1 /* doesn't work if accept() fails */ +# define SYSLOG_BUFSIZE 1024 +# define SPT_TYPE SPT_NONE +# define _PATH_MAILDIR "/var/mail" +# ifndef _XOPEN_SOURCE +# define _XOPEN_SOURCE +# define _XOPEN_SOURCE_EXTENDED 1 +# include <sys/resource.h> +# undef _XOPEN_SOURCE +# undef _XOPEN_SOURCE_EXTENDED +# endif /* ! _XOPEN_SOURCE */ +# endif /* NCR_MP_RAS3 */ + + +/* +** Tandem NonStop-UX SVR4 +** +** From Rick McCarty <mccarty@mpd.tandem.com>. +*/ + +# ifdef NonStop_UX_BXX +# define __svr4__ +# endif /* NonStop_UX_BXX */ + + +/* +** Hitachi 3050R/3050RX and 3500 Workstations running HI-UX/WE2. +** +** Tested for 1.04, 1.03 +** From Akihiro Hashimoto ("Hash") <hash@dominic.ipc.chiba-u.ac.jp>. +** +** Tested for 4.02, 6.10 and 7.10 +** From Motonori NAKAMURA <motonori@media.kyoto-u.ac.jp>. +*/ + +# if !defined(__hpux) && (defined(_H3050R) || defined(_HIUX_SOURCE)) +# define SYSTEM5 1 /* include all the System V defines */ +# define HASINITGROUPS 1 /* has initgroups(3) call */ +# define HASFCHMOD 1 /* has fchmod(2) syscall */ +# define setreuid(r, e) setresuid(r, e, -1) +# define LA_TYPE LA_FLOAT +# define SPT_TYPE SPT_PSTAT +# define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() implementation */ +# ifndef HASSETVBUF +# define HASSETVBUF /* HI-UX has no setlinebuf */ +# endif /* ! HASSETVBUF */ +# ifndef GIDSET_T +# define GIDSET_T gid_t +# endif /* ! GIDSET_T */ +# ifndef _PATH_UNIX +# define _PATH_UNIX "/HI-UX" +# endif /* ! _PATH_UNIX */ +# ifndef _PATH_VENDOR_CF +# define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" +# endif /* ! _PATH_VENDOR_CF */ +# ifndef IDENTPROTO +# define IDENTPROTO 0 /* TCP/IP implementation is broken */ +# endif /* ! IDENTPROTO */ +# ifndef HASGETUSERSHELL +# define HASGETUSERSHELL 0 /* getusershell(3) causes core dumps */ +# endif /* ! HASGETUSERSHELL */ +# define FDSET_CAST (int *) /* cast for fd_set parameters to select */ + +/* +** avoid m_flags conflict between Berkeley DB 1.85 db.h & sys/sysmacros.h +** on HIUX 3050 +*/ +# undef m_flags + +# define SM_CONF_SYSLOG 0 + +# endif /* !defined(__hpux) && (defined(_H3050R) || defined(_HIUX_SOURCE)) */ + + +/* +** Amdahl UTS System V 2.1.5 (SVr3-based) +** +** From: Janet Jackson <janet@dialix.oz.au>. +*/ + +# ifdef _UTS +# include <sys/sysmacros.h> +# undef HASLSTAT /* has symlinks, but they cause problems */ +# define NEEDFSYNC 1 /* system fsync(2) fails on non-EFS filesys */ +# define SYS5SIGNALS 1 /* System V signal semantics */ +# define SYS5SETPGRP 1 /* use System V setpgrp(2) syscall */ +# define HASUNAME 1 /* use System V uname(2) system call */ +# define HASINITGROUPS 1 /* has initgroups(3) function */ +# define HASSETVBUF 1 /* has setvbuf(3) function */ +# ifndef HASGETUSERSHELL +# define HASGETUSERSHELL 0 /* does not have getusershell(3) function */ +# endif /* ! HASGETUSERSHELL */ +# define GIDSET_T gid_t /* type of 2nd arg to getgroups(2) isn't int */ +# define LA_TYPE LA_ZERO /* doesn't have load average */ +# define SFS_TYPE SFS_4ARGS /* use 4-arg statfs() */ +# define SFS_BAVAIL f_bfree /* alternate field name */ +# define _PATH_UNIX "/unix" +# ifndef _PATH_VENDOR_CF +# define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" +# endif /* ! _PATH_VENDOR_CF */ +# endif /* _UTS */ + +/* +** Cray Computer Corporation's CSOS +** +** From Scott Bolte <scott@craycos.com>. +*/ + +# ifdef _CRAYCOM +# define SYSTEM5 1 /* include all the System V defines */ +# define SYS5SIGNALS 1 /* SysV signal semantics -- reset on each sig */ +# define NEEDFSYNC 1 /* no fsync in system library */ +# define MAXPATHLEN PATHSIZE +# define LA_TYPE LA_ZERO +# define SFS_TYPE SFS_4ARGS /* four argument statfs() call */ +# define SFS_BAVAIL f_bfree /* alternate field name */ +# define _POSIX_CHOWN_RESTRICTED -1 +extern struct group *getgrent(), *getgrnam(), *getgrgid(); +# endif /* _CRAYCOM */ + + +/* +** Sony NEWS-OS 4.2.1R and 6.0.3 +** +** From Motonori NAKAMURA <motonori@cs.ritsumei.ac.jp>. +*/ + +# ifdef sony_news +# ifndef __svr4 + /* NEWS-OS 4.2.1R */ +# ifndef BSD +# define BSD /* has BSD routines */ +# endif /* ! BSD */ +# define HASUNSETENV 1 /* has unsetenv(2) call */ +# undef HASSETVBUF /* don't actually have setvbuf(3) */ +# define WAITUNION 1 /* use "union wait" as wait argument type */ +# define LA_TYPE LA_INT +# define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() implementation */ +# ifndef HASFLOCK +# define HASFLOCK 1 /* has flock(2) call */ +# endif /* ! HASFLOCK */ +# define setpgid setpgrp +# undef WIFEXITED +# undef WEXITSTATUS +# define MODE_T int /* system include files have no mode_t */ +typedef int pid_t; +typedef int (*sigfunc_t)(); +# define SIGFUNC_DEFINED +# define SIGFUNC_RETURN (0) +# define SIGFUNC_DECL int + +# else /* ! __svr4 */ + /* NEWS-OS 6.0.3 with /bin/cc */ +# ifndef __svr4__ +# define __svr4__ /* use all System V Release 4 defines below */ +# endif /* ! __svr4__ */ +# define HASSETSID 1 /* has Posix setsid(2) call */ +# define HASGETUSERSHELL 1 /* DOES have getusershell(3) call in libc */ +# define LA_TYPE LA_READKSYM /* use MIOC_READKSYM ioctl */ +# ifndef SPT_TYPE +# define SPT_TYPE SPT_SYSMIPS /* use sysmips() (OS 6.0.2 or later) */ +# endif /* ! SPT_TYPE */ +# define GIDSET_T gid_t +# undef WIFEXITED +# undef WEXITSTATUS +# ifndef SYSLOG_BUFSIZE +# define SYSLOG_BUFSIZE 256 +# endif /* ! SYSLOG_BUFSIZE */ +# define _PATH_UNIX "/stand/unix" +# ifndef _PATH_VENDOR_CF +# define _PATH_VENDOR_CF "/etc/mail/sendmail.cf" +# endif /* ! _PATH_VENDOR_CF */ +# ifndef _PATH_SENDMAILPID +# define _PATH_SENDMAILPID "/etc/mail/sendmail.pid" +# endif /* ! _PATH_SENDMAILPID */ + +# endif /* ! __svr4 */ +# endif /* sony_news */ + + +/* +** Omron LUNA/UNIOS-B 3.0, LUNA2/Mach and LUNA88K Mach +** +** From Motonori NAKAMURA <motonori@cs.ritsumei.ac.jp>. +*/ + +# ifdef luna +# ifndef IDENTPROTO +# define IDENTPROTO 0 /* TCP/IP implementation is broken */ +# endif /* ! IDENTPROTO */ +# define HASUNSETENV 1 /* has unsetenv(2) call */ +# define NEEDPUTENV 1 /* need putenv(3) call */ +# define SM_CONF_GETOPT 0 /* need a replacement for getopt(3) */ +# define NEEDSTRSTR 1 /* need emulation of the strstr(3) call */ +# define WAITUNION 1 /* use "union wait" as wait argument type */ +# ifdef uniosb +# include <sys/time.h> +# define NEEDVPRINTF 1 /* need a replacement for vprintf(3) */ +# define LA_TYPE LA_INT +# define TZ_TYPE TZ_TM_ZONE /* use tm->tm_zone */ +# endif /* uniosb */ +# ifdef luna2 +# define LA_TYPE LA_SUBR +# define TZ_TYPE TZ_TM_ZONE /* use tm->tm_zone */ +# endif /* luna2 */ +# ifdef luna88k +# define LA_TYPE LA_INT +# endif /* luna88k */ +# define SFS_TYPE SFS_VFS /* use <sys/vfs.h> statfs() implementation */ +# define setpgid setpgrp +# undef WIFEXITED +# undef WEXITSTATUS +typedef int pid_t; +typedef int (*sigfunc_t)(); +# define SIGFUNC_DEFINED +# define SIGFUNC_RETURN (0) +# define SIGFUNC_DECL int +extern char *getenv(); +# ifndef _PATH_VENDOR_CF +# define _PATH_VENDOR_CF "/usr/lib/sendmail.cf" +# endif /* ! _PATH_VENDOR_CF */ +# endif /* luna */ + + +/* +** NEC EWS-UX/V 4.2 (with /usr/ucb/cc) +** +** From Motonori NAKAMURA <motonori@cs.ritsumei.ac.jp>. +*/ + +# if defined(nec_ews_svr4) || defined(_nec_ews_svr4) +# ifndef __svr4__ +# define __svr4__ /* use all System V Release 4 defines below */ +# endif /* ! __svr4__ */ +# define SYS5SIGNALS 1 /* SysV signal semantics -- reset on each sig */ +# define HASSETSID 1 /* has Posix setsid(2) call */ +# define LA_TYPE LA_READKSYM /* use MIOC_READSYM ioctl */ +# define SFS_TYPE SFS_USTAT /* use System V ustat(2) syscall */ +# define GIDSET_T gid_t +# undef WIFEXITED +# undef WEXITSTATUS +# define NAMELISTMASK 0x7fffffff /* mask for nlist() values */ +# ifndef _PATH_VENDOR_CF +# define _PATH_VENDOR_CF "/usr/ucblib/sendmail.cf" +# endif /* ! _PATH_VENDOR_CF */ +# ifndef _PATH_SENDMAILPID +# define _PATH_SENDMAILPID "/usr/ucblib/sendmail.pid" +# endif /* ! _PATH_SENDMAILPID */ +# ifndef SYSLOG_BUFSIZE +# define SYSLOG_BUFSIZE 1024 /* allow full size syslog buffer */ +# endif /* ! SYSLOG_BUFSIZE */ +# endif /* defined(nec_ews_svr4) || defined(_nec_ews_svr4) */ + + +/* +** Fujitsu/ICL UXP/DS (For the DS/90 Series) +** +** From Diego R. Lopez <drlopez@cica.es>. +** Additional changes from Fumio Moriya and Toshiaki Nomura of the +** Fujitsu Fresoftware group <dsfrsoft@oai6.yk.fujitsu.co.jp>. +*/ + +# ifdef __uxp__ +# include <arpa/nameser.h> +# include <sys/sysmacros.h> +# include <sys/mkdev.h> +# define __svr4__ +# define HASGETUSERSHELL 0 +# define HASFLOCK 0 +# define _PATH_UNIX "/stand/unix" +# ifndef _PATH_VENDOR_CF +# define _PATH_VENDOR_CF "/usr/ucblib/sendmail.cf" +# endif /* ! _PATH_VENDOR_CF */ +# ifndef _PATH_SENDMAILPID +# define _PATH_SENDMAILPID "/usr/ucblib/sendmail.pid" +# endif /* ! _PATH_SENDMAILPID */ +# endif /* __uxp__ */ + +/* +** Pyramid DC/OSx +** +** From Earle Ake <akee@wpdiss1.wpafb.af.mil>. +*/ + +# ifdef DCOSx +# define GIDSET_T gid_t +# ifndef IDENTPROTO +# define IDENTPROTO 0 /* TCP/IP implementation is broken */ +# endif /* ! IDENTPROTO */ +# endif /* DCOSx */ + +/* +** Concurrent Computer Corporation Maxion +** +** From Donald R. Laster Jr. <laster@access.digex.net>. +*/ + +# ifdef __MAXION__ + +# include <sys/stream.h> +# define __svr4__ 1 /* SVR4.2MP */ +# define HASSETREUID 1 /* have setreuid(2) */ +# define HASLSTAT 1 /* have lstat(2) */ +# define HASSETRLIMIT 1 /* have setrlimit(2) */ +# define HASGETDTABLESIZE 1 /* have getdtablesize(2) */ +# define HASGETUSERSHELL 1 /* have getusershell(3) */ +# define NOFTRUNCATE 1 /* do not have ftruncate(2) */ +# define SLEEP_T unsigned +# define SFS_TYPE SFS_STATVFS +# define SFS_BAVAIL f_bavail +# ifndef SYSLOG_BUFSIZE +# define SYSLOG_BUFSIZE 256 /* Use 256 bytes */ +# endif /* ! SYSLOG_BUFSIZE */ + +# undef WUNTRACED +# undef WIFEXITED +# undef WIFSIGNALED +# undef WIFSTOPPED +# undef WEXITSTATUS +# undef WTERMSIG +# undef WSTOPSIG + +# endif /* __MAXION__ */ + +/* +** Harris Nighthawk PowerUX (nh6000 box) +** +** Contributed by Bob Miorelli, Pratt & Whitney <miorelli@pweh.com> +*/ + +# ifdef _PowerUX +# ifndef __svr4__ +# define __svr4__ +# endif /* ! __svr4__ */ +# ifndef _PATH_VENDOR_CF +# define _PATH_VENDOR_CF "/etc/mail/sendmail.cf" +# endif /* ! _PATH_VENDOR_CF */ +# ifndef _PATH_SENDMAILPID +# define _PATH_SENDMAILPID "/etc/mail/sendmail.pid" +# endif /* ! _PATH_SENDMAILPID */ +# define SYSLOG_BUFSIZE 1024 +# define LA_TYPE LA_ZERO +typedef struct msgb mblk_t; +# undef offsetof /* avoid stddefs.h and sys/sysmacros.h conflict */ +# endif /* _PowerUX */ + +/* +** Siemens Nixdorf Informationssysteme AG SINIX +** +** Contributed by Gerald Rinske of Siemens Business Services VAS. +*/ +# ifdef sinix +# define HASRANDOM 0 /* has random(3) */ +# define SYSLOG_BUFSIZE 1024 +# define SM_INT32 int /* 32bit integer */ +# endif /* sinix */ + +/* +** CRAY T3E +** +** Contributed by Manu Mahonen <mailadm@csc.fi> +** of Center for Scientific Computing. +*/ +# ifdef _CRAY +# define GET_IPOPT_DST(dst) *(struct in_addr *)&(dst) +# define _PATH_MAILDIR "/usr/spool/mail" +# if !defined(MAXPATHLEN) +# define MAXPATHLEN PATHSIZE +# endif /* !defined(MAXPATHLEN) */ +# endif /* _CRAY */ + +/* +** Motorola 922, MC88110, UNIX SYSTEM V/88 Release 4.0 Version 4.3 +** +** Contributed by Sergey Rusanov <rsm@utfoms.udmnet.ru> +*/ + +# ifdef MOTO +# define HASFCHMOD 1 +# define HASSETRLIMIT 0 +# define HASSETSID 1 +# define HASSETREUID 1 +# define HASULIMIT 1 +# define HASWAITPID 1 +# define HASGETDTABLESIZE 1 +# define HASGETUSERSHELL 1 +# define IP_SRCROUTE 0 +# define IDENTPROTO 0 +# define RES_DNSRCH_VARIABLE _res_dnsrch +# define _PATH_UNIX "/unix" +# define _PATH_VENDOR_CF "/etc/sendmail.cf" +# define _PATH_SENDMAILPID "/var/run/sendmail.pid" +# endif /* MOTO */ + + +/********************************************************************** +** End of Per-Operating System defines +**********************************************************************/ +/********************************************************************** +** More general defines +**********************************************************************/ + +/* general BSD defines */ +# ifdef BSD +# define HASGETDTABLESIZE 1 /* has getdtablesize(2) call */ +# ifndef HASSETREUID +# define HASSETREUID 1 /* has setreuid(2) call */ +# endif /* ! HASSETREUID */ +# define HASINITGROUPS 1 /* has initgroups(3) call */ +# ifndef IP_SRCROUTE +# define IP_SRCROUTE 1 /* can check IP source routing */ +# endif /* ! IP_SRCROUTE */ +# ifndef HASSETRLIMIT +# define HASSETRLIMIT 1 /* has setrlimit(2) call */ +# endif /* ! HASSETRLIMIT */ +# ifndef HASFLOCK +# define HASFLOCK 1 /* has flock(2) call */ +# endif /* ! HASFLOCK */ +# ifndef TZ_TYPE +# define TZ_TYPE TZ_TM_ZONE /* use tm->tm_zone variable */ +# endif /* ! TZ_TYPE */ +# endif /* BSD */ + +/* general System V Release 4 defines */ +# ifdef __svr4__ +# define SYSTEM5 1 +# define USESETEUID 1 /* has usable seteuid(2) call */ +# define HASINITGROUPS 1 /* has initgroups(3) call */ +# define BSD_COMP 1 /* get BSD ioctl calls */ +# ifndef HASSETRLIMIT +# define HASSETRLIMIT 1 /* has setrlimit(2) call */ +# endif /* ! HASSETRLIMIT */ +# ifndef HASGETUSERSHELL +# define HASGETUSERSHELL 0 /* does not have getusershell(3) call */ +# endif /* ! HASGETUSERSHELL */ +# ifndef HASFCHMOD +# define HASFCHMOD 1 /* most (all?) SVr4s seem to have fchmod(2) */ +# endif /* ! HASFCHMOD */ + +# ifndef _PATH_UNIX +# define _PATH_UNIX "/unix" +# endif /* ! _PATH_UNIX */ +# ifndef _PATH_VENDOR_CF +# define _PATH_VENDOR_CF "/usr/ucblib/sendmail.cf" +# endif /* ! _PATH_VENDOR_CF */ +# ifndef _PATH_SENDMAILPID +# define _PATH_SENDMAILPID "/usr/ucblib/sendmail.pid" +# endif /* ! _PATH_SENDMAILPID */ +# ifndef SYSLOG_BUFSIZE +# define SYSLOG_BUFSIZE 128 +# endif /* ! SYSLOG_BUFSIZE */ +# ifndef SFS_TYPE +# define SFS_TYPE SFS_STATVFS +# endif /* ! SFS_TYPE */ + +# ifndef USE_SIGLONGJMP +# define USE_SIGLONGJMP 1 /* sigsetjmp needed for signal handling */ +# endif /* ! USE_SIGLONGJMP */ +# endif /* __svr4__ */ + +# ifdef __SVR4 +# define LDA_USE_LOCKF 1 +# define LDA_USE_SETEUID 1 +# define _PATH_MAILDIR "/var/mail" +# endif /* __SVR4 */ + +/* general System V defines */ +# ifdef SYSTEM5 +# include <sys/sysmacros.h> +# define HASUNAME 1 /* use System V uname(2) system call */ +# define SYS5SETPGRP 1 /* use System V setpgrp(2) syscall */ +# define HASSETVBUF 1 /* we have setvbuf(3) in libc */ +# ifndef HASULIMIT +# define HASULIMIT 1 /* has the ulimit(2) syscall */ +# endif /* ! HASULIMIT */ +# ifndef LA_TYPE +# ifdef MIOC_READKSYM +# define LA_TYPE LA_READKSYM /* use MIOC_READKSYM ioctl */ +# else /* MIOC_READKSYM */ +# define LA_TYPE LA_INT /* assume integer load average */ +# endif /* MIOC_READKSYM */ +# endif /* ! LA_TYPE */ +# ifndef SFS_TYPE +# define SFS_TYPE SFS_USTAT /* use System V ustat(2) syscall */ +# endif /* ! SFS_TYPE */ +# ifndef TZ_TYPE +# define TZ_TYPE TZ_TZNAME /* use tzname[] vector */ +# endif /* ! TZ_TYPE */ +# endif /* SYSTEM5 */ + +/* general POSIX defines */ +# ifdef _POSIX_VERSION +# define HASSETSID 1 /* has Posix setsid(2) call */ +# define HASWAITPID 1 /* has Posix waitpid(2) call */ +# if _POSIX_VERSION >= 199500 && !defined(USESETEUID) +# define USESETEUID 1 /* has usable seteuid(2) call */ +# endif /* _POSIX_VERSION >= 199500 && !defined(USESETEUID) */ +# endif /* _POSIX_VERSION */ +/* +** Tweaking for systems that (for example) claim to be BSD or POSIX +** but don't have all the standard BSD or POSIX routines (boo hiss). +*/ + +# ifdef titan +# undef HASINITGROUPS /* doesn't have initgroups(3) call */ +# endif /* titan */ + +# ifdef _CRAYCOM +# undef HASSETSID /* despite POSIX claim, doesn't have setsid */ +# endif /* _CRAYCOM */ + +# ifdef MOTO +# undef USESETEUID +# endif /* MOTO */ + +/* +** Due to a "feature" in some operating systems such as Ultrix 4.3 and +** HPUX 8.0, if you receive a "No route to host" message (ICMP message +** ICMP_UNREACH_HOST) on _any_ connection, all connections to that host +** are closed. Some firewalls return this error if you try to connect +** to the IDENT port (113), so you can't receive email from these hosts +** on these systems. The firewall really should use a more specific +** message such as ICMP_UNREACH_PROTOCOL or _PORT or _FILTER_PROHIB. If +** not explicitly set to zero above, default it on. +*/ + +# ifndef IDENTPROTO +# define IDENTPROTO 1 /* use IDENT proto (RFC 1413) */ +# endif /* ! IDENTPROTO */ + +# ifndef IP_SRCROUTE +# define IP_SRCROUTE 1 /* Detect IP source routing */ +# endif /* ! IP_SRCROUTE */ + +# ifndef HASGETUSERSHELL +# define HASGETUSERSHELL 1 /* libc has getusershell(3) call */ +# endif /* ! HASGETUSERSHELL */ + +# ifndef NETUNIX +# define NETUNIX 1 /* include unix domain support */ +# endif /* ! NETUNIX */ + +# ifndef HASRANDOM +# define HASRANDOM 1 /* has random(3) support */ +# endif /* ! HASRANDOM */ + +# ifndef HASFLOCK +# define HASFLOCK 0 /* assume no flock(2) support */ +# endif /* ! HASFLOCK */ + +# ifndef HASSETREUID +# define HASSETREUID 0 /* assume no setreuid(2) call */ +# endif /* ! HASSETREUID */ + +# ifndef HASFCHMOD +# define HASFCHMOD 0 /* assume no fchmod(2) syscall */ +# endif /* ! HASFCHMOD */ + +# ifndef USESETEUID +# define USESETEUID 0 /* assume no seteuid(2) call or no saved ids */ +# endif /* ! USESETEUID */ + +# ifndef HASSETRLIMIT +# define HASSETRLIMIT 0 /* assume no setrlimit(2) support */ +# endif /* ! HASSETRLIMIT */ + +# ifndef HASULIMIT +# define HASULIMIT 0 /* assume no ulimit(2) support */ +# endif /* ! HASULIMIT */ + +# ifndef SECUREWARE +# define SECUREWARE 0 /* assume no SecureWare C2 auditing hooks */ +# endif /* ! SECUREWARE */ + +# ifndef USE_DOUBLE_FORK +# define USE_DOUBLE_FORK 1 /* avoid intermediate zombies */ +# endif /* ! USE_DOUBLE_FORK */ + +# ifndef USE_ENVIRON +# define USE_ENVIRON 0 /* use main() envp instead of extern environ */ +# endif /* ! USE_ENVIRON */ + +# ifndef USE_SIGLONGJMP +# define USE_SIGLONGJMP 0 /* assume setjmp handles signals properly */ +# endif /* ! USE_SIGLONGJMP */ + +# ifndef FDSET_CAST +# define FDSET_CAST /* (empty) cast for fd_set arg to select */ +# endif /* ! FDSET_CAST */ + +/* +** Pick a mailer setuid method for changing the current uid +*/ + +# define USE_SETEUID 0 +# define USE_SETREUID 1 +# define USE_SETUID 2 + +# if USESETEUID +# define MAILER_SETUID_METHOD USE_SETEUID +# else /* USESETEUID */ +# if HASSETREUID +# define MAILER_SETUID_METHOD USE_SETREUID +# else /* HASSETREUID */ +# define MAILER_SETUID_METHOD USE_SETUID +# endif /* HASSETREUID */ +# endif /* USESETEUID */ + +/* +** If no type for argument two of getgroups call is defined, assume +** it's an integer -- unfortunately, there seem to be several choices +** here. +*/ + +# ifndef GIDSET_T +# define GIDSET_T int +# endif /* ! GIDSET_T */ + +# ifndef UID_T +# define UID_T uid_t +# endif /* ! UID_T */ + +# ifndef GID_T +# define GID_T gid_t +# endif /* ! GID_T */ + +# ifndef MODE_T +# define MODE_T mode_t +# endif /* ! MODE_T */ + +# ifndef ARGV_T +# define ARGV_T char ** +# endif /* ! ARGV_T */ + +# ifndef SOCKADDR_LEN_T +# define SOCKADDR_LEN_T int +# endif /* ! SOCKADDR_LEN_T */ + +# ifndef SOCKOPT_LEN_T +# define SOCKOPT_LEN_T int +# endif /* ! SOCKOPT_LEN_T */ + +# ifndef QUAD_T +# define QUAD_T unsigned long +# endif /* ! QUAD_T */ +/********************************************************************** +** Remaining definitions should never have to be changed. They are +** primarily to provide back compatibility for older systems -- for +** example, it includes some POSIX compatibility definitions +**********************************************************************/ + +/* System 5 compatibility */ +# ifndef S_ISREG +# define S_ISREG(foo) ((foo & S_IFMT) == S_IFREG) +# endif /* ! S_ISREG */ +# ifndef S_ISDIR +# define S_ISDIR(foo) ((foo & S_IFMT) == S_IFDIR) +# endif /* ! S_ISDIR */ +# if !defined(S_ISLNK) && defined(S_IFLNK) +# define S_ISLNK(foo) ((foo & S_IFMT) == S_IFLNK) +# endif /* !defined(S_ISLNK) && defined(S_IFLNK) */ +# if !defined(S_ISFIFO) +# if defined(S_IFIFO) +# define S_ISFIFO(foo) ((foo & S_IFMT) == S_IFIFO) +# else /* defined(S_IFIFO) */ +# define S_ISFIFO(foo) false +# endif /* defined(S_IFIFO) */ +# endif /* !defined(S_ISFIFO) */ +# ifndef S_IRUSR +# define S_IRUSR 0400 +# endif /* ! S_IRUSR */ +# ifndef S_IWUSR +# define S_IWUSR 0200 +# endif /* ! S_IWUSR */ +# ifndef S_IRGRP +# define S_IRGRP 0040 +# endif /* ! S_IRGRP */ +# ifndef S_IWGRP +# define S_IWGRP 0020 +# endif /* ! S_IWGRP */ +# ifndef S_IROTH +# define S_IROTH 0004 +# endif /* ! S_IROTH */ +# ifndef S_IWOTH +# define S_IWOTH 0002 +# endif /* ! S_IWOTH */ + +/* close-on-exec flag */ +# ifndef FD_CLOEXEC +# define FD_CLOEXEC 1 +# endif /* ! FD_CLOEXEC */ + +/* +** Older systems don't have this error code -- it should be in +** /usr/include/sysexits.h. +*/ + +# ifndef EX_CONFIG +# define EX_CONFIG 78 /* configuration error */ +# endif /* ! EX_CONFIG */ + +/* pseudo-codes */ +# define EX_QUIT 22 /* drop out of server immediately */ +# define EX_RESTART 23 /* restart sendmail daemon */ +# define EX_SHUTDOWN 24 /* shutdown sendmail daemon */ + +#ifndef EX_NOTFOUND +# define EX_NOTFOUND EX_NOHOST +#endif /* ! EX_NOTFOUND */ + +/* pseudo-code used for mci_setstat */ +# define EX_NOTSTICKY -5 /* don't save persistent status */ + + +/* +** An "impossible" file mode to indicate that the file does not exist. +*/ + +# define ST_MODE_NOFILE 0171147 /* unlikely to occur */ + + +/* type of arbitrary pointer */ +# ifndef ARBPTR_T +# define ARBPTR_T void * +# endif /* ! ARBPTR_T */ + +# ifndef __P +# include "sm/cdefs.h" +# endif /* ! __P */ + +# if HESIOD && !defined(NAMED_BIND) +# define NAMED_BIND 1 /* not one without the other */ +# endif /* HESIOD && !defined(NAMED_BIND) */ + +# if NAMED_BIND && !defined( __ksr__ ) && !defined( h_errno ) +extern int h_errno; +# endif /* NAMED_BIND && !defined( __ksr__ ) && !defined( h_errno ) */ + +# if NEEDPUTENV +extern int putenv __P((char *)); +# endif /* NEEDPUTENV */ + +#if !HASUNSETENV +extern void unsetenv __P((char *)); +#endif /* !HASUNSETENV */ + +# ifdef LDAPMAP +# include <sys/time.h> +# include <lber.h> +# include <ldap.h> + +/* Some LDAP constants */ +# define LDAPMAP_FALSE 0 +# define LDAPMAP_TRUE 1 + +/* +** ldap_init(3) is broken in Umich 3.x and OpenLDAP 1.0/1.1. +** Use the lack of LDAP_OPT_SIZELIMIT to detect old API implementations +** and assume (falsely) that all old API implementations are broken. +** (OpenLDAP 1.2 and later have a working ldap_init(), add -DUSE_LDAP_INIT) +*/ + +# if defined(LDAP_OPT_SIZELIMIT) && !defined(USE_LDAP_INIT) +# define USE_LDAP_INIT 1 +# endif /* defined(LDAP_OPT_SIZELIMIT) && !defined(USE_LDAP_INIT) */ + +/* +** LDAP_OPT_SIZELIMIT is not defined under Umich 3.x nor OpenLDAP 1.x, +** hence ldap_set_option() must not exist. +*/ + +# if defined(LDAP_OPT_SIZELIMIT) && !defined(USE_LDAP_SET_OPTION) +# define USE_LDAP_SET_OPTION 1 +# endif /* defined(LDAP_OPT_SIZELIMIT) && !defined(USE_LDAP_SET_OPTION) */ + +# endif /* LDAPMAP */ + +# if HASUNAME +# include <sys/utsname.h> +# ifdef newstr +# undef newstr +# endif /* newstr */ +# else /* HASUNAME */ +# define NODE_LENGTH 32 +struct utsname +{ + char nodename[NODE_LENGTH + 1]; +}; +# endif /* HASUNAME */ + +# if !defined(MAXHOSTNAMELEN) && !defined(_SCO_unix_) && !defined(NonStop_UX_BXX) && !defined(ALTOS_SYSTEM_V) +# define MAXHOSTNAMELEN 256 +# endif /* !defined(MAXHOSTNAMELEN) && !defined(_SCO_unix_) && !defined(NonStop_UX_BXX) && !defined(ALTOS_SYSTEM_V) */ + +# if !defined(SIGCHLD) && defined(SIGCLD) +# define SIGCHLD SIGCLD +# endif /* !defined(SIGCHLD) && defined(SIGCLD) */ + +# ifndef STDIN_FILENO +# define STDIN_FILENO 0 +# endif /* ! STDIN_FILENO */ + +# ifndef STDOUT_FILENO +# define STDOUT_FILENO 1 +# endif /* ! STDOUT_FILENO */ + +# ifndef STDERR_FILENO +# define STDERR_FILENO 2 +# endif /* ! STDERR_FILENO */ + +# ifndef LOCK_SH +# define LOCK_SH 0x01 /* shared lock */ +# define LOCK_EX 0x02 /* exclusive lock */ +# define LOCK_NB 0x04 /* non-blocking lock */ +# define LOCK_UN 0x08 /* unlock */ +# endif /* ! LOCK_SH */ + +# ifndef S_IXOTH +# define S_IXOTH (S_IEXEC >> 6) +# endif /* ! S_IXOTH */ + +# ifndef S_IXGRP +# define S_IXGRP (S_IEXEC >> 3) +# endif /* ! S_IXGRP */ + +# ifndef S_IXUSR +# define S_IXUSR (S_IEXEC) +# endif /* ! S_IXUSR */ + +#ifndef O_ACCMODE +# define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR) +#endif /* ! O_ACCMODE */ + +# ifndef SEEK_SET +# define SEEK_SET 0 +# define SEEK_CUR 1 +# define SEEK_END 2 +# endif /* ! SEEK_SET */ + +# ifndef SIG_ERR +# define SIG_ERR ((void (*)()) -1) +# endif /* ! SIG_ERR */ + +# ifndef WEXITSTATUS +# define WEXITSTATUS(st) (((st) >> 8) & 0377) +# endif /* ! WEXITSTATUS */ +# ifndef WIFEXITED +# define WIFEXITED(st) (((st) & 0377) == 0) +# endif /* ! WIFEXITED */ +# ifndef WIFSTOPPED +# define WIFSTOPPED(st) (((st) & 0100) == 0) +# endif /* ! WIFSTOPPED */ +# ifndef WCOREDUMP +# define WCOREDUMP(st) (((st) & 0200) != 0) +# endif /* ! WCOREDUMP */ +# ifndef WTERMSIG +# define WTERMSIG(st) (((st) & 0177)) +# endif /* ! WTERMSIG */ + +# ifndef SIGFUNC_DEFINED +typedef void (*sigfunc_t) __P((int)); +# endif /* ! SIGFUNC_DEFINED */ +# ifndef SIGFUNC_RETURN +# define SIGFUNC_RETURN +# endif /* ! SIGFUNC_RETURN */ +# ifndef SIGFUNC_DECL +# define SIGFUNC_DECL void +# endif /* ! SIGFUNC_DECL */ + +/* size of syslog buffer */ +# ifndef SYSLOG_BUFSIZE +# define SYSLOG_BUFSIZE 1024 +# endif /* ! SYSLOG_BUFSIZE */ + +/* +** Size of prescan buffer. +** Despite comments in the _sendmail_ book, this probably should +** not be changed; there are some hard-to-define dependencies. +*/ + +# define PSBUFSIZE (MAXNAME + MAXATOM) /* size of prescan buffer */ + +/* fork routine -- set above using #ifdef _osname_ or in Makefile */ +# ifndef FORK +# define FORK fork /* function to call to fork mailer */ +# endif /* ! FORK */ + +/* setting h_errno */ +# ifndef SM_SET_H_ERRNO +# define SM_SET_H_ERRNO(err) h_errno = (err) +# endif /* SM_SET_H_ERRNO */ + +# ifndef SM_CONF_GETOPT +# define SM_CONF_GETOPT 1 +# endif /* ! SM_CONF_GETOPT */ + +/* random routine -- set above using #ifdef _osname_ or in Makefile */ +# if HASRANDOM +# define get_random() random() +# else /* HASRANDOM */ +# define get_random() ((long) rand()) +# ifndef RANDOMSHIFT +# define RANDOMSHIFT 8 +# endif /* ! RANDOMSHIFT */ +# endif /* HASRANDOM */ + +/* +** Default to using scanf in readcf. +*/ + +# ifndef SCANF +# define SCANF 1 +# endif /* ! SCANF */ + +/* XXX 32 bit type */ +# ifndef SM_INT32 +# define SM_INT32 int32_t +# endif /* ! SM_INT32 */ + +/* +** SVr4 and similar systems use different routines for setjmp/longjmp +** with signal support +*/ + +# if USE_SIGLONGJMP +# ifdef jmp_buf +# undef jmp_buf +# endif /* jmp_buf */ +# define jmp_buf sigjmp_buf +# ifdef setjmp +# undef setjmp +# endif /* setjmp */ +# define setjmp(env) sigsetjmp(env, 1) +# ifdef longjmp +# undef longjmp +# endif /* longjmp */ +# define longjmp(env, val) siglongjmp(env, val) +# endif /* USE_SIGLONGJMP */ + +# if !defined(NGROUPS_MAX) && defined(NGROUPS) +# define NGROUPS_MAX NGROUPS /* POSIX naming convention */ +# endif /* !defined(NGROUPS_MAX) && defined(NGROUPS) */ + +/* +** Some snprintf() implementations are rumored not to NUL terminate. +*/ +# if SNPRINTF_IS_BROKEN +# ifdef snprintf +# undef snprintf +# endif /* snprintf */ +# define snprintf sm_snprintf +# ifdef vsnprintf +# undef vsnprintf +# endif /* vsnprintf */ +# define vsnprintf sm_vsnprintf +# endif /* SNPRINTF_IS_BROKEN */ + +/* +** If we don't have a system syslog, simulate it. +*/ + +# if !LOG +# define LOG_EMERG 0 /* system is unusable */ +# define LOG_ALERT 1 /* action must be taken immediately */ +# define LOG_CRIT 2 /* critical conditions */ +# define LOG_ERR 3 /* error conditions */ +# define LOG_WARNING 4 /* warning conditions */ +# define LOG_NOTICE 5 /* normal but significant condition */ +# define LOG_INFO 6 /* informational */ +# define LOG_DEBUG 7 /* debug-level messages */ +# endif /* !LOG */ + +# ifndef SM_CONF_SYSLOG +# define SM_CONF_SYSLOG 1 /* syslog.h has prototype for syslog() */ +# endif /* SM_CONF_SYSLOG */ + +# if !SM_CONF_SYSLOG +# ifdef __STDC__ +extern void syslog(int, const char *, ...); +# else /* __STDC__ */ +extern void syslog(); +# endif /* __STDC__ */ +# endif /* !SM_CONF_SYSLOG */ + +/* portable(?) definition for alignment */ +# ifndef SM_ALIGN_SIZE +struct sm_align +{ + char al_c; + union + { + long al_l; + void *al_p; + double al_d; + void (*al_f)(); + } al_u; +}; +# define SM_ALIGN_SIZE offsetof(struct sm_align, al_u) +# endif /* ! SM_ALIGN_SIZE */ +# define SM_ALIGN_BITS (SM_ALIGN_SIZE - 1) + +#endif /* ! SM_CONF_H */ |