Use long names for the _DRIVER_*, and _OPT_* macros
authorHeiko Schlittermann (HS12-RIPE) <hs@schlittermann.de>
Sun, 4 Dec 2016 17:40:21 +0000 (18:40 +0100)
committerHeiko Schlittermann (HS12-RIPE) <hs@schlittermann.de>
Tue, 13 Dec 2016 21:42:50 +0000 (22:42 +0100)
doc/doc-docbook/spec.xfpt
doc/doc-txt/NewStuff
src/src/functions.h
src/src/readconf.c
src/src/route.c
src/src/transport.c

index fb0b6e5..805e1df 100644 (file)
@@ -5043,11 +5043,17 @@ They can be used to conditionally include parts of a configuration
 
 The following classes of macros are defined:
 .display
-&` _HAVE_                     `&  build-time defines
-&` _DRVR_AUTH_                `&  authenticator drivers
-&` _DRVR_RTR_                 `&  router drivers
-&` _DRVR_TPT_                 `&  transport drivers
-&` _OPT_                      `&  configuration option support
+&` _HAVE_*                    `&  build-time defines
+&` _DRIVER_ROUTER_*           `&  router drivers
+&` _DRIVER_TRANSPORT_*        `&  transport drivers
+&` _DRIVER_AUTHENTICATOR_*    `&  authenticator drivers
+&` _OPT_MAIN_*                `&  main config options
+&` _OPT_ROUTERS_*             `&  generic router options
+&` _OPT_TRANSPORTS_*          `&  generic transport options
+&` _OPT_AUTHENTICATORS_*      `&  generic authenticator options
+&` _OPT_ROUTER_*_*            `&  private router options
+&` _OPT_TRANSPORT_*_*         `&  private transport options
+&` _OPT_AUTHENTICATOR_*_*     `&  private authenticator options
 .endd
 
 Use an &"exim -bP macros"& command to get the list of macros.
index 013004b..ee95898 100644 (file)
@@ -39,7 +39,7 @@ Version 4.88
 
 10. Feature macros, generated from compile options.  All start with "_HAVE_"
     and go on with some roughly recognisable name.  Driver macros, for
-    router, transport and authentication drivers; names starting with "_DRVR_".
+    router, transport and authentication drivers; names starting with "_DRIVER_".
     Option macros, for each configuration-file option; all start with "_OPT_".
     Use the "-bP macros" command-line option to see what is present.
 
index cc4e22b..04d9410 100644 (file)
@@ -317,7 +317,7 @@ extern void    readconf_driver_init(uschar *, driver_instance **,
                  driver_info *, int, void *, int, optionlist *, int);
 extern uschar *readconf_find_option(void *);
 extern void    readconf_main(BOOL);
-extern void    readconf_options_from_list(optionlist *, unsigned, uschar *);
+extern void    readconf_options_from_list(optionlist *, unsigned, const uschar *, uschar *);
 extern void    readconf_options_routers(void);
 extern void    readconf_options_transports(void);
 extern void    readconf_print(uschar *, uschar *, BOOL);
index 27a834b..b2a3c73 100644 (file)
@@ -793,76 +793,76 @@ due to conflicts with other common macros. */
 #endif
 
 #ifdef LOOKUP_LSEARCH
-  macro_create(US"_HAVE_LKUP_LSEARCH", US"y", FALSE, TRUE);
+  macro_create(US"_HAVE_LOOKUP_LSEARCH", US"y", FALSE, TRUE);
 #endif
 #ifdef LOOKUP_CDB
-  macro_create(US"_HAVE_LKUP_CDB", US"y", FALSE, TRUE);
+  macro_create(US"_HAVE_LOOKUP_CDB", US"y", FALSE, TRUE);
 #endif
 #ifdef LOOKUP_DBM
-  macro_create(US"_HAVE_LKUP_DBM", US"y", FALSE, TRUE);
+  macro_create(US"_HAVE_LOOKUP_DBM", US"y", FALSE, TRUE);
 #endif
 #ifdef LOOKUP_DNSDB
-  macro_create(US"_HAVE_LKUP_DNSDB", US"y", FALSE, TRUE);
+  macro_create(US"_HAVE_LOOKUP_DNSDB", US"y", FALSE, TRUE);
 #endif
 #ifdef LOOKUP_DSEARCH
