Debug: fix showing option name for list (vs. list content)
[exim.git] / test / stderr / 0002
index c8e10ef9eb4ada8c4a92906a60530cf65583b7eb..aaa21e281cf430f4cffc540ab6d9106df185cb1d 100644 (file)
@@ -4,32 +4,35 @@ environment after trimming:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
- ╭considering: primary_hostname: $primary_hostname
- ├───────text: primary_hostname: 
+try option gecos_pattern
+try option gecos_name
+try option unknown_login
+ ╭considering: primary_hostname:░$primary_hostname
+ ├───────text: primary_hostname:░
  ├considering: $primary_hostname
  ├──────value: myhost.test.ex
  ├considering: $primary_hostname
  ├──────value: myhost.test.ex
- ├──expanding: primary_hostname: $primary_hostname
- ╰─────result: primary_hostname: myhost.test.ex
- ╭considering: sender_address: $sender_address
- ├───────text: sender_address: 
+ ├───expanded: primary_hostname:░$primary_hostname
+ ╰─────result: primary_hostname:myhost.test.ex
+ ╭considering: sender_address:$sender_address
+ ├───────text: sender_address:
  ├considering: $sender_address
  ├──────value: sndr@dom
             ╰──(tainted)
  ├considering: $sender_address
  ├──────value: sndr@dom
             ╰──(tainted)
- ├──expanding: sender_address: $sender_address
- ╰─────result: sender_address: sndr@dom
+ ├───expanded: sender_address:░$sender_address
+ ╰─────result: sender_address:sndr@dom
             ╰──(tainted)
             ╰──(tainted)
- ╭considering: match:  ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
- ├───────text: match:  
- ├considering: ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+ ╭considering: match:░░${if░match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+ ├───────text: match:░░
+ ├considering: ${ifmatch{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
   ╭considering: abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
   ├───────text: abcd
   ├considering: }{\N^([ab]+)(\w+)$\N}{$2$1}fail}
   ╭considering: abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
   ├───────text: abcd
   ├considering: }{\N^([ab]+)(\w+)$\N}{$2$1}fail}
-  ├──expanding: abcd
+  ├───expanded: abcd
   ╰─────result: abcd
   ╭considering: \N^([ab]+)(\w+)$\N}{$2$1}fail}
   ├──protected: ^([ab]+)(\w+)$
   ├considering: }{$2$1}fail}
   ╰─────result: abcd
   ╭considering: \N^([ab]+)(\w+)$\N}{$2$1}fail}
   ├──protected: ^([ab]+)(\w+)$
   ├considering: }{$2$1}fail}
-  ├──expanding: \N^([ab]+)(\w+)$\N
+  ├───expanded: \N^([ab]+)(\w+)$\N
   ╰─────result: ^([ab]+)(\w+)$
  compiled RE '^([ab]+)(\w+)$' not found in local cache
  compiling RE '^([ab]+)(\w+)$'
   ╰─────result: ^([ab]+)(\w+)$
  compiled RE '^([ab]+)(\w+)$' not found in local cache
  compiling RE '^([ab]+)(\w+)$'
@@ -41,23 +44,23 @@ dropping to exim gid; retaining priv uid
   ├considering: $1}fail}
   ├──────value: ab
   ├considering: }fail}
   ├considering: $1}fail}
   ├──────value: ab
   ├considering: }fail}
-  ├──expanding: $2$1
+  ├───expanded: $2$1
   ╰─────result: cdab
  ├───item-res: cdab
   ╰─────result: cdab
  ├───item-res: cdab
- ├──expanding: match:  ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
- ╰─────result: match:  cdab
- ╭considering: match:  ${if match{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
- ├───────text: match:  
- ├considering: ${if match{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+ ├───expanded: match:░░${if░match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+ ╰─────result: match:░░cdab
+ ╭considering: match:░░${if░match{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+ ├───────text: match:░░
+ ├considering: ${ifmatch{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
   ╭considering: wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
   ├───────text: wxyz
   ├considering: }{\N^([ab]+)(\w+)$\N}{$2$1}fail}
   ╭considering: wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
   ├───────text: wxyz
   ├considering: }{\N^([ab]+)(\w+)$\N}{$2$1}fail}
-  ├──expanding: wxyz
+  ├───expanded: wxyz
   ╰─────result: wxyz
   ╭considering: \N^([ab]+)(\w+)$\N}{$2$1}fail}
   ├──protected: ^([ab]+)(\w+)$
   ├considering: }{$2$1}fail}
   ╰─────result: wxyz
   ╭considering: \N^([ab]+)(\w+)$\N}{$2$1}fail}
   ├──protected: ^([ab]+)(\w+)$
   ├considering: }{$2$1}fail}
-  ├──expanding: \N^([ab]+)(\w+)$\N
+  ├───expanded: \N^([ab]+)(\w+)$\N
   ╰─────result: ^([ab]+)(\w+)$
  compiled RE '^([ab]+)(\w+)$' found in local cache
  ├──condition: match{wxyz}{\N^([ab]+)(\w+)$\N}
   ╰─────result: ^([ab]+)(\w+)$
  compiled RE '^([ab]+)(\w+)$' found in local cache
  ├──condition: match{wxyz}{\N^([ab]+)(\w+)$\N}
@@ -65,80 +68,96 @@ dropping to exim gid; retaining priv uid
   ╭───scanning: $2$1}fail}
   ├───scanning: $1}fail}
   ├───scanning: }fail}
   ╭───scanning: $2$1}fail}
   ├───scanning: $1}fail}
   ├───scanning: }fail}
