defs.m4, local.m4: Abstract out machinery for header-renaming lists.
authorMark Wooding <mdw@distorted.org.uk>
Sat, 13 Jun 2015 23:47:59 +0000 (00:47 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 13 Jun 2015 23:52:31 +0000 (00:52 +0100)
We're going to be renaming some more headers soon...

defs.m4
local.m4

diff --git a/defs.m4 b/defs.m4
index f2767fd..289dd52 100644 (file)
--- a/defs.m4
+++ b/defs.m4
@@ -112,6 +112,23 @@ m4_ifdef(<:_done:$1/$2:>, <::>, <:m4_dnl
 m4_ifdef(<:_head:$1/$2:>, <:<:##:> m4_indir(<:_head:$1/$2:>)
 :>)m4_define(<:_done:$1/$2:>):>):>):>)
 
+## RENAME_HEADERS_ADD(list)
+##
+## Return a newline-separated list of message header additions of the form
+##     X-Distorted-Renamed-HEADER: VALUE
+## for each HEADER in the LIST which appears in the current message, where
+## VALUE is the HEADER's current value.
+m4_define(<:RENAME_HEADERS_ADD:>, <:m4_dnl
+CLRSEP<::>FOREACH(<:\
+       ${if def:h_$:><:1:{X-Distorted-Renamed-$:><:1: $h_$:><:1:\n}}:>,
+       <:$1:>):>)
+
+## RENAME_HEADERS_REMOVE(list)
+##
+## Return the LIST, with items separated by colons.
+m4_define(<:RENAME_HEADERS_REMOVE:>, <:m4_dnl
+CLRSEP<::>FOREACH(<:SEP(:)$:><:1:>, <:$1:>):>)
+
 ## LOOKUP_DOMAIN(dom, [if-found], [if-not-found])
 ##
 ## Look up DOM in the master domains file.  If it's found, put the
index 65939a2..fd212a7 100644 (file)
--- a/local.m4
+++ b/local.m4
@@ -69,7 +69,7 @@ FILTER_ROUTER(dot_forward,
 
 SECTION(routers, deliver)m4_dnl
 ## Deliver mail to a user, in the absence of any other instructions.
-m4_define(<:STRIP_HEADERS:>, <:m4_dnl
+m4_define(<:DOVECOT_HEADERS:>, <:m4_dnl
        Content-Length, Status, X-IMAP, X-IMAPbase, m4_dnl
        X-Keywords, X-Status, X-UID:>)m4_dnl
 deliver:
@@ -79,10 +79,8 @@ deliver:
        cannot_route_message = Unknown local part
 
        ## Strip headers used by Dovecot for its own purposes.
-       headers_remove = CLRSEP<::>FOREACH(<:SEP(:)$1:>, <:STRIP_HEADERS:>)
-       headers_add = CLRSEP<::>FOREACH(<:\
-               ${if def:h_$1:{X-Distorted-Renamed-$1: $h_$1:\n}}:>,
-               <:STRIP_HEADERS:>)
+       headers_remove = RENAME_HEADERS_REMOVE(<:DOVECOT_HEADERS:>)
+       headers_add = RENAME_HEADERS_ADD(<:DOVECOT_HEADERS:>)
 
 DIVERT(null)
 ###----- That's all, folks --------------------------------------------------