This commit was manufactured by cvs2svn to create tag 'FreeBSD-release/1.1'.
[unix-history] / usr.sbin / sendmail / src / conf.h
index 2580c41..8341de5 100644 (file)
@@ -31,7 +31,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *     @(#)conf.h      8.42 (Berkeley) 10/21/93
+ *     @(#)conf.h      8.96 (Berkeley) 3/11/94
  */
 
 /*
  */
 
 /*
@@ -64,7 +64,6 @@
 # define MEMCHUNKSIZE  1024            /* chunk size for memory allocation */
 # define MAXUSERENVIRON        100             /* max envars saved, must be >= 3 */
 # define MAXALIASDB    12              /* max # of alias databases */
 # define MEMCHUNKSIZE  1024            /* chunk size for memory allocation */
 # define MAXUSERENVIRON        100             /* max envars saved, must be >= 3 */
 # define MAXALIASDB    12              /* max # of alias databases */
-# define PSBUFSIZE     (MAXLINE + MAXATOM)     /* size of prescan buffer */
 
 # ifndef QUEUESIZE
 # define QUEUESIZE     1000            /* max # of jobs per queue run */
 
 # ifndef QUEUESIZE
 # define QUEUESIZE     1000            /* max # of jobs per queue run */
 
 # define LOG           1       /* enable logging */
 # define UGLYUUCP      1       /* output ugly UUCP From lines */
 
 # define LOG           1       /* enable logging */
 # define UGLYUUCP      1       /* output ugly UUCP From lines */
+# define NETUNIX       1       /* include unix domain support */
 # define NETINET       1       /* include internet support */
 # define SETPROCTITLE  1       /* munge argv to display current status */
 # define NETINET       1       /* include internet support */
 # define SETPROCTITLE  1       /* munge argv to display current status */
-# define NAMED_BIND    1       /* use Berkeley Internet Domain Server */
 # define MATCHGECOS    1       /* match user names from gecos field */
 # define XDEBUG                1       /* enable extended debugging */
 # define MATCHGECOS    1       /* match user names from gecos field */
 # define XDEBUG                1       /* enable extended debugging */
-
 # ifdef NEWDB
 # define USERDB                1       /* look in user database (requires NEWDB) */
 # endif
 
 # ifdef NEWDB
 # define USERDB                1       /* look in user database (requires NEWDB) */
 # endif
 
+/**********************************************************************
+**  0/1 Compilation options.
+**     #define these to 1 if they are available;
+**     #define them to 0 otherwise.
+**********************************************************************/
+
+# ifndef NAMED_BIND
+#  define NAMED_BIND   1       /* use Berkeley Internet Domain Server */
+# endif
+
 /*
 /*
-**  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 _NET_PROHIB.  This
-**  will get #undefed below as needed.
+**  Most systems have symbolic links today, so default them on.  You
+**  can turn them off by #undef'ing this below.
 */
 
 */
 
-# define IDENTPROTO    1       /* use IDENT proto (RFC 1413) */
+# define HASLSTAT      1       /* has lstat(2) call */
+
+/*
+**  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
 
 /**********************************************************************
 **  Operating system configuration.
 
 /**********************************************************************
 **  Operating system configuration.
 
 
 /*
 
 
 /*
-**  HP-UX -- tested for 8.07
+**  HP-UX -- tested for 8.07, 9.00, and 9.01.
 */
 
 # ifdef __hpux
 */
 
 # ifdef __hpux
 # undef m_flags
 # define SYSTEM5       1       /* include all the System V defines */
 # define HASINITGROUPS 1       /* has initgroups(3) call */
 # undef m_flags
 # define SYSTEM5       1       /* include all the System V defines */
 # define HASINITGROUPS 1       /* has initgroups(3) call */
-# define HASSTATFS     1       /* has the statfs(2) syscall */
 # define HASSETREUID   1       /* has setreuid(2) call */
 # define HASSETREUID   1       /* has setreuid(2) call */
-# define setreuid(r, e)                setresuid(r, e, -1)     
+# define setreuid(r, e)                setresuid(r, e, -1)
 # define LA_TYPE       LA_FLOAT
 # define LA_TYPE       LA_FLOAT
+# define SFS_TYPE      SFS_VFS /* use <sys/vfs.h> statfs() implementation */
+# define GIDSET_T      gid_t
 # define _PATH_UNIX    "/hp-ux"
 # define _PATH_UNIX    "/hp-ux"
-# undef IDENTPROTO             /* TCP/IP implementation is broken */
+# ifndef _PATH_SENDMAILCF
+#  define _PATH_SENDMAILCF     "/usr/lib/sendmail.cf"
+# endif
+# ifndef IDENTPROTO
+#  define IDENTPROTO   0       /* TCP/IP implementation is broken */
+# endif
+# ifndef HASGETUSERSHELL
+#  define HASGETUSERSHELL 0    /* getusershell(3) causes core dumps */
+# endif
+# define syslog                hard_syslog
+# ifdef __STDC__
+extern int     syslog(int, char *, ...);
+# endif
 # endif
 
 
 # endif
 
 
 
 # ifdef _AIX3
 # define HASINITGROUPS 1       /* has initgroups(3) call */
 
 # ifdef _AIX3
 # 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 FORK          fork    /* no vfork primitive available */
 # undef  SETPROCTITLE          /* setproctitle confuses AIX */
 # define FORK          fork    /* no vfork primitive available */
 # undef  SETPROCTITLE          /* setproctitle confuses AIX */
+# define SFS_TYPE      SFS_STATFS      /* use <sys/statfs.h> statfs() impl */
 # endif
 
 
 # endif
 
 
 # include <sys/sysmacros.h>
 # define HASSETREUID   1       /* has setreuid(2) call */
 # define HASINITGROUPS 1       /* has initgroups(3) call */
 # include <sys/sysmacros.h>
 # define HASSETREUID   1       /* has setreuid(2) call */
 # define HASINITGROUPS 1       /* has initgroups(3) call */
-# define HASSTATFS     1       /* has the statfs(2) syscall */
+# define HASGETUSERSHELL 0     /* does not have getusershell(3) call */
 # define FORK          fork    /* no vfork primitive available */
 # define WAITUNION     1       /* use "union wait" as wait argument type */
 # define setpgid       BSDsetpgrp
 # define GIDSET_T      gid_t
 # define FORK          fork    /* no vfork primitive available */
 # define WAITUNION     1       /* use "union wait" as wait argument type */
 # define setpgid       BSDsetpgrp
 # define GIDSET_T      gid_t
+# define SFS_TYPE      SFS_4ARGS       /* four argument statfs() call */
 # endif
 
 
 /*
 # endif
 
 
 /*
-**  SunOS
+**  SunOS and Solaris
+**
+**     Tested on SunOS 4.1.x (a.k.a. Solaris 1.1.x) and
+**     Solaris 2.2 (a.k.a. SunOS 5.2).
 */
 
 #if defined(sun) && !defined(BSD)
 
 */
 
 #if defined(sun) && !defined(BSD)
 
-# define LA_TYPE       LA_INT
-# define HASSETREUID   1       /* has setreuid(2) call */
 # define HASINITGROUPS 1       /* has initgroups(3) call */
 # define HASINITGROUPS 1       /* has initgroups(3) call */
+# define HASUNAME      1       /* use System V uname(2) system call */
+# define HASGETUSERSHELL 1     /* DOES have getusershell(3) call in libc */
+# define LA_TYPE       LA_INT
+
+# ifdef SOLARIS_2_3
+#  define SOLARIS
+# endif
 
 # ifdef SOLARIS
                        /* Solaris 2.x (a.k.a. SunOS 5.x) */
 
 # ifdef SOLARIS
                        /* Solaris 2.x (a.k.a. SunOS 5.x) */
-#  define SYSTEM5      1       /* use System V definitions */
-#  define setreuid(r, e)       seteuid(e)
-#  include <sys/sysmacros.h>
+#  ifndef __svr4__
+#   define __svr4__            /* use all System V Releae 4 defines below */
+#  endif
 #  include <sys/time.h>
 #  include <sys/time.h>
-#  define gethostbyname        __switch_gethostbyname  /* get working version */
-#  define gethostbyaddr        __switch_gethostbyaddr  /* get working version */
-#  define _PATH_UNIX   "/kernel/unix"
+#  define gethostbyname        solaris_gethostbyname   /* get working version */
+#  define gethostbyaddr        solaris_gethostbyaddr   /* get working version */
+#  define GIDSET_T     gid_t
+#  ifndef _PATH_UNIX
+#   define _PATH_UNIX  "/kernel/unix"
+#  endif
 #  ifndef _PATH_SENDMAILCF
 #   define _PATH_SENDMAILCF    "/etc/mail/sendmail.cf"
 #  endif
 #  ifndef _PATH_SENDMAILPID
 #   define _PATH_SENDMAILPID   "/etc/mail/sendmail.pid"
 #  endif
 #  ifndef _PATH_SENDMAILCF
 #   define _PATH_SENDMAILCF    "/etc/mail/sendmail.cf"
 #  endif
 #  ifndef _PATH_SENDMAILPID
 #   define _PATH_SENDMAILPID   "/etc/mail/sendmail.pid"
 #  endif
+#  ifndef SYSLOG_BUFSIZE
+#   define SYSLOG_BUFSIZE      1024    /* allow full size syslog buffer */
+#  endif
 
 # else
 
 # else
-                       /* SunOS 4.1.x */
-#  define HASSTATFS    1       /* has the statfs(2) syscall */
-/* #  define HASFLOCK  1       /* has flock(2) call */
+                       /* SunOS 4.0.3 or 4.1.x */
+#  define HASSETREUID  1       /* has setreuid(2) call */
+#  ifndef HASFLOCK
+#   define HASFLOCK    1       /* has flock(2) call */
+#  endif
+#  define SFS_TYPE     SFS_VFS /* use <sys/vfs.h> statfs() implementation */
 #  include <vfork.h>
 
 #  include <vfork.h>
 
+#  ifdef SUNOS403
+                       /* special tweaking for SunOS 4.0.3 */
+#   include <malloc.h>
+#   define SYS5SIGNALS 1       /* SysV signal semantics -- reset on each sig */
+#   define WAITUNION   1       /* use "union wait" as wait argument type */
+#   undef WIFEXITED
+#   undef WEXITSTATUS
+#   undef HASUNAME
+#   define setpgid     setpgrp
+typedef int            pid_t;
+extern char            *getenv();
+
+#  endif
 # endif
 #endif
 
 /*
 # endif
 #endif
 
 /*
-** DG/UX 5.4.2
+**  DG/UX
+**
+**     Tested on 5.4.2
 */
 
 #ifdef DGUX
 # define SYSTEM5       1
 # define LA_TYPE       LA_SUBR
 */
 
 #ifdef DGUX
 # define SYSTEM5       1
 # define LA_TYPE       LA_SUBR
-# define HASSTATFS     1       /* has the statfs(2) syscall */
 # 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 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 HASSETVBUF    1       /* we have setvbuf(3) in libc */
-# undef IDENTPROTO             /* TCP/IP implementation is broken */
+# define HASGETUSERSHELL 0     /* does not have getusershell(3) */
+# ifndef IDENTPROTO
+#  define IDENTPROTO   0       /* TCP/IP implementation is broken */
+# endif
 # undef SETPROCTITLE
 # undef SETPROCTITLE
+# define SFS_TYPE      SFS_4ARGS       /* four argument statfs() call */
+
+/* these include files must be included early on DG/UX */
+# include <netinet/in.h>
+# include <arpa/inet.h>
+
 # define inet_addr     dgux_inet_addr
 extern long    dgux_inet_addr();
 #endif
 # define inet_addr     dgux_inet_addr
 extern long    dgux_inet_addr();
 #endif
@@ -224,14 +297,25 @@ extern long       dgux_inet_addr();
 */
 
 #ifdef ultrix
 */
 
 #ifdef ultrix
-# define HASSTATFS     1       /* has the statfs(2) syscall */
 # define HASSETREUID   1       /* has setreuid(2) call */
 # define HASUNSETENV   1       /* has unsetenv(3) call */
 # define HASINITGROUPS 1       /* has initgroups(3) call */
 # define HASSETREUID   1       /* has setreuid(2) call */
 # define HASUNSETENV   1       /* has unsetenv(3) call */
 # define HASINITGROUPS 1       /* has initgroups(3) call */
-# define HASFLOCK      1       /* has flock(2) call */
-# define LA_TYPE       LA_INT
-# define LA_AVENRUN    "avenrun"
-# undef IDENTPROTO             /* TCP/IP implementation is broken */
+# define HASUNAME      1       /* use System V uname(2) system call */
+# ifndef HASFLOCK
+#  define HASFLOCK     1       /* has flock(2) call */
+# endif
+# define HASGETUSERSHELL 0     /* does not have getusershell(3) call */
+# define BROKEN_RES_SEARCH 1   /* res_search(unknown) returns h_errno=0 */
+# ifdef vax
+#  define LA_TYPE      LA_FLOAT
+# else
+#  define LA_TYPE      LA_INT
+#  define LA_AVENRUN   "avenrun"
+# endif
+# define SFS_TYPE      SFS_MOUNT       /* use <sys/mount.h> statfs() impl */
+# ifndef IDENTPROTO
+#  define IDENTPROTO   0       /* TCP/IP implementation is broken */
+# endif
 #endif
 
 
 #endif
 
 
@@ -240,12 +324,17 @@ extern long       dgux_inet_addr();
 */
 
 #ifdef __osf__
 */
 
 #ifdef __osf__
-# define HASSTATFS     1       /* has the statfs(2) syscall */
 # define HASUNSETENV   1       /* has unsetenv(3) call */
 # define HASSETREUID   1       /* has setreuid(2) call */
 # define HASINITGROUPS 1       /* has initgroups(3) call */
 # define HASUNSETENV   1       /* has unsetenv(3) call */
 # define HASSETREUID   1       /* has setreuid(2) call */
 # define HASINITGROUPS 1       /* has initgroups(3) call */
-/* # define HASFLOCK   1       /* has flock(2) call */
+# ifndef HASFLOCK
+#  define HASFLOCK     1       /* has flock(2) call */
+# endif
 # define LA_TYPE       LA_INT
 # define LA_TYPE       LA_INT
+# define SFS_TYPE      SFS_MOUNT       /* use <sys/mount.h> statfs() impl */
+# ifndef _PATH_SENDMAILPID
+#  define _PATH_SENDMAILPID    "/var/run/sendmail.pid"
+# endif
 #endif
 
 
 #endif
 
 
@@ -255,15 +344,17 @@ extern long       dgux_inet_addr();
 
 #ifdef NeXT
 # define HASINITGROUPS 1       /* has initgroups(3) call */
 
 #ifdef NeXT
 # define HASINITGROUPS 1       /* has initgroups(3) call */
-# define HASFLOCK      1       /* has flock(2) call */
+# ifndef HASFLOCK
+#  define HASFLOCK     1       /* has flock(2) call */
+# endif
 # define NEEDGETOPT    1       /* need a replacement for getopt(3) */
 # define NEEDGETOPT    1       /* need a replacement for getopt(3) */
-# define HASSTATFS     1       /* has the statfs(2) syscall */
 # define WAITUNION     1       /* use "union wait" as wait argument type */
 # define sleep         sleepX
 # define setpgid       setpgrp
 # ifndef LA_TYPE
 #  define LA_TYPE      LA_MACH
 # endif
 # define WAITUNION     1       /* use "union wait" as wait argument type */
 # define sleep         sleepX
 # define setpgid       setpgrp
 # ifndef LA_TYPE
 #  define LA_TYPE      LA_MACH
 # endif
+# define SFS_TYPE      SFS_VFS /* use <sys/vfs.h> statfs() implementation */
 # ifndef _POSIX_SOURCE
 typedef int            pid_t;
 #  undef WEXITSTATUS
 # ifndef _POSIX_SOURCE
 typedef int            pid_t;
 #  undef WEXITSTATUS
@@ -280,11 +371,35 @@ typedef int               pid_t;
 
 /*
 **  4.4 BSD
 
 /*
 **  4.4 BSD
+**
+**     See also BSD defines.
 */
 
 #ifdef BSD4_4
 # define HASUNSETENV   1       /* has unsetenv(3) call */
 */
 
 #ifdef BSD4_4
 # define HASUNSETENV   1       /* has unsetenv(3) call */
-# define HASSTATFS     1       /* has the statfs(2) syscall */
+# include <sys/cdefs.h>
+# define ERRLIST_PREDEFINED    /* don't declare sys_errlist */
+# ifndef LA_TYPE
+#  define LA_TYPE      LA_SUBR
+# endif
+# define SFS_TYPE      SFS_MOUNT       /* use <sys/mount.h> statfs() impl */
+#endif
+
+
+/*
+**  BSD/386 (all versions)
+**     From Tony Sanders, BSDI
+*/
+
+#ifdef __bsdi__
+# define HASUNSETENV   1       /* has the unsetenv(3) call */
+# define HASSETSID     1       /* has the setsid(2) POSIX syscall */
+# define SFS_TYPE      SFS_MOUNT       /* use <sys/mount.h> statfs() impl */
+# if defined(_BSDI_VERSION) && _BSDI_VERSION >= 199312
+#  define HASSETPROCTITLE 1    /* setproctitle is in libc */
+# else
+#  define SETPROCTITLE 1
+# endif
 # include <sys/cdefs.h>
 # define ERRLIST_PREDEFINED    /* don't declare sys_errlist */
 # ifndef LA_TYPE
 # include <sys/cdefs.h>
 # define ERRLIST_PREDEFINED    /* don't declare sys_errlist */
 # ifndef LA_TYPE
@@ -293,32 +408,69 @@ typedef int               pid_t;
 #endif
 
 
 #endif
 
 
+
 /*
 /*
-**  386BSD / FreeBSD 1.0E (works) / NetBSD (not tested)
+**  386BSD / FreeBSD 1.0E / NetBSD (all architectures, all versions)
 **
 **  4.3BSD clone, closer to 4.4BSD
 **
 **  4.3BSD clone, closer to 4.4BSD
+**
+**     See also BSD defines.
 */
 
 */
 
-#ifdef __386BSD__
+#if defined(__386BSD__) || defined(__FreeBSD__) || defined(__NetBSD__)
 # define HASUNSETENV   1       /* has unsetenv(3) call */
 # define HASSETSID     1       /* has the setsid(2) POSIX syscall */
 # define HASUNSETENV   1       /* has unsetenv(3) call */
 # define HASSETSID     1       /* has the setsid(2) POSIX syscall */
-# define HASSTATFS     1       /* has the statfs(2) syscall */
 # include <sys/cdefs.h>
 # define ERRLIST_PREDEFINED    /* don't declare sys_errlist */
 # ifndef LA_TYPE
 #  define LA_TYPE      LA_SUBR
 # endif
 # include <sys/cdefs.h>
 # define ERRLIST_PREDEFINED    /* don't declare sys_errlist */
 # ifndef LA_TYPE
 #  define LA_TYPE      LA_SUBR
 # endif
+# define SFS_TYPE      SFS_MOUNT       /* use <sys/mount.h> statfs() impl */
+#endif
+
+
+/*
+**  Mach386
+**
+**     For mt Xinu's Mach386 system.
+*/
+
+#if defined(MACH) && defined(i386)
+# 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
+# define NEEDGETOPT    1       /* 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
+# 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_SENDMAILCF
+#  define _PATH_SENDMAILCF     "/usr/lib/sendmail.cf"
+# endif
+# ifndef _PATH_SENDMAILPID
+#  define _PATH_SENDMAILPID    "/etc/sendmail.pid"
+# endif
 #endif
 
 
 /*
 **  4.3 BSD -- this is for very old systems
 **
 #endif
 
 
 /*
 **  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.
 */
 
 **     You'll also have to install a new resolver library.
 **     I don't guarantee that support for this environment is complete.
 */
 
-#ifdef oldBSD43
+#if defined(oldBSD43) || defined(MORE_BSD) || defined(umipsbsd)
 # define NEEDVPRINTF   1       /* need a replacement for vprintf(3) */
 # define NEEDGETOPT    1       /* need a replacement for getopt(3) */
 # define ARBPTR_T      char *
 # define NEEDVPRINTF   1       /* need a replacement for vprintf(3) */
 # define NEEDGETOPT    1       /* need a replacement for getopt(3) */
 # define ARBPTR_T      char *
@@ -329,67 +481,138 @@ typedef int              pid_t;
 # ifndef _PATH_SENDMAILCF
 #  define _PATH_SENDMAILCF     "/usr/lib/sendmail.cf"
 # endif
 # ifndef _PATH_SENDMAILCF
 #  define _PATH_SENDMAILCF     "/usr/lib/sendmail.cf"
 # endif
-# undef IDENTPROTO             /* TCP/IP implementation is broken */
+# ifndef IDENTPROTO
+#  define IDENTPROTO   0       /* TCP/IP implementation is broken */
+# endif
+# undef WEXITSTATUS
+# undef WIFEXITED
+typedef short          pid_t;
+extern int             errno;
 #endif
 
 
 /*
 **  SCO Unix
 #endif
 
 
 /*
 **  SCO Unix
+**
+**     This includes two parts -- the first is for SCO Open Server 3.2v4
+**     (contributed by Philippe Brand <phb@colombo.telesys-innov.fr>).
+**     The second is, I believe, for an older version.
 */
 
 */
 
+#ifdef _SCO_unix_4_2
+# define _SCO_unix_
+# define HASSETREUID   1       /* has setreuid(2) call */
+# define _PATH_UNIX    "/unix"
+# ifndef _PATH_SENDMAILCF
+#  define _PATH_SENDMAILCF     "/usr/lib/sendmail.cf"
+# endif
+# ifndef _PATH_SENDMAILPID
+#  define _PATH_SENDMAILPID    "/etc/sendmail.pid"
+# endif
+#endif
+
 #ifdef _SCO_unix_
 # define SYSTEM5       1       /* include all the System V defines */
 # define SYS5SIGNALS   1       /* SysV signal semantics -- reset on each sig */
 #ifdef _SCO_unix_
 # define SYSTEM5       1       /* include all the System V defines */
 # define SYS5SIGNALS   1       /* SysV signal semantics -- reset on each sig */
-# define HASSTATFS     1       /* has the statfs(2) syscall */
+# define HASGETUSERSHELL 0     /* does not have getusershell(3) call */
 # define FORK          fork
 # define MAXPATHLEN    PATHSIZE
 # define LA_TYPE       LA_SHORT
 # define FORK          fork
 # define MAXPATHLEN    PATHSIZE
 # define LA_TYPE       LA_SHORT
+# define SFS_TYPE      SFS_STATFS      /* use <sys/statfs.h> statfs() impl */
+# undef NETUNIX                        /* no unix domain socket support */
 #endif
 
 
 /*
 **  ConvexOS 11.0 and later
 #endif
 
 
 /*
 **  ConvexOS 11.0 and later
+**
+**     "Todd C. Miller" <millert@mroe.cs.colorado.edu> claims this
+**     works on 9.1 as well.
 */
 
 #ifdef _CONVEX_SOURCE
 # define BSD           1       /* include all the BSD defines */
 # define HASUNAME      1       /* use System V uname(2) system call */
 */
 
 #ifdef _CONVEX_SOURCE
 # define BSD           1       /* include all the BSD defines */
 # define HASUNAME      1       /* use System V uname(2) system call */
-# define HASSTATFS     1       /* has the statfs(2) syscall */
 # define HASSETSID     1       /* has POSIX setsid(2) call */
 # define NEEDGETOPT    1       /* need replacement for getopt(3) */
 # define LA_TYPE       LA_FLOAT
 # define HASSETSID     1       /* has POSIX setsid(2) call */
 # define NEEDGETOPT    1       /* need replacement for getopt(3) */
 # define LA_TYPE       LA_FLOAT
-# undef IDENTPROTO
+# define SFS_TYPE      SFS_VFS /* use <sys/vfs.h> statfs() implementation */
+# ifndef _PATH_SENDMAILCF
+#  define _PATH_SENDMAILCF     "/usr/lib/sendmail.cf"
+# endif
+# 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
+# ifndef IDENTPROTO
+#  define IDENTPROTO   0       /* TCP/IP implementation is broken */
+# endif
 #endif
 
 
 /*
 #endif
 
 
 /*
-**  RISC/os 4.51
+**  RISC/os 4.52
 **
 **
-**     Untested...
+**     Gives a ton of warning messages, but otherwise compiles.
 */
 
 #ifdef RISCOS
 */
 
 #ifdef RISCOS
+
 # define HASUNSETENV   1       /* has unsetenv(3) call */
 # define HASUNSETENV   1       /* has unsetenv(3) call */
-/* # define HASFLOCK   1       /* has flock(2) call */
+# ifndef HASFLOCK
+#  define HASFLOCK     1       /* has flock(2) call */
+# endif
+# define WAITUNION     1       /* use "union wait" as wait argument type */
+# define NEEDGETOPT    1       /* need a replacement for getopt(3) */
 # define LA_TYPE       LA_INT
 # define LA_AVENRUN    "avenrun"
 # define _PATH_UNIX    "/unix"
 # define LA_TYPE       LA_INT
 # define LA_AVENRUN    "avenrun"
 # define _PATH_UNIX    "/unix"
+# undef WIFEXITED
+
+# define setpgid       setpgrp
+
+extern int             errno;
+typedef int            pid_t;
+#define                        SIGFUNC_DEFINED
+typedef int            (*sigfunc_t)();
+extern char            *getenv();
+extern void            *malloc();
+
 #endif
 
 
 /*
 **  Linux 0.99pl10 and above...
 #endif
 
 
 /*
 **  Linux 0.99pl10 and above...
-**     From Karl London <karl@borg.demon.co.uk>.
+**
+**  Thanks to, in reverse order of contact:
+**
+**     John Kennedy <warlock@csuchico.edu>
+**     Florian La Roche <rzsfl@rz.uni-sb.de>
+**     Karl London <karl@borg.demon.co.uk>
+**
+**  Last compiled against:     [03/02/94 @ 05:34 PM (Wednesday)]
+**     sendmail 8.6.6.b9       named 4.9.2-931205-p1   db-1.73
+**     gcc 2.5.8               libc.so.4.5.19
+**     slackware 1.1.2         linux 0.99.15
 */
 
 */
 
-#ifdef linux
-# define BSD           1       /* pretend to be BSD based today */
-# undef  NEEDVPRINTF   1       /* need a replacement for vprintf(3) */
+#ifdef __linux__
+# define BSD           1       /* include BSD defines */
 # define NEEDGETOPT    1       /* need a replacement for getopt(3) */
 # define NEEDGETOPT    1       /* need a replacement for getopt(3) */
+# define HASUNAME      1       /* use System V uname(2) system call */
 # define HASUNSETENV   1       /* has unsetenv(3) 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 LA_TYPE
 # ifndef LA_TYPE
-#  define LA_TYPE      LA_FLOAT
+#  define LA_TYPE      LA_PROCSTR
 # endif
 # endif
+# define SFS_TYPE      SFS_VFS         /* use <sys/vfs.h> statfs() impl */
+# include <sys/sysmacros.h>
+# undef atol                   /* wounded in <stdlib.h> */
 #endif
 
 
 #endif
 
 
@@ -399,19 +622,15 @@ typedef int               pid_t;
 **
 **     It's on #ifdef DELL_SVR4 because Solaris also gets __svr4__
 **     defined, and the definitions conflict.
 **
 **     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
 */
 
 #ifdef DELL_SVR4
-# define SYSTEM5       1
-/* # define setreuid(r, e)     seteuid(e) */
-/* # include <sys/time.h> */
-# define _PATH_UNIX    "/unix"
-# ifndef _PATH_SENDMAILCF
-#  define _PATH_SENDMAILCF     "/usr/ucblib/sendmail.cf"
-# endif
-# ifndef _PATH_SENDMAILPID
-#  define _PATH_SENDMAILPID    "/usr/ucblib/sendmail.pid"
-# endif
+                               /* no changes necessary */
+                               /* see general __svr4__ defines below */
 #endif
 
 
 #endif
 
 
@@ -422,12 +641,12 @@ typedef int               pid_t;
 #ifdef _AUX_SOURCE
 # include <sys/sysmacros.h>
 # define BSD                   /* has BSD routines */
 #ifdef _AUX_SOURCE
 # include <sys/sysmacros.h>
 # define BSD                   /* has BSD routines */
-# define HASSTATFS     1       /* has the statfs(2) syscall */
 # define HASUNAME      1       /* use System V uname(2) system call */
 # define HASUNAME      1       /* use System V uname(2) system call */
-# define HASUSTAT      1       /* use System V ustat(2) syscall */
 # define HASSETVBUF    1       /* we have setvbuf(3) in libc */
 # define SIGFUNC_DEFINED       /* sigfunc_t already defined */
 # define HASSETVBUF    1       /* we have setvbuf(3) in libc */
 # define SIGFUNC_DEFINED       /* sigfunc_t already defined */
-# undef IDENTPROTO             /* TCP/IP implementation is broken */
+# ifndef IDENTPROTO
+#  define IDENTPROTO   0       /* TCP/IP implementation is broken */
+# endif
 # define FORK          fork
 # ifndef _PATH_SENDMAILCF
 #  define _PATH_SENDMAILCF     "/usr/lib/sendmail.cf"
 # define FORK          fork
 # ifndef _PATH_SENDMAILCF
 #  define _PATH_SENDMAILCF     "/usr/lib/sendmail.cf"
@@ -435,6 +654,7 @@ typedef int         pid_t;
 # ifndef LA_TYPE
 #  define LA_TYPE      LA_ZERO
 # endif
 # ifndef LA_TYPE
 #  define LA_TYPE      LA_ZERO
 # endif
+# define SFS_TYPE      SFS_VFS /* use <sys/vfs.h> statfs() implementation */
 # undef WIFEXITED
 # undef WEXITSTATUS
 #endif
 # undef WIFEXITED
 # undef WEXITSTATUS
 #endif
@@ -449,12 +669,13 @@ typedef int               pid_t;
 #ifdef UMAXV
 # include <limits.h>
 # define HASUNAME      1       /* use System V uname(2) system call */
 #ifdef UMAXV
 # include <limits.h>
 # define HASUNAME      1       /* use System V uname(2) system call */
-# define HASSTATFS     1       /* has the statfs(2) syscall */
 # define HASSETVBUF    1       /* we have setvbuf(3) in libc */
 # define HASINITGROUPS 1       /* has initgroups(3) 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 FORK          fork    /* no vfork(2) primitive available */
 # define SYS5SIGNALS   1       /* SysV signal semantics -- reset on each sig */
 # define SYS5SETPGRP   1       /* use System V setpgrp(2) syscall */
 # define FORK          fork    /* no vfork(2) primitive available */
+# 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();
 # define MAXPATHLEN    PATH_MAX
 extern struct passwd   *getpwent(), *getpwnam(), *getpwuid();
 extern struct group    *getgrent(), *getgrnam(), *getgrgid();
@@ -463,6 +684,141 @@ extern struct group       *getgrent(), *getgrnam(), *getgrgid();
 #endif
 
 
 #endif
 
 
+/*
+**  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
+
+
+/*
+**  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
+# 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
+
+# ifndef _PATH_UNIX
+#  define _PATH_UNIX   "/dynix"
+# endif
+# ifndef _PATH_SENDMAILCF
+#  define _PATH_SENDMAILCF     "/usr/lib/sendmail.cf"
+# endif
+
+#endif
+
+
+/*
+**  Sequent DYNIX/ptx v2.0 (and higher)
+**
+**     For DYNIX/ptx v1.x, undefine HASSETREUID.
+**
+**     From Tim Wright <timw@sequent.com>.
+*/
+
+#ifdef _SEQUENT_
+# 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 */
+# undef SETPROCTITLE
+# ifndef IDENTPROTO
+#  define IDENTPROTO   0       /* TCP/IP implementation is broken */
+# endif
+# ifndef _PATH_SENDMAILCF
+#  define _PATH_SENDMAILCF     "/usr/lib/sendmail.cf"
+# endif
+# ifndef _PATH_SENDMAILPID
+#  define _PATH_SENDMAILPID    "/etc/sendmail.pid"
+# endif
+#endif
+
+
+/*
+**  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 */
+#endif
+
+
+/*
+**  Apollo DomainOS
+**
+**  From Todd Martin <tmartint@tus.ssi1.com> & Don Lewis <gdonl@gv.ssi1.com>
+**
+**  15 Jan 1994
+**
+*/
+
+#ifdef apollo
+# define HASSETREUID   1       /* has setreuid(2) call */
+# define HASINITGROUPS 1       /* has initgroups(2) call */
+# undef  SETPROCTITLE
+# define LA_TYPE       LA_SUBR         /* use getloadavg.c */
+# define SFS_TYPE      SFS_4ARGS       /* four argument statfs() call */
+# ifndef _PATH_SENDMAILCF
+#  define _PATH_SENDMAILCF     "/usr/lib/sendmail.cf"
+# endif
+# ifndef _PATH_SENDMAILPID
+#  define _PATH_SENDMAILPID    "/etc/sendmail.pid"
+# endif
+# 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
+#endif
+
+
+
 
 /**********************************************************************
 **  End of Per-Operating System defines
 
 /**********************************************************************
 **  End of Per-Operating System defines
@@ -477,25 +833,49 @@ extern struct group       *getgrent(), *getgrnam(), *getgrgid();
 # define HASGETDTABLESIZE 1    /* has getdtablesize(2) call */
 # define HASSETREUID   1       /* has setreuid(2) call */
 # define HASINITGROUPS 1       /* has initgroups(2) call */
 # define HASGETDTABLESIZE 1    /* has getdtablesize(2) call */
 # define HASSETREUID   1       /* has setreuid(2) call */
 # define HASINITGROUPS 1       /* has initgroups(2) call */
-# define HASFLOCK      1       /* has flock(2) call */
+# ifndef HASFLOCK
+#  define HASFLOCK     1       /* has flock(2) call */
+# endif
+#endif
+
+/* general System V Release 4 defines */
+#ifdef __svr4__
+# define SYSTEM5       1
+# define HASSETREUID   1       /* has seteuid(2) call & working saved uids */
+# ifndef HASGETUSERSHELL
+#  define HASGETUSERSHELL 0    /* does not have getusershell(3) call */
+# endif
+# define setreuid(r, e)        seteuid(e)
+
+# ifndef _PATH_UNIX
+#  define _PATH_UNIX           "/unix"
+# endif
+# ifndef _PATH_SENDMAILCF
+#  define _PATH_SENDMAILCF     "/usr/ucblib/sendmail.cf"
+# endif
+# ifndef _PATH_SENDMAILPID
+#  define _PATH_SENDMAILPID    "/usr/ucblib/sendmail.pid"
+# endif
+# ifndef SYSLOG_BUFSIZE
+#  define SYSLOG_BUFSIZE       128
+# endif
 #endif
 
 /* general System V defines */
 #endif
 
 /* general System V defines */
-# ifdef SYSTEM5
+#ifdef SYSTEM5
+# include <sys/sysmacros.h>
 # define HASUNAME      1       /* use System V uname(2) system call */
 # define HASUNAME      1       /* use System V uname(2) system call */
-# define HASUSTAT      1       /* use System V ustat(2) syscall */
 # define SYS5SETPGRP   1       /* use System V setpgrp(2) syscall */
 # define SYS5SETPGRP   1       /* use System V setpgrp(2) syscall */
+# define HASSETVBUF    1       /* we have setvbuf(3) in libc */
 # ifndef LA_TYPE
 # ifndef LA_TYPE
-#  define LA_TYPE      LA_INT
+#  define LA_TYPE      LA_INT          /* assume integer load average */
+# endif
+# ifndef SFS_TYPE
+#  define SFS_TYPE     SFS_USTAT       /* use System V ustat(2) syscall */
 # endif
 # define bcopy(s, d, l)                (memmove((d), (s), (l)))
 # define bzero(d, l)           (memset((d), '\0', (l)))
 # define bcmp(s, d, l)         (memcmp((s), (d), (l)))
 # endif
 # define bcopy(s, d, l)                (memmove((d), (s), (l)))
 # define bzero(d, l)           (memset((d), '\0', (l)))
 # define bcmp(s, d, l)         (memcmp((s), (d), (l)))
-# endif
-
-/* general "standard C" defines */
-#if defined(__STDC__) || defined(SYSTEM5)
-# define HASSETVBUF    1       /* we have setvbuf(3) in libc */
 #endif
 
 /* general POSIX defines */
 #endif
 
 /* general POSIX defines */
@@ -514,6 +894,39 @@ extern struct group        *getgrent(), *getgrnam(), *getgrgid();
 # define GIDSET_T      int
 #endif
 
 # define GIDSET_T      int
 #endif
 
+/*
+**  Tweaking for systems that (for example) claim to be BSD but
+**  don't have all the standard BSD routines (boo hiss).
+*/
+
+#ifdef titan
+# undef HASINITGROUPS          /* doesn't have initgroups(3) call */
+#endif
+
+
+/*
+**  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 _NET_PROHIB.  If
+**  not explicitly set to zero above, default it on.
+*/
+
+#ifndef IDENTPROTO
+# define IDENTPROTO    1       /* use IDENT proto (RFC 1413) */
+#endif
+
+#ifndef HASGETUSERSHELL
+# define HASGETUSERSHELL 1     /* libc has getusershell(3) call */
+#endif
+
+#ifndef HASFLOCK
+# define HASFLOCK      0       /* assume no flock(2) support */
+#endif
+
 
 /**********************************************************************
 **  Remaining definitions should never have to be changed.  They are
 
 /**********************************************************************
 **  Remaining definitions should never have to be changed.  They are
@@ -523,7 +936,10 @@ extern struct group        *getgrent(), *getgrnam(), *getgrgid();
 
 /* System 5 compatibility */
 #ifndef S_ISREG
 
 /* System 5 compatibility */
 #ifndef S_ISREG
-#define S_ISREG(foo)   ((foo & S_IFREG) == S_IFREG)
+# define S_ISREG(foo)  ((foo & S_IFMT) == S_IFREG)
+#endif
+#if !defined(S_ISLNK) && defined(S_IFLNK)
+# define S_ISLNK(foo)  ((foo & S_IFMT) == S_IFLNK)
 #endif
 #ifndef S_IWGRP
 #define S_IWGRP                020
 #endif
 #ifndef S_IWGRP
 #define S_IWGRP                020
@@ -655,6 +1071,11 @@ struct utsname
 typedef void           (*sigfunc_t) __P((int));
 #endif
 
 typedef void           (*sigfunc_t) __P((int));
 #endif
 
+/* size of syslog buffer */
+#ifndef SYSLOG_BUFSIZE
+# define SYSLOG_BUFSIZE        1024
+#endif
+
 /*
 **  Size of tobuf (deliver.c)
 **     Tweak this to match your syslog implementation.  It will have to
 /*
 **  Size of tobuf (deliver.c)
 **     Tweak this to match your syslog implementation.  It will have to
@@ -662,10 +1083,29 @@ typedef void             (*sigfunc_t) __P((int));
 */
 
 #ifndef TOBUFSIZE
 */
 
 #ifndef TOBUFSIZE
-# define TOBUFSIZE (1024 - 256)
+# if (SYSLOG_BUFSIZE) > 512
+#  define TOBUFSIZE    (SYSLOG_BUFSIZE - 256)
+# else
+#  define TOBUFSIZE    256
+# endif
 #endif
 
 #endif
 
+/*
+**  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          vfork           /* function to call to fork mailer */
 # endif
 /* fork routine -- set above using #ifdef _osname_ or in Makefile */
 # ifndef FORK
 # define FORK          vfork           /* function to call to fork mailer */
 # endif
+
+/*
+**  If we are going to link scanf anyway, use it in readcf
+*/
+
+#if !defined(HASUNAME) && !defined(SCANF)
+# define SCANF         1
+#endif