-  macro_create(US"_HAVE_LKUP_DSEARCH", US"y", FALSE, TRUE);
+  macro_create(US"_HAVE_LOOKUP_DSEARCH", US"y", FALSE, TRUE);
 #endif
 #ifdef LOOKUP_IBASE
-  macro_create(US"_HAVE_LKUP_IBASE", US"y", FALSE, TRUE);
+  macro_create(US"_HAVE_LOOKUP_IBASE", US"y", FALSE, TRUE);
 #endif
 #ifdef LOOKUP_LDAP
-  macro_create(US"_HAVE_LKUP_LDAP", US"y", FALSE, TRUE);
+  macro_create(US"_HAVE_LOOKUP_LDAP", US"y", FALSE, TRUE);
 #endif
 #ifdef EXPERIMENTAL_LMDB
-  macro_create(US"_HAVE_LKUP_LMDB", US"y", FALSE, TRUE);
+  macro_create(US"_HAVE_LOOKUP_LMDB", US"y", FALSE, TRUE);
 #endif
 #ifdef LOOKUP_MYSQL
-  macro_create(US"_HAVE_LKUP_MYSQL", US"y", FALSE, TRUE);
+  macro_create(US"_HAVE_LOOKUP_MYSQL", US"y", FALSE, TRUE);
 #endif
 #ifdef LOOKUP_NIS
-  macro_create(US"_HAVE_LKUP_NIS", US"y", FALSE, TRUE);
+  macro_create(US"_HAVE_LOOKUP_NIS", US"y", FALSE, TRUE);
 #endif
 #ifdef LOOKUP_NISPLUS
-  macro_create(US"_HAVE_LKUP_NISPLUS", US"y", FALSE, TRUE);
+  macro_create(US"_HAVE_LOOKUP_NISPLUS", US"y", FALSE, TRUE);
 #endif
 #ifdef LOOKUP_ORACLE
-  macro_create(US"_HAVE_LKUP_ORACLE", US"y", FALSE, TRUE);
+  macro_create(US"_HAVE_LOOKUP_ORACLE", US"y", FALSE, TRUE);
 #endif
 #ifdef LOOKUP_PASSWD
-  macro_create(US"_HAVE_LKUP_PASSWD", US"y", FALSE, TRUE);
+  macro_create(US"_HAVE_LOOKUP_PASSWD", US"y", FALSE, TRUE);
 #endif
 #ifdef LOOKUP_PGSQL
-  macro_create(US"_HAVE_LKUP_PGSQL", US"y", FALSE, TRUE);
+  macro_create(US"_HAVE_LOOKUP_PGSQL", US"y", FALSE, TRUE);
 #endif
 #ifdef LOOKUP_REDIS
-  macro_create(US"_HAVE_LKUP_REDIS", US"y", FALSE, TRUE);
+  macro_create(US"_HAVE_LOOKUP_REDIS", US"y", FALSE, TRUE);
 #endif
 #ifdef LOOKUP_SQLITE
-  macro_create(US"_HAVE_LKUP_SQLITE", US"y", FALSE, TRUE);
+  macro_create(US"_HAVE_LOOKUP_SQLITE", US"y", FALSE, TRUE);
 #endif
 #ifdef LOOKUP_TESTDB
-  macro_create(US"_HAVE_LKUP_TESTDB", US"y", FALSE, TRUE);
+  macro_create(US"_HAVE_LOOKUP_TESTDB", US"y", FALSE, TRUE);
 #endif
 #ifdef LOOKUP_WHOSON
-  macro_create(US"_HAVE_LKUP_WHOSON", US"y", FALSE, TRUE);
+  macro_create(US"_HAVE_LOOKUP_WHOSON", US"y", FALSE, TRUE);
 #endif
 
 #ifdef TRANSPORT_APPENDFILE
 # ifdef SUPPORT_MAILDIR
-  macro_create(US"_HAVE_TPT_APPEND_MAILDR", US"y", FALSE, TRUE);
+  macro_create(US"_HAVE_TRANSPORT_APPEND_MAILDR", US"y", FALSE, TRUE);
 # endif
 # ifdef SUPPORT_MAILSTORE
-  macro_create(US"_HAVE_TPT_APPEND_MAILSTORE", US"y", FALSE, TRUE);
+  macro_create(US"_HAVE_TRANSPORT_APPEND_MAILSTORE", US"y", FALSE, TRUE);
 # endif
 # ifdef SUPPORT_MBX