-  ├──expanding: $2$1
-  ├─────result: 
+  ├───expanded: $2$1
+  ├─────result:  ◀skipped▶
   ╰───skipping: result is not used
  ├failed to expand: match:  ${if match{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
  ├───error message: "if" failed and "fail" requested
  ╰failure was forced
   ╰───skipping: result is not used
  ├failed to expand: match:  ${if match{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
  ├───error message: "if" failed and "fail" requested
  ╰failure was forced
- ╭considering: ${if eq {1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
+ ╭considering: ${if░eq░{1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
   ╭considering: 1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
   ├───────text: 1
   ├considering: }{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
   ╭considering: 1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
   ├───────text: 1
   ├considering: }{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
-  ├──expanding: 1
+  ├───expanded: 1
   ╰─────result: 1
   ╭considering: 1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
   ├───────text: 1
   ├considering: }{yes}{${lookup{xx}lsearch{/non/exist}}}}
   ╰─────result: 1
   ╭considering: 1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
   ├───────text: 1
   ├considering: }{yes}{${lookup{xx}lsearch{/non/exist}}}}
-  ├──expanding: 1
+  ├───expanded: 1
   ╰─────result: 1
   ╰─────result: 1
- ├──condition: eq {1}{1}
+ ├──condition: eq{1}{1}
  ├─────result: true
   ╭considering: yes}{${lookup{xx}lsearch{/non/exist}}}}
   ├───────text: yes
   ├considering: }{${lookup{xx}lsearch{/non/exist}}}}
  ├─────result: true
   ╭considering: yes}{${lookup{xx}lsearch{/non/exist}}}}
   ├───────text: yes
   ├considering: }{${lookup{xx}lsearch{/non/exist}}}}
-  ├──expanding: yes
+  ├───expanded: yes
   ╰─────result: yes
   ╭───scanning: ${lookup{xx}lsearch{/non/exist}}}}
    ╭───scanning: xx}lsearch{/non/exist}}}}
    ├───────text: xx
    ├───scanning: }lsearch{/non/exist}}}}
   ╰─────result: yes
   ╭───scanning: ${lookup{xx}lsearch{/non/exist}}}}
    ╭───scanning: xx}lsearch{/non/exist}}}}
    ├───────text: xx
    ├───scanning: }lsearch{/non/exist}}}}
-   ├──expanding: xx
-   ├─────result: xx
+   ├───expanded: xx
+   ├─────result:  ◀skipped▶
    ╰───skipping: result is not used
    ╭───scanning: /non/exist}}}}
    ├───────text: /non/exist
    ├───scanning: }}}}
    ╰───skipping: result is not used
    ╭───scanning: /non/exist}}}}
    ├───────text: /non/exist
    ├───scanning: }}}}
-   ├──expanding: /non/exist
-   ├─────result: /non/exist
+   ├───expanded: /non/exist
+   ├─────result:  ◀skipped▶
    ╰───skipping: result is not used
   ├───scanning: }}
    ╰───skipping: result is not used
   ├───scanning: }}
-  ├──expanding: ${lookup{xx}lsearch{/non/exist}}
-  ├─────result: 
+  ├───expanded: ${lookup{xx}lsearch{/non/exist}}
+  ├─────result:  ◀skipped▶
   ╰───skipping: result is not used
   ╰───skipping: result is not used
- ├──expanding: ${if eq {1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
+ ├───expanded: ${if░eq░{1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
  ╰─────result: yes
  ╰─────result: yes
- ╭considering: match_address:   ${if match_address{a.b.c}{a.b.c}{yes}{no}}
- ├───────text: match_address:   
- ├considering: ${if match_address{a.b.c}{a.b.c}{yes}{no}}
+ ╭considering: match_address:░░░${if░match_address{a.b.c}{a.b.c}{yes}{no}}
+ ├───────text: match_address:░░░
+ ├considering: ${ifmatch_address{a.b.c}{a.b.c}{yes}{no}}
   ╭considering: a.b.c}{a.b.c}{yes}{no}}
   ├───────text: a.b.c
   ├considering: }{a.b.c}{yes}{no}}
   ╭considering: a.b.c}{a.b.c}{yes}{no}}
   ├───────text: a.b.c
   ├considering: }{a.b.c}{yes}{no}}
-  ├──expanding: a.b.c
+  ├───expanded: a.b.c
   ╰─────result: a.b.c
   ╭considering: a.b.c}{yes}{no}}
   ├───────text: a.b.c
   ├considering: }{yes}{no}}
   ╰─────result: a.b.c
   ╭considering: a.b.c}{yes}{no}}
   ├───────text: a.b.c
   ├considering: }{yes}{no}}
-  ├──expanding: a.b.c
+  ├───expanded: a.b.c
   ╰─────result: a.b.c
 LOG: MAIN PANIC
   no @ found in the subject of an address list match: subject="a.b.c" pattern="a.b.c"
   ╰─────result: a.b.c
 LOG: MAIN PANIC
   no @ found in the subject of an address list match: subject="a.b.c" pattern="a.b.c"
+ a.b.c in "a.b.c"? no (end of list)
  ├──condition: match_address{a.b.c}{a.b.c}
  ├─────result: false
   ╭───scanning: yes}{no}}
   ├───────text: yes
   ├───scanning: }{no}}
  ├──condition: match_address{a.b.c}{a.b.c}
  ├─────result: false
   ╭───scanning: yes}{no}}
   ├───────text: yes
   ├───scanning: }{no}}
-  ├──expanding: yes
-  ├─────result: yes
+  ├───expanded: yes
+  ├─────result:  ◀skipped▶
   ╰───skipping: result is not used
   ╭considering: no}}
   ├───────text: no
   ├considering: }}
   ╰───skipping: result is not used
   ╭considering: no}}
   ├───────text: no
   ├considering: }}
-  ├──expanding: no
+  ├───expanded: no
   ╰─────result: no
  ├───item-res: no
   ╰─────result: no
  ├───item-res: no
- ├──expanding: match_address:   ${if match_address{a.b.c}{a.b.c}{yes}{no}}
- ╰─────result: match_address:   no
+ ├───expanded: match_address:░░░${if░match_address{a.b.c}{a.b.c}{yes}{no}}
+ ╰─────result: match_address:░░░no
+ ╭considering: protected:░${expand:\N░\N}
+ ├───────text: protected:░
+ ├considering: ${expand:\N░\N}
+  ╭considering: \N░\N}
+  ├──protected: ░
+  ├considering: }
+  ├───expanded: \N░\N
+  ╰─────result: ░
+  ╭considering: ░
+  ├───────text: ░
+  ├───expanded: ░
+  ╰─────result: ░
+ ├─────op-res:  
+ ├───expanded: protected:░${expand:\N░\N}
+ ╰─────result: protected:░░
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
 environment after trimming:
 >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
 environment after trimming:
@@ -146,11 +165,14 @@ environment after trimming:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
+try option gecos_pattern
+try option gecos_name
+try option unknown_login
  /considering: primary_hostname: $primary_hostname
  |-------text: primary_hostname: 
  |considering: $primary_hostname
  |------value: myhost.test.ex
  /considering: primary_hostname: $primary_hostname
  |-------text: primary_hostname: 
  |considering: $primary_hostname
  |------value: myhost.test.ex
