{
next if $extra =~ m%^/% && eval $extra;
eval $extra if $extra =~ m/^s/;
+ eval substr($extra, 1) if $extra =~ m/^R/;
}
# Check for "*** truncated ***"
# Usable files are:
# paniclog, rejectlog, mainlog, stdout, stderr, msglog, mail
# Search strings starting with 's' do substitutions;
-# with '/' do line-skips.
+# with '/' do line-skips,
+# with 'R' run given code.
# Triggered by a scriptfile line "munge <name>"
##################################################
$munges =
},
'optional_dsn_info' =>
- { 'mail' => '/^(X-(Remote-MTA-(smtp-greeting|helo-response)|Exim-Diagnostic|(body|message)-linecount):|Remote-MTA: X-ip;)/'
+ { 'mail' => 'Rif (/^(X-(Remote-MTA-(smtp-greeting|helo-response)|Exim-Diagnostic|(body|message)-linecount):|Remote-MTA: X-ip;)/) {
+ while (1) {
+ $_ = <IN>;
+ next if /^ /;
+ goto RESET_AFTER_EXTRA_LINE_READ;
+ }
+ }'
},
'optional_config' =>
our %ENV = map { $_ => $ENV{$_} } grep { /^(?:USER|SHELL|PATH|TERM|EXIM_TEST_.*)$/ } keys %ENV;
-if (/^(\d+)\s*$/) # Handle unusual return code
+if (/^(\d+)\s*(?:([A-Z]+)=(\S+))?$/) # Handle unusual return code
{
my($r) = $_[2];
$$r = $1 << 8;
+ $ENV{$2} = $3 if (defined $2);
$_ = <SCRIPT>;
return 4 if !defined $_; # Missing command
$lineno++;