defs.m4: Factor out the apodosis/haeresis handling in `LOOKUP_DOMAIN'.
[exim-config] / defs.m4
diff --git a/defs.m4 b/defs.m4
index f83e2e6..8be119d 100644 (file)
--- a/defs.m4
+++ b/defs.m4
@@ -142,6 +142,20 @@ CLRSEP<::>FOREACH(<:SEP(:)$:><:1:>, <:$1:>):>)
 m4_define(<:WARNING_HEADER:>,
 <:add_header = X-CONF_header_token-Warning: $1 $2:>)
 
+## _LOOKUP_ARGS([if-found], [if-not-found], [default])
+##
+## Processing for lookup arguments.  Use as
+##
+##     ${lookup {K} ST {F} _LOOKUP_ARGS(...)}$.
+##
+## IF-FOUND defaults to `{$value}'; IF-NOT-FOUND defaults to DEFAULT, which
+## defaults to `{}'.
+m4_define(<:_LOOKUP_ARGS:>,
+       <:m4_ifelse(<:$1$2$3:>, <::>, <::>,
+                   <:$1$2:>, <::>, <:{$value}$3:>,
+                   <:$2:>, <::>, <:$1$3:>,
+                   <:$1$2:>):>)
+
 ## LOOKUP_DOMAIN(dom, [if-found], [if-not-found])
 ##
 ## Look up DOM in the master domains file.  If it's found, put the
@@ -152,9 +166,7 @@ m4_define(<:WARNING_HEADER:>,
 m4_define(<:LOOKUP_DOMAIN:>,
        <:if exists{CONF_sysconf_dir/domains.conf} \
             {${lookup {$1}partial0-lsearch{CONF_sysconf_dir/domains.conf} \
-                      m4_ifelse(<:$2$3:>, <::>, <::>,
-                                <:$2:>, <::>, <:{$value}$3:>,
-                                <:$2$3:>)}} \
+                      _LOOKUP_ARGS(<:$2:>, <:$3:>)}} \
             $3:>)
 
 ## KV(key, result)