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:

committed by
Junio C Hamano

parent
22e3b46ff9
commit
09f1157bbf
@ -487,6 +487,29 @@ sub split_addrs {
|
|||||||
}
|
}
|
||||||
|
|
||||||
my %aliases;
|
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 = (
|
my %parse_alias = (
|
||||||
# multiline formats can be supported in the future
|
# multiline formats can be supported in the future
|
||||||
mutt => sub { my $fh = shift; while (<$fh>) {
|
mutt => sub { my $fh = shift; while (<$fh>) {
|
||||||
@ -515,20 +538,7 @@ my %parse_alias = (
|
|||||||
$aliases{$alias} = [ split_addrs($addr) ];
|
$aliases{$alias} = [ split_addrs($addr) ];
|
||||||
}
|
}
|
||||||
} },
|
} },
|
||||||
|
sendmail => \&parse_sendmail_aliases,
|
||||||
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";
|
|
||||||
}}},
|
|
||||||
|
|
||||||
gnus => sub { my $fh = shift; while (<$fh>) {
|
gnus => sub { my $fh = shift; while (<$fh>) {
|
||||||
if (/\(define-mail-alias\s+"(\S+?)"\s+"(\S+?)"\)/) {
|
if (/\(define-mail-alias\s+"(\S+?)"\s+"(\S+?)"\)/) {
|
||||||
$aliases{$1} = [ $2 ];
|
$aliases{$1} = [ $2 ];
|
||||||
|
Reference in New Issue
Block a user