X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/36a3b0416e0bed61d78e44f119cdafb1fde941ba..44bbabb570db6e700a31469a0faf2ac27bf3bfe0:/src/src/exim.h diff --git a/src/src/exim.h b/src/src/exim.h index 42f7980c2..626d33dae 100644 --- a/src/src/exim.h +++ b/src/src/exim.h @@ -1,10 +1,8 @@ -/* $Cambridge: exim/src/src/exim.h,v 1.9 2005/03/15 14:09:12 ph10 Exp $ */ - /************************************************* * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) University of Cambridge 1995 - 2005 */ +/* Copyright (c) University of Cambridge 1995 - 2009 */ /* See the file NOTICE for conditions of use and distribution. */ @@ -17,6 +15,11 @@ most of these includes. */ #define HAVE_STATFS +/* Similarly, assume most systems have srandom() unless os.h undefines it. +This call dates back at least as far as SUSv2. */ + +#define HAVE_SRANDOM + /* First of all include the os-specific header, which might set things that are needed by any of the other headers, including system headers. */ @@ -45,10 +48,16 @@ making unique names. */ #define LOCALHOST_MAX 10 #endif +/* If not overriden by os.h, dynamic libraries have filenames ending .so */ +#ifndef DYNLIB_FN_EXT +# define DYNLIB_FN_EXT "so" +#endif + /* ANSI C standard includes */ #include #include +#include #include #include #include @@ -60,7 +69,7 @@ making unique names. */ /* Unix includes */ #include -#if defined(__svr4__) && defined(__sparc) && ! defined(__EXTENSIONS__) +#if defined(__svr4__) && defined(__sparc) && ! defined(__EXTENSIONS__) #define __EXTENSIONS__ /* so that SunOS 5 gets NGROUPS_MAX */ #include #undef __EXTENSIONS__ @@ -74,6 +83,14 @@ making unique names. */ #define INT_MAX 2147483647 #endif +#ifndef INT_MIN +#define INT_MIN (-INT_MAX - 1) +#endif + +#ifndef SHRT_MAX +#define SHRT_MAX 32767 +#endif + #ifndef UCHAR_MAX #define UCHAR_MAX 255 #endif @@ -92,6 +109,9 @@ making unique names. */ #include #include #include +#ifndef NO_POLL_H +#include +#endif #include #include #include @@ -207,7 +227,7 @@ or a macro with entries f_frsize and f_bsize. */ #endif -#ifndef SIOCGIFCONF /* HACK for SunOS 5 */ +#ifndef SIOCGIFCONF /* HACK for SunOS 5 */ #include #endif @@ -217,23 +237,19 @@ or a macro with entries f_frsize and f_bsize. */ #include /* There's a shambles in IRIX6 - it defines EX_OK in unistd.h which conflicts -with the definition in sysexits.h. Arrange to preserve it, even though at -present Exim doesn't actually use it. */ +with the definition in sysexits.h. Exim does not actually use this macro, so we +just undefine it. It would be nice to be able to re-instate the definition from +sysexits.h if there is no definition in unistd.h, but I do not think there is a +way to do this in C because macro definitions are not scanned for other macros +at definition time. [The code here used to assume they were, until I was +disabused of the notion. Luckily, since EX_OK is not used, it didn't matter.] */ #ifdef EX_OK -#define SAVE_EX_OK EX_OK #undef EX_OK #endif #include -#ifdef SAVE_EX_OK -#ifdef EX_OK -#undef EX_OK -#endif -#define EX_OK SAVE_EX_OK -#endif - #include #ifndef NO_NET_IF_H #include @@ -279,12 +295,48 @@ header files. I don't suppose they have T_SRV either. */ #define T_SRV 33 #endif -/* We use the private type T_ZNS for retrieving the nameservers for the -enclosing zone of a domain, and the private type T_MXH for retrieving -the MX hostnames only (without their priorities). */ +/* It seems that some versions of arpa/nameser.h don't define *any* of the +T_xxx macros, which seem to be non-standard nowadays. Just to be on the safe +side, put in definitions for all the ones that Exim uses. */ + +#ifndef T_A +#define T_A 1 +#endif + +#ifndef T_CNAME +#define T_CNAME 5 +#endif + +#ifndef T_SOA +#define T_SOA 6 +#endif + +#ifndef T_MX +#define T_MX 15 +#endif + +#ifndef T_NS +#define T_NS 2 +#endif + +#ifndef T_PTR +#define T_PTR 12 +#endif + + +/* We define a few private types for special DNS lookups: + + . T_ZNS gets the nameservers of the enclosing zone of a domain + + . T_MXH gets the MX hostnames only (without their priorities) + + . T_CSA gets the domain's Client SMTP Authorization SRV record + +*/ #define T_ZNS (-1) #define T_MXH (-2) +#define T_CSA (-3) /* The resolv.h header defines __P(x) on some Solaris 2.5.1 systems (without checking that it is already defined, in fact). This conflicts with other @@ -378,12 +430,11 @@ extern int ferror(FILE *); /* The header from the PCRE regex package */ -#include "pcre/pcre.h" +#include /* Exim includes are in several files. Note that local_scan.h #includes -mytypes.h and store.h, so we don't need to mention them explicitly. */ - -#include "config.h" +config.h, mytypes.h, and store.h, so we don't need to mention them explicitly. +*/ #include "local_scan.h" #include "macros.h" @@ -403,8 +454,8 @@ mytypes.h and store.h, so we don't need to mention them explicitly. */ #ifdef EXPERIMENTAL_SRS #include "srs.h" #endif -#ifdef EXPERIMENTAL_DOMAINKEYS -#include "dk.h" +#ifndef DISABLE_DKIM +#include "dkim.h" #endif /* The following stuff must follow the inclusion of config.h because it @@ -414,10 +465,16 @@ requires various things that are set therein. */ #include #endif -#ifdef USE_READLINE +#if defined(USE_READLINE) || defined(EXPAND_DLFUNC) || defined (LOOKUP_MODULE_DIR) #include #endif +#ifdef ENABLE_DISABLE_FSYNC +#define EXIMfsync(f) (disable_fsync? 0 : fsync(f)) +#else +#define EXIMfsync(f) fsync(f) +#endif + /* Backward compatibility; LOOKUP_LSEARCH now includes all three */ #if (!defined LOOKUP_LSEARCH) && (defined LOOKUP_WILDLSEARCH || defined LOOKUP_NWILDLSEARCH) @@ -425,13 +482,15 @@ requires various things that are set therein. */ #endif /* Define a union to hold either an IPv4 or an IPv6 sockaddr structure; this -simplifies some of the coding. */ +simplifies some of the coding. We include the sockaddr to reduce type-punning +issues in C99. */ union sockaddr_46 { struct sockaddr_in v4; #if HAVE_IPV6 struct sockaddr_in6 v6; #endif + struct sockaddr v0; }; /* If SUPPORT_TLS is not defined, ensure that USE_GNUTLS is also not defined @@ -479,5 +538,4 @@ default to EDQUOT if it exists, otherwise ENOSPC. */ #endif #endif - /* End of exim.h */