- |--expanding: primary_hostname: $primary_hostname
+ |---expanded: primary_hostname: $primary_hostname
  \_____result: primary_hostname: myhost.test.ex
  /considering: match:  ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
  |-------text: match:  
  \_____result: primary_hostname: myhost.test.ex
  /considering: match:  ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
  |-------text: match:  
@@ -158,12 +180,12 @@ dropping to exim gid; retaining priv uid
   /considering: abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
   |-------text: abcd
   |considering: }{\N^([ab]+)(\w+)$\N}{$2$1}fail}
   /considering: abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
   |-------text: abcd
   |considering: }{\N^([ab]+)(\w+)$\N}{$2$1}fail}
-  |--expanding: abcd
+  |---expanded: abcd
   \_____result: abcd
   /considering: \N^([ab]+)(\w+)$\N}{$2$1}fail}
   |--protected: ^([ab]+)(\w+)$
   |considering: }{$2$1}fail}
   \_____result: abcd
   /considering: \N^([ab]+)(\w+)$\N}{$2$1}fail}
   |--protected: ^([ab]+)(\w+)$
   |considering: }{$2$1}fail}
-  |--expanding: \N^([ab]+)(\w+)$\N
+  |---expanded: \N^([ab]+)(\w+)$\N
   \_____result: ^([ab]+)(\w+)$
  compiled RE '^([ab]+)(\w+)$' not found in local cache
  compiling RE '^([ab]+)(\w+)$'
   \_____result: ^([ab]+)(\w+)$
  compiled RE '^([ab]+)(\w+)$' not found in local cache
  compiling RE '^([ab]+)(\w+)$'
@@ -175,10 +197,10 @@ dropping to exim gid; retaining priv uid
   |considering: $1}fail}
   |------value: ab
   |considering: }fail}
   |considering: $1}fail}
   |------value: ab
   |considering: }fail}
-  |--expanding: $2$1
+  |---expanded: $2$1
   \_____result: cdab
  |---item-res: cdab
   \_____result: cdab
  |---item-res: cdab
- |--expanding: match:  ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+ |---expanded: match:  ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
  \_____result: match:  cdab
  /considering: match:  ${if match{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
  |-------text: match:  
  \_____result: match:  cdab
  /considering: match:  ${if match{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
  |-------text: match:  
@@ -186,12 +208,12 @@ dropping to exim gid; retaining priv uid
   /considering: wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
   |-------text: wxyz
   |considering: }{\N^([ab]+)(\w+)$\N}{$2$1}fail}
   /considering: wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
   |-------text: wxyz
   |considering: }{\N^([ab]+)(\w+)$\N}{$2$1}fail}
-  |--expanding: wxyz
+  |---expanded: wxyz
   \_____result: wxyz
   /considering: \N^([ab]+)(\w+)$\N}{$2$1}fail}
   |--protected: ^([ab]+)(\w+)$
   |considering: }{$2$1}fail}
   \_____result: wxyz
   /considering: \N^([ab]+)(\w+)$\N}{$2$1}fail}
   |--protected: ^([ab]+)(\w+)$
   |considering: }{$2$1}fail}
-  |--expanding: \N^([ab]+)(\w+)$\N
+  |---expanded: \N^([ab]+)(\w+)$\N
   \_____result: ^([ab]+)(\w+)$
  compiled RE '^([ab]+)(\w+)$' found in local cache
  |--condition: match{wxyz}{\N^([ab]+)(\w+)$\N}
   \_____result: ^([ab]+)(\w+)$
  compiled RE '^([ab]+)(\w+)$' found in local cache
  |--condition: match{wxyz}{\N^([ab]+)(\w+)$\N}
@@ -199,8 +221,8 @@ dropping to exim gid; retaining priv uid
   /---scanning: $2$1}fail}
   |---scanning: $1}fail}
   |---scanning: }fail}
   /---scanning: $2$1}fail}
   |---scanning: $1}fail}
   |---scanning: }fail}
-  |--expanding: $2$1
-  |-----result: 
+  |---expanded: $2$1
+  |-----result:  <skipped>
   \___skipping: result is not used
  |failed to expand: match:  ${if match{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
  |---error message: "if" failed and "fail" requested
   \___skipping: result is not used
  |failed to expand: match:  ${if match{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
  |---error message: "if" failed and "fail" requested
@@ -209,38 +231,38 @@ dropping to exim gid; retaining priv uid
   /considering: 1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
   |-------text: 1
   |considering: }{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
   /considering: 1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
   |-------text: 1
   |considering: }{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
-  |--expanding: 1
+  |---expanded: 1
   \_____result: 1
   /considering: 1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
   |-------text: 1
   |considering: }{yes}{${lookup{xx}lsearch{/non/exist}}}}
   \_____result: 1
   /considering: 1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
   |-------text: 1
   |considering: }{yes}{${lookup{xx}lsearch{/non/exist}}}}
-  |--expanding: 1
+  |---expanded: 1
   \_____result: 1
  |--condition: eq {1}{1}
  |-----result: true
   /considering: yes}{${lookup{xx}lsearch{/non/exist}}}}
   |-------text: yes
   |considering: }{${lookup{xx}lsearch{/non/exist}}}}
   \_____result: 1
  |--condition: eq {1}{1}
  |-----result: true
   /considering: yes}{${lookup{xx}lsearch{/non/exist}}}}
   |-------text: yes
   |considering: }{${lookup{xx}lsearch{/non/exist}}}}
-  |--expanding: yes
+  |---expanded: yes
   \_____result: yes
   /---scanning: ${lookup{xx}lsearch{/non/exist}}}}
    /---scanning: xx}lsearch{/non/exist}}}}
    |-------text: xx
    |---scanning: }lsearch{/non/exist}}}}
   \_____result: yes
   /---scanning: ${lookup{xx}lsearch{/non/exist}}}}
    /---scanning: xx}lsearch{/non/exist}}}}
    |-------text: xx
    |---scanning: }lsearch{/non/exist}}}}
