X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/e08a679856effe96c0099d3516e6edec1f5616d6..d945e180cbe2b26392fb21f7ae4dd2ccc603a81b:/src/src/macros.h diff --git a/src/src/macros.h b/src/src/macros.h index 36ed185ed..3341f5f41 100644 --- a/src/src/macros.h +++ b/src/src/macros.h @@ -2,7 +2,7 @@ * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) The Exim Maintainers 2020 - 2022 */ +/* Copyright (c) The Exim Maintainers 2020 - 2023 */ /* Copyright (c) University of Cambridge 1995 - 2018 */ /* See the file NOTICE for conditions of use and distribution. */ /* SPDX-License-Identifier: GPL-2.0-or-later */ @@ -107,8 +107,9 @@ don't make the file descriptors two-way. */ /* Debugging control */ #define LOG_NAME_SIZE 256 -#define DEBUG(x) if (debug_selector & (x)) -#define HDEBUG(x) if (host_checking || debug_selector & (x)) +#define IS_DEBUG(x) (debug_selector & (x)) +#define DEBUG(x) if (IS_DEBUG(x)) +#define HDEBUG(x) if (host_checking || IS_DEBUG(x)) /* The default From: text for DSNs */ @@ -184,7 +185,8 @@ written on the spool, it gets read into big_buffer. */ /* The length of the base names of spool files, which consist of an internal message id with a trailing "-H" or "-D" added. */ -#define SPOOL_NAME_LENGTH (MESSAGE_ID_LENGTH+2) +#define SPOOL_NAME_LENGTH_OLD (MESSAGE_ID_LENGTH_OLD + 2) +#define SPOOL_NAME_LENGTH (MESSAGE_ID_LENGTH + 2) /* The maximum number of message ids to store in a waiting database record, and the max number of continuation records allowed. */ @@ -199,6 +201,8 @@ record, and the max number of continuation records allowed. */ /* Macros for trivial functions */ +#define xstr(x) #x +#define str(x) xstr(x) /* stringize, expanding macros in arg first */ #define mac_ismsgid(s) (regex_match(regex_ismsgid, (s), -1, NULL)) @@ -463,6 +467,7 @@ enum logbit { Li_8bitmime = BITWORDSIZE, Li_acl_warn_skipped, Li_arguments, + Li_connection_id, Li_deliver_time, Li_delivery_size, Li_dkim, @@ -822,7 +827,11 @@ most recent SMTP commands. SCH_NONE is "empty". */ enum { SCH_NONE, SCH_AUTH, SCH_DATA, SCH_BDAT, SCH_EHLO, SCH_ETRN, SCH_EXPN, SCH_HELO, SCH_HELP, SCH_MAIL, SCH_NOOP, SCH_QUIT, SCH_RCPT, SCH_RSET, SCH_STARTTLS, - SCH_VRFY }; + SCH_VRFY, +#ifdef EXPERIMENTAL_XCLIENT + SCH_XCLIENT, +#endif + }; /* Returns from host_find_by{name,dns}() */ @@ -1049,6 +1058,10 @@ enum { FILTER_UNSET, FILTER_FORWARD, FILTER_EXIM, FILTER_SIEVE }; #define UTF8_VERT_RIGHT "\xE2\x94\x9C" #define UTF8_UP_RIGHT "\xE2\x95\xB0" #define UTF8_VERT_2DASH "\xE2\x95\x8E" +#define UTF8_LEFT_TRIANGLE "\xE2\x97\x80" +#define UTF8_RIGHT_TRIANGLE "\xE2\x96\xB6" +#define UTF8_LIGHT_SHADE "\xE2\x96\x91" +#define UTF8_L_ARROW_HOOK "\xE2\x86\xA9" /* Options on tls_close */ @@ -1095,14 +1108,22 @@ should not be one active. */ #define RESUME_USED BIT(4) #define RESUME_DECODE_STRING \ - US"not requested or offered : 0x02 :client requested, no server ticket" \ - ": 0x04 : 0x05 : 0x06 :client offered session, no server action" \ - ": 0x08 :no client request: 0x0A :client requested new ticket, server provided" \ - ": 0x0C :client offered session, not used: 0x0E :client offered session, server only provided new ticket" \ - ": 0x10 :session resumed unasked: 0x12 :session resumed unasked" \ - ": 0x14 : 0x15 : 0x16 :session resumed" \ - ": 0x18 :session resumed unasked: 0x1A :session resumed unasked" \ - ": 0x1C :session resumed: 0x1E :session resumed, also new ticket" + US"not requested or offered" \ + ": 0x02 :client requested, no server ticket" \ + ": 0x04 : 0x05 " \ + ": 0x06 :client offered session, no server action" \ + ": 0x08 :no client request" \ + ": 0x0A :client requested new ticket, server provided" \ + ": 0x0C :client offered session, not used" \ + ": 0x0E :client offered session, server only provided new ticket" \ + ": 0x10 :session resumed unasked" \ + ": 0x12 :session resumed unasked" \ + ": 0x14 : 0x15" \ + ": 0x16 :session resumed" \ + ": 0x18 :session resumed unasked" \ + ": 0x1A :session resumed unasked" \ + ": 0x1C :session resumed" \ + ": 0x1E :session resumed, also new ticket" /* Flags for string_vformat */ #define SVFMT_EXTEND BIT(0) @@ -1146,4 +1167,36 @@ typedef unsigned mcs_flags; #define QL_MSGID_ONLY 3 #define QL_UNSORTED 8 +/* Flags for transport_set_up_command() */ +#define TSUC_EXPAND_ARGS BIT(0) +#define TSUC_ALLOW_TAINTED_ARGS BIT(1) +#define TSUC_ALLOW_RECIPIENTS BIT(2) + +/* Flags for smtp_printf */ +#define SP_MORE TRUE +#define SP_NO_MORE FALSE + +/* Flags for smtp_respond */ +#define SR_FINAL TRUE +#define SR_NOT_FINAL FALSE + +/* Return codes for smtp_write_mail_and_rcpt_cmds() */ +typedef enum { + sw_mrc_ok, /* good, rcpt results in addr->transport_return (PENDING_OK, DEFER, FAIL) */ + sw_mrc_bad_mail, /* MAIL response error */ + sw_mrc_bad_read, /* any non-MAIL read i/o error */ + sw_mrc_nonmail_read_timeo, /* non-MAIL response timeout */ + sw_mrc_bad_internal, /* internal error; channel still usable */ + sw_mrc_tx_fail, /* transmit failed */ +} sw_mrc_t; + +/* Recent versions of PCRE2 are allocating 20kB per match, rather than the previous 112 B. +When doing en extended loop of matching, release store periodically. */ + +#define REGEX_LOOPCOUNT_STORE_RESET 1000 + +/* Debug an option access. Use for non-list ones about to be expanded. */ +#define GET_OPTION(name) \ + DEBUG(D_expand) debug_printf("try option " name "\n"); + /* End of macros.h */