-  macro_create(US"_HAVE_TPT_APPEND_MBX", US"y", FALSE, TRUE);
+  macro_create(US"_HAVE_TRANSPORT_APPEND_MBX", US"y", FALSE, TRUE);
 # endif
 #endif
 }
 
 
 void
-readconf_options_from_list(optionlist * opts, unsigned nopt, uschar * group)
+readconf_options_from_list(optionlist * opts, unsigned nopt, const uschar * section, uschar * group)
 {
 int i;
 const uschar * s;
@@ -875,14 +875,17 @@ macros that have substrings are always discovered first during
 expansion. */
 
 for (i = 0; i < nopt; i++)  if (*(s = opts[i].name) && *s != '*')
-  macro_create(string_sprintf("_OPT_%T_%T", group, s), US"y", FALSE, TRUE);
+  if (group)
+    macro_create(string_sprintf("_OPT_%T_%T_%T", section, group, s), US"y", FALSE, TRUE);
+  else
+    macro_create(string_sprintf("_OPT_%T_%T", section, s), US"y", FALSE, TRUE);
 }
 
 
 static void
 readconf_options(void)
 {
-readconf_options_from_list(optionlist_config, nelem(optionlist_config), US"MAIN");
+readconf_options_from_list(optionlist_config, nelem(optionlist_config), US"MAIN", NULL);
 readconf_options_routers();
 readconf_options_transports();
 readconf_options_auths();
@@ -4304,12 +4307,12 @@ readconf_options_auths(void)
 {
 struct auth_info * ai;
 
-readconf_options_from_list(optionlist_auths, optionlist_auths_size, US"AU");
+readconf_options_from_list(optionlist_auths, optionlist_auths_size, US"AUTHENTICATORS", NULL);
 
 for (ai = auths_available; ai->driver_name[0]; ai++)
   {
-  macro_create(string_sprintf("_DRVR_AUTH_%T", ai->driver_name), US"y", FALSE, TRUE);
-  readconf_options_from_list(ai->options, (unsigned)*ai->options_count, ai->driver_name);
+  macro_create(string_sprintf("_DRIVER_AUTHENTICATOR_%T", ai->driver_name), US"y", FALSE, TRUE);
+  readconf_options_from_list(ai->options, (unsigned)*ai->options_count, US"AUTHENTICATOR", ai->driver_name);
   }
 }
 
index 3ca1afb..bb220c6 100644 (file)
@@ -148,12 +148,12 @@ readconf_options_routers(void)
 {
 struct router_info * ri;
 
-readconf_options_from_list(optionlist_routers, nelem(optionlist_routers), US"RT");
+readconf_options_from_list(optionlist_routers, nelem(optionlist_routers), US"ROUTERS", NULL);
 
 for (ri = routers_available; ri->driver_name[0]; ri++)
   {
-  macro_create(string_sprintf("_DRVR_RTR_%T", ri->driver_name), US"y", FALSE, TRUE);
-  readconf_options_from_list(ri->options, (unsigned)*ri->options_count, ri->driver_name);
+  macro_create(string_sprintf("_DRIVER_ROUTER_%T", ri->driver_name), US"y", FALSE, TRUE);
+  readconf_options_from_list(ri->options, (unsigned)*ri->options_count, US"ROUTER", ri->driver_name);
   }
 }
 
index 8381913..c48f157 100644 (file)
@@ -116,14 +116,14 @@ readconf_options_transports(void)
 {
 struct transport_info * ti;
 
-readconf_options_from_list(optionlist_transports, nelem(optionlist_transports), US"TP");
+readconf_options_from_list(optionlist_transports, nelem(optionlist_transports), US"TRANSPORTS", NULL);
 
 for (ti = transports_available; ti->driver_name[0]; ti++)
   {
-  macro_create(string_sprintf("_DRVR_TPT_%T", ti->driver_name), US"y", FALSE, TRUE);
-  readconf_options_from_list(ti->options, (unsigned)*ti->options_count, ti->driver_name);
+  macro_create(string_sprintf("_DRIVER_TRANSPORT_%T", ti->driver_name), US"y", FALSE, TRUE);
+  readconf_options_from_list(ti->options, (unsigned)*ti->options_count, US"TRANSPORT", ti->driver_name);
   }
-} 
+}
 
 /*************************************************
 *             Initialize transport list           *