-   |--expanding: xx
-   |-----result: xx
+   |---expanded: xx
+   |-----result:  <skipped>
    \___skipping: result is not used
    /---scanning: /non/exist}}}}
    |-------text: /non/exist
    |---scanning: }}}}
    \___skipping: result is not used
    /---scanning: /non/exist}}}}
    |-------text: /non/exist
    |---scanning: }}}}
-   |--expanding: /non/exist
-   |-----result: /non/exist
+   |---expanded: /non/exist
+   |-----result:  <skipped>
    \___skipping: result is not used
   |---scanning: }}
    \___skipping: result is not used
   |---scanning: }}
-  |--expanding: ${lookup{xx}lsearch{/non/exist}}
-  |-----result: 
+  |---expanded: ${lookup{xx}lsearch{/non/exist}}
+  |-----result:  <skipped>
   \___skipping: result is not used
   \___skipping: result is not used
- |--expanding: ${if eq {1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
+ |---expanded: ${if eq {1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
  \_____result: yes
  /considering: match_address:   ${if match_address{a.b.c}{a.b.c}{yes}{no}}
  |-------text: match_address:   
  \_____result: yes
  /considering: match_address:   ${if match_address{a.b.c}{a.b.c}{yes}{no}}
  |-------text: match_address:   
@@ -248,31 +270,47 @@ dropping to exim gid; retaining priv uid
   /considering: a.b.c}{a.b.c}{yes}{no}}
   |-------text: a.b.c
   |considering: }{a.b.c}{yes}{no}}
   /considering: a.b.c}{a.b.c}{yes}{no}}
   |-------text: a.b.c
   |considering: }{a.b.c}{yes}{no}}
-  |--expanding: a.b.c
+  |---expanded: a.b.c
   \_____result: a.b.c
   /considering: a.b.c}{yes}{no}}
   |-------text: a.b.c
   |considering: }{yes}{no}}
   \_____result: a.b.c
   /considering: a.b.c}{yes}{no}}
   |-------text: a.b.c
   |considering: }{yes}{no}}
-  |--expanding: a.b.c
+  |---expanded: a.b.c
   \_____result: a.b.c
 LOG: MAIN PANIC
   no @ found in the subject of an address list match: subject="a.b.c" pattern="a.b.c"
   \_____result: a.b.c
 LOG: MAIN PANIC
   no @ found in the subject of an address list match: subject="a.b.c" pattern="a.b.c"
+ a.b.c in "a.b.c"? no (end of list)
  |--condition: match_address{a.b.c}{a.b.c}
  |-----result: false
   /---scanning: yes}{no}}
   |-------text: yes
   |---scanning: }{no}}
  |--condition: match_address{a.b.c}{a.b.c}
  |-----result: false
   /---scanning: yes}{no}}
   |-------text: yes
   |---scanning: }{no}}
-  |--expanding: yes
-  |-----result: yes
+  |---expanded: yes
+  |-----result:  <skipped>
   \___skipping: result is not used
   /considering: no}}
   |-------text: no
   |considering: }}
   \___skipping: result is not used
   /considering: no}}
   |-------text: no
   |considering: }}
-  |--expanding: no
+  |---expanded: no
   \_____result: no
  |---item-res: no
   \_____result: no
  |---item-res: no
- |--expanding: match_address:   ${if match_address{a.b.c}{a.b.c}{yes}{no}}
+ |---expanded: match_address:   ${if match_address{a.b.c}{a.b.c}{yes}{no}}
  \_____result: match_address:   no
  \_____result: match_address:   no
+ /considering: protected: ${expand:\N \N}
+ |-------text: protected: 
+ |considering: ${expand:\N \N}
+  /considering: \N \N}
+  |--protected:  
+  |considering: }
+  |---expanded: \N \N
+  \_____result:  
+  /considering:  
+  |-------text:  
+  |---expanded:  
+  \_____result:  
+ |-----op-res:  
+ |---expanded: protected: ${expand:\N \N}
+ \_____result: protected:  
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
 environment after trimming:
 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
 environment after trimming:
@@ -280,73 +318,76 @@ environment after trimming:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
- ╭considering: -oMa  sender_host_address = $sender_host_address
- ├───────text: -oMa  sender_host_address = 
+try option gecos_pattern
+try option gecos_name
+try option unknown_login
+ ╭considering: -oMa░░sender_host_address░=░$sender_host_address
+ ├───────text: -oMa░░sender_host_address░=░
  ├considering: $sender_host_address
  ├──────value: V4NET.0.0.1
             ╰──(tainted)
  ├considering: $sender_host_address
  ├──────value: V4NET.0.0.1
             ╰──(tainted)
- ├──expanding: -oMa  sender_host_address = $sender_host_address
- ╰─────result: -oMa  sender_host_address = V4NET.0.0.1
+ ├───expanded: -oMa░░sender_host_address░=░$sender_host_address
+ ╰─────result: -oMa░░sender_host_address░=░V4NET.0.0.1
             ╰──(tainted)
             ╰──(tainted)
- ╭considering:       sender_host_port = $sender_host_port
- ├───────text:       sender_host_port = 
+ ╭considering: ░░░░░░sender_host_port░=░$sender_host_port
+ ├───────text: ░░░░░░sender_host_port░=░
  ├considering: $sender_host_port
  ├──────value: 1234
  ├considering: $sender_host_port
  ├──────value: 1234
- ├──expanding:       sender_host_port = $sender_host_port
- ╰─────result:       sender_host_port = 1234
- ╭considering: -oMaa sender_host_authenticated = $sender_host_authenticated
- ├───────text: -oMaa sender_host_authenticated = 
+ ├───expanded: ░░░░░░sender_host_port░=░$sender_host_port
+ ╰─────result: ░░░░░░sender_host_port░=░1234
+ ╭considering: -oMaa░sender_host_authenticated░=░$sender_host_authenticated
+ ├───────text: -oMaa░sender_host_authenticated░=░
  ├considering: $sender_host_authenticated
  ├──────value: AAA
             ╰──(tainted)
  ├considering: $sender_host_authenticated
  ├──────value: AAA
             ╰──(tainted)
- ├──expanding: -oMaa sender_host_authenticated = $sender_host_authenticated
- ╰─────result: -oMaa sender_host_authenticated = AAA
+ ├───expanded: -oMaa░sender_host_authenticated░=░$sender_host_authenticated
+ ╰─────result: -oMaa░sender_host_authenticated░=░AAA
             ╰──(tainted)
             ╰──(tainted)
