X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/f0ce0ecaa054ad9773a2078bc8f011a59518120a..HEAD:/src/src/macros.h diff --git a/src/src/macros.h b/src/src/macros.h index 5279f70d0..6acf242c1 100644 --- a/src/src/macros.h +++ b/src/src/macros.h @@ -2,11 +2,13 @@ * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) The Exim Maintainers 2020 - 2023 */ +/* Copyright (c) The Exim Maintainers 2020 - 2024 */ /* 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 */ +#ifndef MACROS_H +#define MACROS_H /* These two macros make it possible to obtain the result of macro-expanding a string as a text string. This is sometimes useful for debugging output. */ @@ -102,13 +104,14 @@ don't make the file descriptors two-way. */ /* A macro to simplify testing bits in lookup types */ -#define mac_islookup(a,b) ((lookup_list[a]->type & (b)) != 0) +#define mac_islookup(li,b) ((li)->type & (b)) /* 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 */ @@ -703,7 +706,7 @@ can be easily tested as a group. That is the only use of opt_bool_last. */ enum { opt_bit = 32, opt_bool_verify, opt_bool_set, opt_expand_bool, opt_bool_last, opt_rewrite, opt_timelist, opt_uid, opt_gid, opt_uidlist, opt_gidlist, - opt_expand_uid, opt_expand_gid, opt_func, opt_void }; + opt_expand_uid, opt_expand_gid, opt_func, opt_void, opt_module }; /* There's a high-ish bit which is used to flag duplicate options, kept for compatibility, which shouldn't be output. Also used for hidden options @@ -827,6 +830,9 @@ 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, +#ifndef DISABLE_WELLKNOWN + SCH_WELLKNOWN, +#endif #ifdef EXPERIMENTAL_XCLIENT SCH_XCLIENT, #endif @@ -971,6 +977,9 @@ enum { ACL_WHERE_RCPT, /* Some controls are for RCPT only */ ACL_WHERE_NOTQUIT, ACL_WHERE_QUIT, ACL_WHERE_STARTTLS, +#ifndef DISABLE_WELLKNOWN + ACL_WHERE_WELLKNOWN, +#endif ACL_WHERE_VRFY, ACL_WHERE_DELIVERY, @@ -1000,6 +1009,9 @@ enum { ACL_WHERE_RCPT, /* Some controls are for RCPT only */ #define ACL_BIT_QUIT BIT(ACL_WHERE_QUIT) #define ACL_BIT_STARTTLS BIT(ACL_WHERE_STARTTLS) #define ACL_BIT_VRFY BIT(ACL_WHERE_VRFY) +#ifndef DISABLE_WELLKNOWN +# define ACL_BIT_WELLKNOWN BIT(ACL_WHERE_WELLKNOWN) +#endif #define ACL_BIT_DELIVERY BIT(ACL_WHERE_DELIVERY) #define ACL_BIT_UNKNOWN BIT(ACL_WHERE_UNKNOWN) @@ -1057,6 +1069,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 */ @@ -1175,6 +1191,11 @@ typedef unsigned mcs_flags; #define SR_FINAL TRUE #define SR_NOT_FINAL FALSE +/* Flags for continued-TLS-connection */ +#define CTF_CV BIT(0) +#define CTF_DV BIT(1) +#define CTF_TR BIT(2) + /* 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) */ @@ -1185,4 +1206,17 @@ typedef enum { 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 +(lists have their own debugging, under D_list). */ +#define GET_OPTION(name) \ + DEBUG(D_expand) debug_printf("try option " name "\n"); + +#endif /* whole file */ /* End of macros.h */ +/* vi: aw ai sw=2 +*/