1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-05-05 22:16:12 +02:00

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:
Eric Sunshine 2015-05-31 18:29:29 -04:00 committed by Junio C Hamano
parent 020be85f51
commit 2532dd0605
2 changed files with 7 additions and 5 deletions

View File

@ -394,8 +394,6 @@ described below:
sendmail;;
* Quoted aliases and quoted addresses are not supported: lines that
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
supported.
* File inclusion (`:include: /path/name`) is not supported.

View File

@ -492,8 +492,6 @@ sub parse_sendmail_alias {
local $_ = shift;
if (/"/) {
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*(.+)$/) {
my ($alias, $addr) = ($1, $2);
$aliases{$alias} = [ split_addrs($addr) ];
@ -504,10 +502,16 @@ sub parse_sendmail_alias {
sub parse_sendmail_aliases {
my $fh = shift;
my $s = '';
while (<$fh>) {
chomp;
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 = (