- ╭considering: -oMai authenticated_id = $authenticated_id
- ├───────text: -oMai authenticated_id = 
+ ╭considering: -oMai░authenticated_id░=░$authenticated_id
+ ├───────text: -oMai░authenticated_id░=░
  ├considering: $authenticated_id
  ├──────value: philip
             ╰──(tainted)
  ├considering: $authenticated_id
  ├──────value: philip
             ╰──(tainted)
- ├──expanding: -oMai authenticated_id = $authenticated_id
- ╰─────result: -oMai authenticated_id = philip
+ ├───expanded: -oMai░authenticated_id░=░$authenticated_id
+ ╰─────result: -oMai░authenticated_id░=░philip
             ╰──(tainted)
             ╰──(tainted)
- ╭considering: -oMas authenticated_sender = $authenticated_sender
- ├───────text: -oMas authenticated_sender = 
+ ╭considering: -oMas░authenticated_sender░=░$authenticated_sender
+ ├───────text: -oMas░authenticated_sender░=░
  ├considering: $authenticated_sender
  ├──────value: xx@yy.zz
             ╰──(tainted)
  ├considering: $authenticated_sender
  ├──────value: xx@yy.zz
             ╰──(tainted)
- ├──expanding: -oMas authenticated_sender = $authenticated_sender
- ╰─────result: -oMas authenticated_sender = xx@yy.zz
+ ├───expanded: -oMas░authenticated_sender░=░$authenticated_sender
+ ╰─────result: -oMas░authenticated_sender░=░xx@yy.zz
             ╰──(tainted)
             ╰──(tainted)
- ╭considering: -oMi  interface_address = $interface_address
- ├───────text: -oMi  interface_address = 
+ ╭considering: -oMi░░interface_address░=░$interface_address
+ ├───────text: -oMi░░interface_address░=░
  ├considering: $interface_address
  ├──────value: 1.1.1.1
             ╰──(tainted)
  ├considering: $interface_address
  ├──────value: 1.1.1.1
             ╰──(tainted)
- ├──expanding: -oMi  interface_address = $interface_address
- ╰─────result: -oMi  interface_address = 1.1.1.1
+ ├───expanded: -oMi░░interface_address░=░$interface_address
+ ╰─────result: -oMi░░interface_address░=░1.1.1.1
             ╰──(tainted)
             ╰──(tainted)
- ╭considering:       interface_port = $interface_port
- ├───────text:       interface_port = 
+ ╭considering: ░░░░░░interface_port░=░$interface_port
+ ├───────text: ░░░░░░interface_port░=░
  ├considering: $interface_port
  ├──────value: 99
  ├considering: $interface_port
  ├──────value: 99
- ├──expanding:       interface_port = $interface_port
- ╰─────result:       interface_port = 99
- ╭considering: -oMr  received_protocol = $received_protocol
- ├───────text: -oMr  received_protocol = 
+ ├───expanded: ░░░░░░interface_port░=░$interface_port
+ ╰─────result: ░░░░░░interface_port░=░99
+ ╭considering: -oMr░░received_protocol░=░$received_protocol
+ ├───────text: -oMr░░received_protocol░=░
  ├considering: $received_protocol
  ├──────value: special
             ╰──(tainted)
  ├considering: $received_protocol
  ├──────value: special
             ╰──(tainted)
- ├──expanding: -oMr  received_protocol = $received_protocol
- ╰─────result: -oMr  received_protocol = special
+ ├───expanded: -oMr░░received_protocol░=░$received_protocol
+ ╰─────result: -oMr░░received_protocol░=░special
             ╰──(tainted)
             ╰──(tainted)
- ╭considering: -oMt  sender_ident = $sender_ident
- ├───────text: -oMt  sender_ident = 
+ ╭considering: -oMt░░sender_ident░=░$sender_ident
+ ├───────text: -oMt░░sender_ident░=░
  ├considering: $sender_ident
  ├──────value: me
             ╰──(tainted)
  ├considering: $sender_ident
  ├──────value: me
             ╰──(tainted)
- ├──expanding: -oMt  sender_ident = $sender_ident
- ╰─────result: -oMt  sender_ident = me
+ ├───expanded: -oMt░░sender_ident░=░$sender_ident
+ ╰─────result: -oMt░░sender_ident░=░me
             ╰──(tainted)
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 1999-03-02 09:44:33 no host name found for IP address V4NET.11.12.13
             ╰──(tainted)
 >>>>>>>>>>>>>>>> Exim pid=p1236 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 1999-03-02 09:44:33 no host name found for IP address V4NET.11.12.13
@@ -356,97 +397,100 @@ environment after trimming:
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
 configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
- ╭considering: -oMa  sender_host_address = $sender_host_address
- ├───────text: -oMa  sender_host_address = 
+try option gecos_pattern
+try option gecos_name
+try option unknown_login
+ ╭considering: -oMa░░sender_host_address░=░$sender_host_address
+ ├───────text: -oMa░░sender_host_address░=░
  ├considering: $sender_host_address
  ├──────value: V4NET.0.0.1
             ╰──(tainted)
  ├considering: $sender_host_address
  ├──────value: V4NET.0.0.1
             ╰──(tainted)
- ├──expanding: -oMa  sender_host_address = $sender_host_address
- ╰─────result: -oMa  sender_host_address = V4NET.0.0.1
+ ├───expanded: -oMa░░sender_host_address░=░$sender_host_address
+ ╰─────result: -oMa░░sender_host_address░=░V4NET.0.0.1
             ╰──(tainted)
             ╰──(tainted)
- ╭considering:       sender_host_port = $sender_host_port
- ├───────text:       sender_host_port = 
+ ╭considering: ░░░░░░sender_host_port░=░$sender_host_port
+ ├───────text: ░░░░░░sender_host_port░=░
  ├considering: $sender_host_port
  ├──────value: 1234
  ├considering: $sender_host_port
  ├──────value: 1234
