Implemented gsasl driver for authentication.
[exim.git] / src / src / exim.h
index 6721cb6096f0ac1c7803a802644bfc7ac466244b..626d33dae08a3da4efcaa3e1a9248085fd84be75 100644 (file)
@@ -1,10 +1,8 @@
-/* $Cambridge: exim/src/src/exim.h,v 1.15 2005/05/24 10:57:10 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,6 +48,11 @@ 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 <ctype.h>
@@ -75,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
@@ -279,6 +295,35 @@ header files. I don't suppose they have T_SRV either. */
 #define T_SRV 33
 #endif
 
+/* 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
@@ -385,12 +430,11 @@ extern int ferror(FILE *);
 
 /* The header from the PCRE regex package */
 
-#include "pcre/pcre.h"
+#include <pcre.h>
 
 /* 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"
@@ -410,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
@@ -421,10 +465,16 @@ requires various things that are set therein. */
 #include <iconv.h>
 #endif
 
-#if defined(USE_READLINE) || defined(EXPAND_DLFUNC)
+#if defined(USE_READLINE) || defined(EXPAND_DLFUNC) || defined (LOOKUP_MODULE_DIR)
 #include <dlfcn.h>
 #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)
@@ -432,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
@@ -486,5 +538,4 @@ default to EDQUOT if it exists, otherwise ENOSPC. */
   #endif
 #endif
 
-
 /* End of exim.h */