chiark / gitweb /
defs.m4: Factor out the apodosis/haeresis handling in `LOOKUP_DOMAIN'.
authorMark Wooding <mdw@distorted.org.uk>
Sat, 4 May 2024 14:39:25 +0000 (15:39 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Mon, 6 May 2024 03:21:32 +0000 (04:21 +0100)
defs.m4

diff --git a/defs.m4 b/defs.m4
index f83e2e6ad0eb2d8eb09022d45d8930c63a87fb30..8be119d4e4c42dcf4be3c43cf3262e51d6e76178 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)