- ├──expanding:       sender_host_port = $sender_host_port
- ╰─────result:       sender_host_port = 1234
- ╭considering: -oMaa sender_host_authenticated = $sender_host_authenticated
- ├───────text: -oMaa sender_host_authenticated = 
+ ├───expanded: ░░░░░░sender_host_port░=░$sender_host_port
+ ╰─────result: ░░░░░░sender_host_port░=░1234
+ ╭considering: -oMaa░sender_host_authenticated░=░$sender_host_authenticated
+ ├───────text: -oMaa░sender_host_authenticated░=░
  ├considering: $sender_host_authenticated
  ├──────value: AAA
             ╰──(tainted)
  ├considering: $sender_host_authenticated
  ├──────value: AAA
             ╰──(tainted)
- ├──expanding: -oMaa sender_host_authenticated = $sender_host_authenticated
- ╰─────result: -oMaa sender_host_authenticated = AAA
+ ├───expanded: -oMaa░sender_host_authenticated░=░$sender_host_authenticated
+ ╰─────result: -oMaa░sender_host_authenticated░=░AAA
             ╰──(tainted)
             ╰──(tainted)
- ╭considering: -oMai authenticated_id = $authenticated_id
- ├───────text: -oMai authenticated_id = 
+ ╭considering: -oMai░authenticated_id░=░$authenticated_id
+ ├───────text: -oMai░authenticated_id░=░
  ├considering: $authenticated_id
  ├──────value: philip
             ╰──(tainted)
  ├considering: $authenticated_id
  ├──────value: philip
             ╰──(tainted)
- ├──expanding: -oMai authenticated_id = $authenticated_id
- ╰─────result: -oMai authenticated_id = philip
+ ├───expanded: -oMai░authenticated_id░=░$authenticated_id
+ ╰─────result: -oMai░authenticated_id░=░philip
             ╰──(tainted)
             ╰──(tainted)
- ╭considering: -oMas authenticated_sender = $authenticated_sender
- ├───────text: -oMas authenticated_sender = 
+ ╭considering: -oMas░authenticated_sender░=░$authenticated_sender
+ ├───────text: -oMas░authenticated_sender░=░
  ├considering: $authenticated_sender
  ├──────value: xx@yy.zz
             ╰──(tainted)
  ├considering: $authenticated_sender
  ├──────value: xx@yy.zz
             ╰──(tainted)
- ├──expanding: -oMas authenticated_sender = $authenticated_sender
- ╰─────result: -oMas authenticated_sender = xx@yy.zz
+ ├───expanded: -oMas░authenticated_sender░=░$authenticated_sender
+ ╰─────result: -oMas░authenticated_sender░=░xx@yy.zz
             ╰──(tainted)
             ╰──(tainted)
- ╭considering: -oMi  interface_address = $interface_address
- ├───────text: -oMi  interface_address = 
+ ╭considering: -oMi░░interface_address░=░$interface_address
+ ├───────text: -oMi░░interface_address░=░
  ├considering: $interface_address
  ├──────value: 1.1.1.1
             ╰──(tainted)
  ├considering: $interface_address
  ├──────value: 1.1.1.1
             ╰──(tainted)
- ├──expanding: -oMi  interface_address = $interface_address
- ╰─────result: -oMi  interface_address = 1.1.1.1
+ ├───expanded: -oMi░░interface_address░=░$interface_address
+ ╰─────result: -oMi░░interface_address░=░1.1.1.1
             ╰──(tainted)
             ╰──(tainted)
- ╭considering:       interface_port = $interface_port
- ├───────text:       interface_port = 
+ ╭considering: ░░░░░░interface_port░=░$interface_port
+ ├───────text: ░░░░░░interface_port░=░
  ├considering: $interface_port
  ├──────value: 99
  ├considering: $interface_port
  ├──────value: 99
- ├──expanding:       interface_port = $interface_port
- ╰─────result:       interface_port = 99
- ╭considering: -oMr  received_protocol = $received_protocol
- ├───────text: -oMr  received_protocol = 
+ ├───expanded: ░░░░░░interface_port░=░$interface_port
+ ╰─────result: ░░░░░░interface_port░=░99
+ ╭considering: -oMr░░received_protocol░=░$received_protocol
+ ├───────text: -oMr░░received_protocol░=░
  ├considering: $received_protocol
  ├──────value: special
             ╰──(tainted)
  ├considering: $received_protocol
  ├──────value: special
             ╰──(tainted)
- ├──expanding: -oMr  received_protocol = $received_protocol
- ╰─────result: -oMr  received_protocol = special
+ ├───expanded: -oMr░░received_protocol░=░$received_protocol
+ ╰─────result: -oMr░░received_protocol░=░special
             ╰──(tainted)
             ╰──(tainted)
- ╭considering: ----> No lookup yet: ${if eq{black}{white}{$sender_host_name}{No}}
- ├───────text: ----> No lookup yet: 
- ├considering: ${if eq{black}{white}{$sender_host_name}{No}}
+ ╭considering: ---->░No░lookup░yet:░${if░eq{black}{white}{$sender_host_name}{No}}
+ ├───────text: ---->░No░lookup░yet:░
+ ├considering: ${ifeq{black}{white}{$sender_host_name}{No}}
   ╭considering: black}{white}{$sender_host_name}{No}}
   ├───────text: black
   ├considering: }{white}{$sender_host_name}{No}}
   ╭considering: black}{white}{$sender_host_name}{No}}
   ├───────text: black
   ├considering: }{white}{$sender_host_name}{No}}
-  ├──expanding: black
+  ├───expanded: black
   ╰─────result: black
   ╭considering: white}{$sender_host_name}{No}}
   ├───────text: white
   ├considering: }{$sender_host_name}{No}}
   ╰─────result: black
   ╭considering: white}{$sender_host_name}{No}}
   ├───────text: white
   ├considering: }{$sender_host_name}{No}}
-  ├──expanding: white
+  ├───expanded: white
   ╰─────result: white
  ├──condition: eq{black}{white}
  ├─────result: false
   ╭───scanning: $sender_host_name}{No}}
   ├──────value: 
   ├───scanning: }{No}}
   ╰─────result: white
  ├──condition: eq{black}{white}
  ├─────result: false
   ╭───scanning: $sender_host_name}{No}}
   ├──────value: 
   ├───scanning: }{No}}
-  ├──expanding: $sender_host_name
-  ├─────result: 
+  ├───expanded: $sender_host_name
+  ├─────result:  ◀skipped▶
   ╰───skipping: result is not used
   ╭considering: No}}
   ├───────text: No
   ├considering: }}
   ╰───skipping: result is not used
   ╭considering: No}}
   ├───────text: No
   ├considering: }}
