chiark / gitweb /
user-spam.m4: Fix indentation in the output.
[exim-config] / defs.m4
diff --git a/defs.m4 b/defs.m4
index c2893857829c74cf4c8f08f29a3eb1eb13135597..f83e2e6ad0eb2d8eb09022d45d8930c63a87fb30 100644 (file)
--- a/defs.m4
+++ b/defs.m4
@@ -28,12 +28,12 @@ m4_changecom(<:#:#:>)
 ### Output file preamble and postamble.
 
 m4_divert(0)m4_dnl
-### -*-conf-*- GENERATED FROM /etc/mail/m4/*.m4: DO NOT EDIT!
+### -*-conf-*- GENERATED FROM exim-config/*.m4 (MODE) DO NOT EDIT!
 ###
 ### Exim configuration for distorted.org.uk.
 
 m4_divert(1000)m4_dnl
-### GENERATED FROM exim4.conf.m4: DO NOT EDIT!
+### GENERATED FROM exim-config/*.m4 (MODE): DO NOT EDIT!
 m4_divert(-1)
 
 ###--------------------------------------------------------------------------
@@ -73,6 +73,19 @@ m4_pushdef(<:_foreach_func:>, <:$1:>)m4_dnl
 _FOREACH($2)<::>m4_dnl
 m4_popdef(<:_foreach_func:>):>)
 
+## CLRSEP
+##
+## Clear the separator.  Use in conjunction with `SEP' below.
+m4_define(<:CLRSEP:>, <:m4_define(<:__sep:>, <::>):>)m4_dnl
+
+## SEP(newsep)
+##
+## Insert the current separator, and then set the separator to NEWSEP.  This
+## is handy in `FOREACH' loops, in order to separate the items with the
+## correct number of fenceposts: call `CLRSEP' before the list, and begin
+## each item with SEP(...).
+m4_define(<:SEP:>, <:__sep<::>m4_define(<:__sep:>, <:$1:>):>)m4_dnl
+
 ## DIVERT(name)
 ##
 ## Make _div:NAME be the current diversion.
@@ -99,6 +112,36 @@ m4_ifdef(<:_done:$1/$2:>, <::>, <:m4_dnl
 m4_ifdef(<:_head:$1/$2:>, <:<:##:> m4_indir(<:_head:$1/$2:>)
 :>)m4_define(<:_done:$1/$2:>):>):>):>)
 
+## ADD_HEADER(hdrs)
+##
+## An ACL action to add the given HDRS, which are a `\n'-terminated list of
+## new header lines.
+m4_define(<:ADD_HEADER:>, <:m4_dnl
+set    acl_m_hdradd = ${if def:acl_m_hdradd{$acl_m_hdradd}{}}$1\n:>)
+
+## 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
+FOREACH(<:\
+       ${if def:h_$:><:1:{X-CONF_header_token-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:>):>)
+
+## WARNING_HEADER(tag, msg)
+##
+## Add a warning header to the current mesage.
+m4_define(<:WARNING_HEADER:>,
+<:add_header = X-CONF_header_token-Warning: $1 $2:>)
+
 ## LOOKUP_DOMAIN(dom, [if-found], [if-not-found])
 ##
 ## Look up DOM in the master domains file.  If it's found, put the