send-email: implement sendmail aliases line continuation support
Logical lines in sendmail aliases files can be spread over multiple physical lines[1]. A line beginning with whitespace is folded into the preceding line. A line ending with '\' consumes the following line. [1]: https://www.freebsd.org/cgi/man.cgi?query=aliases&sektion=5 Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
020be85f51
commit
2532dd0605
@ -394,8 +394,6 @@ described below:
|
|||||||
sendmail;;
|
sendmail;;
|
||||||
* Quoted aliases and quoted addresses are not supported: lines that
|
* Quoted aliases and quoted addresses are not supported: lines that
|
||||||
contain a `"` symbol are ignored.
|
contain a `"` symbol are ignored.
|
||||||
* Line continuations are not supported: lines that start with
|
|
||||||
whitespace characters, or end with a `\` symbol are ignored.
|
|
||||||
* Redirection to a file (`/path/name`) or pipe (`|command`) is not
|
* Redirection to a file (`/path/name`) or pipe (`|command`) is not
|
||||||
supported.
|
supported.
|
||||||
* File inclusion (`:include: /path/name`) is not supported.
|
* File inclusion (`:include: /path/name`) is not supported.
|
||||||
|
@ -492,8 +492,6 @@ sub parse_sendmail_alias {
|
|||||||
local $_ = shift;
|
local $_ = shift;
|
||||||
if (/"/) {
|
if (/"/) {
|
||||||
print STDERR "warning: sendmail alias with quotes is not supported: $_\n";
|
print STDERR "warning: sendmail alias with quotes is not supported: $_\n";
|
||||||
} elsif (/^\s|\\$/) {
|
|
||||||
print STDERR "warning: sendmail continuation line is not supported: $_\n";
|
|
||||||
} elsif (/^(\S+?)\s*:\s*(.+)$/) {
|
} elsif (/^(\S+?)\s*:\s*(.+)$/) {
|
||||||
my ($alias, $addr) = ($1, $2);
|
my ($alias, $addr) = ($1, $2);
|
||||||
$aliases{$alias} = [ split_addrs($addr) ];
|
$aliases{$alias} = [ split_addrs($addr) ];
|
||||||
@ -504,10 +502,16 @@ sub parse_sendmail_alias {
|
|||||||
|
|
||||||
sub parse_sendmail_aliases {
|
sub parse_sendmail_aliases {
|
||||||
my $fh = shift;
|
my $fh = shift;
|
||||||
|
my $s = '';
|
||||||
while (<$fh>) {
|
while (<$fh>) {
|
||||||
|
chomp;
|
||||||
next if /^\s*$/ || /^\s*#/;
|
next if /^\s*$/ || /^\s*#/;
|
||||||
parse_sendmail_alias($_);
|
$s .= $_, next if $s =~ s/\\$// || s/^\s+//;
|
||||||
|
parse_sendmail_alias($s) if $s;
|
||||||
|
$s = $_;
|
||||||
}
|
}
|
||||||
|
$s =~ s/\\$//; # silently tolerate stray '\' on last line
|
||||||
|
parse_sendmail_alias($s) if $s;
|
||||||
}
|
}
|
||||||
|
|
||||||
my %parse_alias = (
|
my %parse_alias = (
|
||||||
|
Loading…
Reference in New Issue
Block a user