-  ├──expanding: No
+  ├───expanded: No
   ╰─────result: No
  ├───item-res: No
   ╰─────result: No
  ├───item-res: No
- ├──expanding: ----> No lookup yet: ${if eq{black}{white}{$sender_host_name}{No}}
- ╰─────result: ----> No lookup yet: No
- ╭considering: -oMs  sender_host_name = $sender_host_name
- ├───────text: -oMs  sender_host_name = 
+ ├───expanded: ---->░No░lookup░yet:░${if░eq{black}{white}{$sender_host_name}{No}}
+ ╰─────result: ---->░No░lookup░yet:░No
+ ╭considering: -oMs░░sender_host_name░=░$sender_host_name
+ ├───────text: -oMs░░sender_host_name░=░
  ├considering: $sender_host_name
 looking up host name for V4NET.0.0.1
 IP address lookup yielded "ten-1.test.ex"
  ├considering: $sender_host_name
 looking up host name for V4NET.0.0.1
 IP address lookup yielded "ten-1.test.ex"
@@ -457,16 +501,16 @@ sender_fullhost = ten-1.test.ex [V4NET.0.0.1]
 sender_rcvhost = ten-1.test.ex ([V4NET.0.0.1] ident=me)
  ├──────value: ten-1.test.ex
             ╰──(tainted)
 sender_rcvhost = ten-1.test.ex ([V4NET.0.0.1] ident=me)
  ├──────value: ten-1.test.ex
             ╰──(tainted)
- ├──expanding: -oMs  sender_host_name = $sender_host_name
- ╰─────result: -oMs  sender_host_name = ten-1.test.ex
+ ├───expanded: -oMs░░sender_host_name░=░$sender_host_name
+ ╰─────result: -oMs░░sender_host_name░=░ten-1.test.ex
             ╰──(tainted)
             ╰──(tainted)
- ╭considering: -oMt  sender_ident = $sender_ident
- ├───────text: -oMt  sender_ident = 
+ ╭considering: -oMt░░sender_ident░=░$sender_ident
+ ├───────text: -oMt░░sender_ident░=░
  ├considering: $sender_ident
  ├──────value: me
             ╰──(tainted)
  ├considering: $sender_ident
  ├──────value: me
             ╰──(tainted)
- ├──expanding: -oMt  sender_ident = $sender_ident
- ╰─────result: -oMt  sender_ident = me
+ ├───expanded: -oMt░░sender_ident░=░$sender_ident
+ ╰─────result: -oMt░░sender_ident░=░me
             ╰──(tainted)
 >>>>>>>>>>>>>>>> Exim pid=p1237 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
             ╰──(tainted)
 >>>>>>>>>>>>>>>> Exim pid=p1237 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 Exim version x.yz ....
@@ -503,6 +547,8 @@ looking up host name for V4NET.0.0.1
 DNS lookup of 1.0.0.V4NET.in-addr.arpa (PTR) using fakens
 DNS lookup of 1.0.0.V4NET.in-addr.arpa (PTR) succeeded
 IP address lookup yielded "ten-1.test.ex"
 DNS lookup of 1.0.0.V4NET.in-addr.arpa (PTR) using fakens
 DNS lookup of 1.0.0.V4NET.in-addr.arpa (PTR) succeeded
 IP address lookup yielded "ten-1.test.ex"
+ ten-1.test.ex not in empty list (option unset? cannot trace name)
+ ten-1.test.ex not in empty list (option unset? cannot trace name)
 DNS lookup of ten-1.test.ex (A) using fakens
 DNS lookup of ten-1.test.ex (A) succeeded
 ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx 
 DNS lookup of ten-1.test.ex (A) using fakens
 DNS lookup of ten-1.test.ex (A) succeeded
 ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx 
@@ -603,13 +649,13 @@ search_tidyup called
 >>> processing "warn" (TESTSUITE/test-config 51)
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: ""
 >>> processing "warn" (TESTSUITE/test-config 51)
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: ""
-LOG: 10HmaX-0005vi-00 Subject is: ""
+LOG: 10HmaX-000000005vi-0000 Subject is: ""
 >>> warn: condition test succeeded in ACL "check_data"
 >>> processing "deny" (TESTSUITE/test-config 52)
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
 >>> warn: condition test succeeded in ACL "check_data"
 >>> processing "deny" (TESTSUITE/test-config 52)
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
-LOG: 10HmaX-0005vi-00 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
+LOG: 10HmaX-000000005vi-0000 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
 >>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
 >>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
@@ -618,13 +664,13 @@ LOG: 10HmaX-0005vi-00 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_add
 >>> processing "warn" (TESTSUITE/test-config 51)
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: ""
 >>> processing "warn" (TESTSUITE/test-config 51)
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: ""
-LOG: 10HmaY-0005vi-00 Subject is: ""
+LOG: 10HmaY-000000005vi-0000 Subject is: ""
 >>> warn: condition test succeeded in ACL "check_data"
 >>> processing "deny" (TESTSUITE/test-config 52)
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
 >>> warn: condition test succeeded in ACL "check_data"
 >>> processing "deny" (TESTSUITE/test-config 52)
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
-LOG: 10HmaY-0005vi-00 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_address=<a@b>
+LOG: 10HmaY-000000005vi-0000 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_address=<a@b>
 >>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
 >>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
@@ -633,13 +679,13 @@ LOG: 10HmaY-0005vi-00 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_add
 >>> processing "warn" (TESTSUITE/test-config 51)
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: ""
 >>> processing "warn" (TESTSUITE/test-config 51)
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: ""
-LOG: 10HmaZ-0005vi-00 Subject is: ""
+LOG: 10HmaZ-000000005vi-0000 Subject is: ""
 >>> warn: condition test succeeded in ACL "check_data"
 >>> processing "deny" (TESTSUITE/test-config 52)
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
 >>> warn: condition test succeeded in ACL "check_data"
 >>> processing "deny" (TESTSUITE/test-config 52)
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
-LOG: 10HmaZ-0005vi-00 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_address=<c@d>
+LOG: 10HmaZ-000000005vi-0000 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_address=<c@d>
 >>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
 >>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
