9. Expansion operator escape8bit, like escape but not touching newline etc..
10. Feature macros, generated from compile options. All start with "_HAVE_"
- and go on with some roughly recognisable name. Option macros, for each
- configuration-file option; all start with "_OPT_". Use the "-bP macros"
- command-line option to see what is present.
+ and go on with some roughly recognisable name. Driver macros, for
+ router, transport and authentication drivers; names starting with "_DRVR_".
+ Option macros, for each configuration-file option; all start with "_OPT_".
+ Use the "-bP macros" command-line option to see what is present.
11. Integer values for options can take a "G" multiplier.
extern void readconf_rest(void);
extern uschar *readconf_retry_error(const uschar *, const uschar *, int *, int *);
extern void readconf_save_config(const uschar *);
+extern void read_macro_assignment(uschar *);
extern void read_message_body(BOOL);
extern void receive_bomb_out(uschar *, uschar *);
extern BOOL receive_check_fs(int);
Returns: nothing
*/
-static void
+void
read_macro_assignment(uschar *s)
{
uschar name[64];
read_macro_assignment(US"_HAVE_LKUP_WHOSON=y");
#endif
-#ifdef AUTH_CRAM_MD5
- read_macro_assignment(US"_HAVE_AUTH_CRAM_MD5=y");
-#endif
-#ifdef AUTH_CYRUS_SASL
- read_macro_assignment(US"_HAVE_AUTH_CYRUS_SASL=y");
-#endif
-#ifdef AUTH_DOVECOT
- read_macro_assignment(US"_HAVE_AUTH_DOVECOT=y");
-#endif
-#ifdef AUTH_GSASL
- read_macro_assignment(US"_HAVE_AUTH_GSASL=y");
-#endif
-#ifdef AUTH_HEIMDAL_GSSAPI
- read_macro_assignment(US"_HAVE_AUTH_HEIMDAL_GSSAPI=y");
-#endif
-#ifdef AUTH_PLAINTEXT
- read_macro_assignment(US"_HAVE_AUTH_PLAINTEXT=y");
-#endif
-#ifdef AUTH_SPA
- read_macro_assignment(US"_HAVE_AUTH_SPA=y");
-#endif
-#ifdef AUTH_TLS
- read_macro_assignment(US"_HAVE_AUTH_TLS=y");
-#endif
-
-#ifdef ROUTER_ACCEPT
- read_macro_assignment(US"_HAVE_RTR_ACCEPT=y");
-#endif
-#ifdef ROUTER_DNSLOOKUP
- read_macro_assignment(US"_HAVE_RTR_DNSLOOKUP=y");
-#endif
-#ifdef ROUTER_IPLITERAL
- read_macro_assignment(US"_HAVE_RTR_IPLITERAL=y");
-#endif
-#ifdef ROUTER_IPLOOKUP
- read_macro_assignment(US"_HAVE_RTR_IPLOOKUP=y");
-#endif
-#ifdef ROUTER_MANUALROUTE
- read_macro_assignment(US"_HAVE_RTR_MANUALROUTE=y");
-#endif
-#ifdef ROUTER_QUERYPROGRAM
- read_macro_assignment(US"_HAVE_RTR_QUERYPROGRAM=y");
-#endif
-#ifdef ROUTER_REDIRECT
- read_macro_assignment(US"_HAVE_RTR_REDRCT=y");
-#endif
-
#ifdef TRANSPORT_APPENDFILE
- read_macro_assignment(US"_HAVE_TPT_APPENDFILE=y");
# ifdef SUPPORT_MAILDIR
read_macro_assignment(US"_HAVE_TPT_APPEND_MAILDR=y");
# endif
read_macro_assignment(US"_HAVE_TPT_APPEND_MBX=y");
# endif
#endif
-#ifdef TRANSPORT_AUTOREPLY
- read_macro_assignment(US"_HAVE_TPT_AUTOREPLY=y");
-#endif
-#ifdef TRANSPORT_LMTP
- read_macro_assignment(US"_HAVE_TPT_LMTP=y");
-#endif
-#ifdef TRANSPORT_PIPE
- read_macro_assignment(US"_HAVE_TPT_PIPE=y");
-#endif
-#ifdef TRANSPORT_SMTP
- read_macro_assignment(US"_HAVE_TPT_SMTP=y");
-#endif
}
readconf_options_from_list(optionlist_auths, optionlist_auths_size, US"AU");
for (ai = auths_available; ai->driver_name[0]; ai++)
+ {
+ read_macro_assignment(string_sprintf("_DRVR_AUTH_%T=y", ai->driver_name));
readconf_options_from_list(ai->options, (unsigned)*ai->options_count, ai->driver_name);
+ }
}
readconf_options_from_list(optionlist_routers, nelem(optionlist_routers), US"RT");
for (ri = routers_available; ri->driver_name[0]; ri++)
+ {
+ read_macro_assignment(string_sprintf("_DRVR_RTR_%T=y", ri->driver_name));
readconf_options_from_list(ri->options, (unsigned)*ri->options_count, ri->driver_name);
+ }
}
/*************************************************
readconf_options_from_list(optionlist_transports, nelem(optionlist_transports), US"TP");
for (ti = transports_available; ti->driver_name[0]; ti++)
+ {
+ read_macro_assignment(string_sprintf("_DRVR_TPT_%T=y", ti->driver_name));
readconf_options_from_list(ti->options, (unsigned)*ti->options_count, ti->driver_name);
+ }
}
/*************************************************