1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-05-05 14:06:15 +02:00

send-email: refactor sendmail aliases parser

The sendmail aliases parser inlined into %parse_alias is already
uncomfortably large and is expected to grow as additional functionality
is implemented, so extract it to improve manageability.

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:27 -04:00 committed by Junio C Hamano
parent 22e3b46ff9
commit 09f1157bbf

View File

@ -487,6 +487,29 @@ sub split_addrs {
}
my %aliases;
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) ];
} else {
print STDERR "warning: sendmail line is not recognized: $_\n";
}
}
sub parse_sendmail_aliases {
my $fh = shift;
while (<$fh>) {
if (/^\s*(?:#.*)?$/) { next; }
parse_sendmail_alias($_);
}
}
my %parse_alias = (
# multiline formats can be supported in the future
mutt => sub { my $fh = shift; while (<$fh>) {
@ -515,20 +538,7 @@ sub split_addrs {
$aliases{$alias} = [ split_addrs($addr) ];
}
} },
sendmail => sub { my $fh = shift; while (<$fh>) {
if (/^\s*(?:#.*)?$/) {
} elsif (/"/) {
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) ];
} else {
print STDERR "warning: sendmail line is not recognized: $_\n";
}}},
sendmail => \&parse_sendmail_aliases,
gnus => sub { my $fh = shift; while (<$fh>) {
if (/\(define-mail-alias\s+"(\S+?)"\s+"(\S+?)"\)/) {
$aliases{$1} = [ $2 ];