@@ -648,13 +694,13 @@ LOG: 10HmaZ-0005vi-00 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_add
 >>> processing "warn" (TESTSUITE/test-config 51)
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: ""
 >>> processing "warn" (TESTSUITE/test-config 51)
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: ""
-LOG: 10HmbA-0005vi-00 Subject is: ""
+LOG: 10HmbA-000000005vi-0000 Subject is: ""
 >>> warn: condition test succeeded in ACL "check_data"
 >>> processing "deny" (TESTSUITE/test-config 52)
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
 >>> warn: condition test succeeded in ACL "check_data"
 >>> processing "deny" (TESTSUITE/test-config 52)
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
-LOG: 10HmbA-0005vi-00 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
+LOG: 10HmbA-000000005vi-0000 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
 >>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
 >>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
@@ -663,13 +709,13 @@ LOG: 10HmbA-0005vi-00 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_add
 >>> processing "warn" (TESTSUITE/test-config 51)
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: ""
 >>> processing "warn" (TESTSUITE/test-config 51)
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: ""
-LOG: 10HmbB-0005vi-00 Subject is: ""
+LOG: 10HmbB-000000005vi-0000 Subject is: ""
 >>> warn: condition test succeeded in ACL "check_data"
 >>> processing "deny" (TESTSUITE/test-config 52)
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
 >>> warn: condition test succeeded in ACL "check_data"
 >>> processing "deny" (TESTSUITE/test-config 52)
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
-LOG: 10HmbB-0005vi-00 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_address=<x@y>
+LOG: 10HmbB-000000005vi-0000 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_address=<x@y>
 >>> host in hosts_connection_nolog? no (option unset)
 >>> host in host_lookup? no (option unset)
 >>> host in host_reject_connection? no (option unset)
 >>> host in hosts_connection_nolog? no (option unset)
 >>> host in host_lookup? no (option unset)
 >>> host in host_reject_connection? no (option unset)
@@ -694,13 +740,13 @@ LOG: 10HmbB-0005vi-00 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_add
 >>> processing "warn" (TESTSUITE/test-config 51)
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: "=?iso-8859-8?Q?_here_we_go=3A_a_string_that_is_going_to_be_encoded=3A_it_will_go_over_the_75-char_limit_by_a_long_way=3B_in_fact_this_one_will_go_over_the_150_character_limit?="
 >>> processing "warn" (TESTSUITE/test-config 51)
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: "=?iso-8859-8?Q?_here_we_go=3A_a_string_that_is_going_to_be_encoded=3A_it_will_go_over_the_75-char_limit_by_a_long_way=3B_in_fact_this_one_will_go_over_the_150_character_limit?="
-LOG: 10HmbC-0005vi-00 Subject is: "=?iso-8859-8?Q?_here_we_go=3A_a_string_that_is_going_to_be_encoded=3A_it_will_go_over_the_75-char_limit_by_a_long_way=3B_in_fact_this_one_will_go_over_the_150_character_limit?="
+LOG: 10HmbC-000000005vi-0000 Subject is: "=?iso-8859-8?Q?_here_we_go=3A_a_string_that_is_going_to_be_encoded=3A_it_will_go_over_the_75-char_limit_by_a_long_way=3B_in_fact_this_one_will_go_over_the_150_character_limit?="
 >>> warn: condition test succeeded in ACL "check_data"
 >>> processing "deny" (TESTSUITE/test-config 52)
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
 >>> warn: condition test succeeded in ACL "check_data"
 >>> processing "deny" (TESTSUITE/test-config 52)
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
-LOG: 10HmbC-0005vi-00 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
+LOG: 10HmbC-000000005vi-0000 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
 >>> host in hosts_connection_nolog? no (option unset)
 >>> host in host_lookup? no (option unset)
 >>> host in host_reject_connection? no (option unset)
 >>> host in hosts_connection_nolog? no (option unset)
 >>> host in host_lookup? no (option unset)
 >>> host in host_reject_connection? no (option unset)
@@ -725,13 +771,13 @@ LOG: 10HmbC-0005vi-00 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_add
 >>> processing "warn" (TESTSUITE/test-config 51)
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: " here we go: a string that is going to be encoded: it will go over the 75-char limit by a long way; in fact this one will go over the 150 character limit"
 >>> processing "warn" (TESTSUITE/test-config 51)
 >>> check logwrite = Subject is: "$h_subject:"
 >>>                = Subject is: " here we go: a string that is going to be encoded: it will go over the 75-char limit by a long way; in fact this one will go over the 150 character limit"
-LOG: 10HmbD-0005vi-00 Subject is: " here we go: a string that is going to be encoded: it will go over the 75-char limit by a long way; in fact this one will go over the 150 character limit"
+LOG: 10HmbD-000000005vi-0000 Subject is: " here we go: a string that is going to be encoded: it will go over the 75-char limit by a long way; in fact this one will go over the 150 character limit"
 >>> warn: condition test succeeded in ACL "check_data"
 >>> processing "deny" (TESTSUITE/test-config 52)
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
 >>> warn: condition test succeeded in ACL "check_data"
 >>> processing "deny" (TESTSUITE/test-config 52)
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
-LOG: 10HmbD-0005vi-00 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
+LOG: 10HmbD-000000005vi-0000 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
 Exim version x.yz ....
 changed uid/gid: -C, -D, -be or -bf forces real uid
   uid=CALLER_UID gid=CALLER_GID pid=p1240
 Exim version x.yz ....
 changed uid/gid: -C, -D, -be or -bf forces real uid
   uid=CALLER_UID gid=CALLER_GID pid=p1240
@@ -746,5 +792,8 @@ sender address = CALLER@myhost.test.ex
   1.2.3.4 in "1.2.3.4/abc"?
    list element: 1.2.3.4/abc
    1.2.3.4 in "1.2.3.4/abc"? no (malformed IPv4 address or address mask: 1.2.3.4)
   1.2.3.4 in "1.2.3.4/abc"?
    list element: 1.2.3.4/abc
    1.2.3.4 in "1.2.3.4/abc"? no (malformed IPv4 address or address mask: 1.2.3.4)
-  search_tidyup called
+   ::1 in "<; aaaa:bbbb"?
+   ╎list element: aaaa:bbbb
+   ╎::1 in "<; aaaa:bbbb"? no (malformed IPv6 address or address mask: aaaa:bbbb)
+   search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=p1240 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 >>>>>>>>>>>>>>>> Exim pid=p1240 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>