listextract: ${listextract{ 5}{a:b:c:d}{}{fail}}
listextract: ${listextract{ 5}{a:b:c:d}{}fail}
+listquote: ${listquote{:}{abcd}}
+listquote: ${listquote{:}{ab:cd}}
+listquote: ${listquote{:}{:a:b:c:d:}}
+listquote: ${listquote{:}{ab::cd}}
+listquote: ${listquote{;}{ab:cd}}
+listquote: ${listquote{;}{ab;cd}}
+listquote: ${listquote{ }{ ab cd}}
+listquote: <${listquote{:}{}}>
+
sort: ${sort{3:2:1:4}{<}{$item}}
sort: ${sort {<, 3,2,1,4}{>}{$item}}
sort: ${sort{c:B:a:aa}{lti}{$item}}
domain: ${domain:local-part@dom.ain}
domain: ${domain:Exim Person <local-part@dom.ain> (that's me)}
domain: ${domain:Exim Person <local-part(foo)@(bar)dom.ain> (that's me)}
+domain: ${domain:a.b.c}
addresses: ${addresses:>' 'abc@xyz, 'pqr@xyz}
addresses: ${addresses:Exim Person <local-part@dom.ain> (that's me)}
lclpt: ${local_part:local-part@dom.ain}
lclpt: ${local_part:Exim Person <local-part@dom.ain> (that's me)}
lclpt: ${local_part:Exim Person <local(comment).part@dom.(comment2)ain> (that's me)}
+lclpt: ${local_part:a.b.c}
quote: ${quote:aZ09_.-Q} ${quote:ab*cd} ${quote:ab\cd"ef}
quote: ${quote:nl(\n)}
quote: ${quote:cr(\r)}
# Lookups: DIR is the testing directory. In this test we can only use the
# lookups that are required in all cases.
-${lookup{postmaster}lsearch{DIR/aux-fixed/0002.aliases}{$value}fail}
+${lookup{postmaster}lsearch {DIR/aux-fixed/0002.aliases}{$value}fail}
+${lookup{postmaster}lsearch,ret=full{DIR/aux-fixed/0002.aliases}{$value}fail}
${lookup{x@y}lsearch*@{DIR/aux-fixed/0002.starat}{$value}fail}
-${lookup{x@z}lsearch*{DIR/aux-fixed/0002.starat}{$value}fail}
+${lookup{x@z}lsearch* {DIR/aux-fixed/0002.starat}{$value}fail}
${lookup{x@z}lsearch*@{DIR/aux-fixed/0002.starat}{$value}fail}
${lookup{x@w}lsearch*@{DIR/aux-fixed/0002.starat}{$value}fail}
-${lookup{a.b.c.d}partial-lsearch{DIR/aux-fixed/0002.domains}{$value}fail}
-${lookup{x.y.z}partial-lsearch{DIR/aux-fixed/0002.domains}{$value}{failed x.y.z}}
-${lookup{p.q}partial-lsearch{DIR/aux-fixed/0002.domains}{$value}fail}
-${lookup{o.p.q}partial-lsearch{DIR/aux-fixed/0002.domains}{$value}fail}
-${lookup{m.n.o.p.q}partial-lsearch{DIR/aux-fixed/0002.domains}{$value}fail}
-${lookup{x.y.z}partial1-lsearch{DIR/aux-fixed/0002.domains}{$value}fail}
-${lookup{x.y.z}partial0-lsearch{DIR/aux-fixed/0002.domains}{$value}fail}
-
-q1: ${lookup{abc}lsearch{DIR/aux-fixed/0002.quoted}}
-q2: ${lookup{xyz}lsearch{DIR/aux-fixed/0002.quoted}}
-q3: ${lookup{pqr}lsearch{DIR/aux-fixed/0002.quoted}}
-q4: ${lookup{a:b}lsearch{DIR/aux-fixed/0002.quoted}}
-q5: ${lookup{"quoted"}lsearch{DIR/aux-fixed/0002.quoted}}
+${lookup{x@y}lsearch*@,ret=full {DIR/aux-fixed/0002.starat}{$value}fail}
+${lookup{x@z}lsearch*,ret=full {DIR/aux-fixed/0002.starat}{$value}fail}
+${lookup{x@z}lsearch*@,ret=full {DIR/aux-fixed/0002.starat}{$value}fail}
+${lookup{x@w}lsearch*@,ret=full {DIR/aux-fixed/0002.starat}{$value}fail}
+
+${lookup{a.b.c.d} partial-lsearch {DIR/aux-fixed/0002.domains}{$value}fail}
+${lookup{x.y.z} partial-lsearch {DIR/aux-fixed/0002.domains}{$value}{failed x.y.z}}
+${lookup{p.q} partial-lsearch {DIR/aux-fixed/0002.domains}{$value}fail}
+${lookup{o.p.q} partial-lsearch {DIR/aux-fixed/0002.domains}{$value}fail}
+${lookup{m.n.o.p.q}partial-lsearch {DIR/aux-fixed/0002.domains}{$value}fail}
+${lookup{x.y.z} partial1-lsearch{DIR/aux-fixed/0002.domains}{$value}fail}
+${lookup{x.y.z} partial0-lsearch{DIR/aux-fixed/0002.domains}{$value}fail}
+
+${lookup{a.b.c.d} partial-lsearch,ret=full {DIR/aux-fixed/0002.domains}{$value}fail}
+${lookup{x.y.z} partial-lsearch,ret=full {DIR/aux-fixed/0002.domains}{$value}{failed x.y.z}}
+${lookup{p.q} partial-lsearch,ret=full {DIR/aux-fixed/0002.domains}{$value}fail}
+${lookup{o.p.q} partial-lsearch,ret=full {DIR/aux-fixed/0002.domains}{$value}fail}
+${lookup{m.n.o.p.q}partial-lsearch,ret=full {DIR/aux-fixed/0002.domains}{$value}fail}
+${lookup{x.y.z} partial1-lsearch,ret=full{DIR/aux-fixed/0002.domains}{$value}fail}
+${lookup{x.y.z} partial0-lsearch,ret=full{DIR/aux-fixed/0002.domains}{$value}fail}
+
+q1: ${lookup{abc} lsearch{DIR/aux-fixed/0002.quoted}}
+q2: ${lookup{xyz} lsearch{DIR/aux-fixed/0002.quoted}}
+q3: ${lookup{pqr} lsearch{DIR/aux-fixed/0002.quoted}}
+q4: ${lookup{a:b} lsearch{DIR/aux-fixed/0002.quoted}}
+q5: ${lookup{"quoted"} lsearch{DIR/aux-fixed/0002.quoted}}
q6: ${lookup{white space}lsearch{DIR/aux-fixed/0002.quoted}}
-q7: ${lookup{b\\s}lsearch{DIR/aux-fixed/0002.quoted}}
+q7: ${lookup{b\\s} lsearch{DIR/aux-fixed/0002.quoted}}
+
+q1f: ${lookup{abc} lsearch,ret=full{DIR/aux-fixed/0002.quoted}}
+q2f: ${lookup{xyz} lsearch,ret=full{DIR/aux-fixed/0002.quoted}}
+q3f: ${lookup{pqr} lsearch,ret=full{DIR/aux-fixed/0002.quoted}}
+q4f: ${lookup{a:b} lsearch,ret=full{DIR/aux-fixed/0002.quoted}}
+q5f: ${lookup{"quoted"} lsearch,ret=full{DIR/aux-fixed/0002.quoted}}
+q6f: ${lookup{white space}lsearch,ret=full{DIR/aux-fixed/0002.quoted}}
+q7f: ${lookup{b\\s} lsearch,ret=full{DIR/aux-fixed/0002.quoted}}
abc: ${lookup{abc}wildlsearch{DIR/aux-var/0002.wild}}
a.b.c: ${lookup{a.b.c}wildlsearch{DIR/aux-var/0002.wild}}
escape: ${escape:B7·F2ò}
****
# Checkout expansion debugging
-exim -d-all+expand -be
+exim -d-all+expand -f sndr@dom -be
primary_hostname: $primary_hostname
+sender_address: $sender_address
match: ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
match: ${if match{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
${if eq {1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
${if inlist{aa}{aa} {in list}{not in list}}
${if !inlist{aa}{aa} {not in list}{in list}}
****
+# listextract from tainted list
+exim -be -oMs my.target.host.name
+'\${listextract {2} {<. $sender_host_name}}' => '${listextract {2} {<. $sender_host_name}}'
+****