X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/c456d9bb38922c3e5ff511b934a1b7a282935f75..ed7f7860402395aedcb9e9c0cbade291c675a12f:/src/src/macros.h diff --git a/src/src/macros.h b/src/src/macros.h index f6aca465c..ed90b2535 100644 --- a/src/src/macros.h +++ b/src/src/macros.h @@ -1,10 +1,10 @@ -/* $Cambridge: exim/src/src/macros.h,v 1.33 2007/03/13 15:32:48 ph10 Exp $ */ +/* $Cambridge: exim/src/src/macros.h,v 1.40 2010/06/06 00:27:52 pdp Exp $ */ /************************************************* * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) University of Cambridge 1995 - 2007 */ +/* Copyright (c) University of Cambridge 1995 - 2009 */ /* See the file NOTICE for conditions of use and distribution. */ @@ -15,6 +15,12 @@ a string as a text string. This is sometimes useful for debugging output. */ #define mac_expanded_string(s) mac_string(s) +/* When running in the test harness, the load average is fudged. */ + +#define OS_GETLOADAVG() \ + (running_in_test_harness? (test_harness_load_avg += 10) : os_getloadavg()) + + /* The address_item structure has a word full of 1-bit flags. These macros manipulate them. */ @@ -701,6 +707,9 @@ local_scan.h */ #define LOG_CONFIG_FOR (256+128) /* Add " for" instead of ":\n" */ #define LOG_CONFIG_IN (512+128) /* Add " in line x[ of file y]" */ +/* and for debug_bits() logging action control: */ +#define DEBUG_FROM_CONFIG 0x0001 + /* SMTP command identifiers for the smtp_connection_had field that records the most recent SMTP commands. Must be kept in step with the list of names in smtp_in.c that is used for creating the smtp_no_mail logging action. SCH_NONE @@ -732,7 +741,10 @@ enum { enum { MSG_DELIVER, MSG_FREEZE, MSG_REMOVE, MSG_THAW, MSG_ADD_RECIPIENT, MSG_MARK_ALL_DELIVERED, MSG_MARK_DELIVERED, MSG_EDIT_SENDER, - MSG_SHOW_BODY, MSG_SHOW_HEADER, MSG_SHOW_LOG, MSG_LOAD }; + MSG_SHOW_COPY, MSG_LOAD, + /* These ones must be last: a test for >= MSG_SHOW_BODY is used + to test for actions that list individual spool files. */ + MSG_SHOW_BODY, MSG_SHOW_HEADER, MSG_SHOW_LOG }; /* Returns from the spool_read_header() function */ @@ -790,6 +802,7 @@ enum { ACL_WHERE_RCPT, /* Some controls are for RCPT only */ ACL_WHERE_MAIL, /* ) */ ACL_WHERE_PREDATA, /* ) There are several tests for "in message", */ ACL_WHERE_MIME, /* ) implemented by <= WHERE_NOTSMTP */ + ACL_WHERE_DKIM, /* ) */ ACL_WHERE_DATA, /* ) */ ACL_WHERE_NOTSMTP, /* ) */ @@ -800,6 +813,7 @@ enum { ACL_WHERE_RCPT, /* Some controls are for RCPT only */ ACL_WHERE_HELO, ACL_WHERE_MAILAUTH, ACL_WHERE_NOTSMTP_START, + ACL_WHERE_NOTQUIT, ACL_WHERE_QUIT, ACL_WHERE_STARTTLS, ACL_WHERE_VRFY @@ -830,4 +844,19 @@ explicit port number. */ enum { FILTER_UNSET, FILTER_FORWARD, FILTER_EXIM, FILTER_SIEVE }; +/* C99 defines va_copy() for copying a varargs ap so that it can be reused, +since on some platforms multiple iterations of va_start()/va_end() are not +supported. But va_copy() is itself not so portable. Hack around it. +See portability notes at: http://unixpapa.com/incnote/variadic.html */ + +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +/* va_copy exists for us or the system is broken and we need OS hacks */ +#elif defined(va_copy) +/* trust it; hope that va_copy is always a macro when defined */ +#elif !defined(va_copy) && defined(__va_copy) +#define va_copy(dest, src) __va_copy(dest, src) +#else +#define va_copy(dest, src) do { memcpy(dest, src, sizeof(va_list) } while (0) +#endif + /* End of macros.h */