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>
Eric Sunshine committed
May 31, 2015 at 18:29 UTC
09f1157bbf5daa8a4fd8de1d25edbb8961d44521
1 file changed
+24
-14
git-send-email.perl
+24
-14
@@ -487,6 +487,29 @@ sub split_addrs {
487
}
488
489
my %aliases;
490
+
491
+sub parse_sendmail_alias {
492
+ local $_ = shift;
493
+ if (/"/) {
494
+ print STDERR "warning: sendmail alias with quotes is not supported: $_\n";
495
+ } elsif (/^\s|\\$/) {
496
+ print STDERR "warning: sendmail continuation line is not supported: $_\n";
497
+ } elsif (/^(\S+?)\s*:\s*(.+)$/) {
498
+ my ($alias, $addr) = ($1, $2);
499
+ $aliases{$alias} = [ split_addrs($addr) ];
500
+ } else {
501
+ print STDERR "warning: sendmail line is not recognized: $_\n";
502
+ }
503
+}
504
+
505
+sub parse_sendmail_aliases {
506
+ my $fh = shift;
507
+ while (<$fh>) {
508
+ if (/^\s*(?:#.*)?$/) { next; }
509
+ parse_sendmail_alias($_);
510
+ }
511
+}
512
+
513
my %parse_alias = (
514
# multiline formats can be supported in the future
515
mutt => sub { my $fh = shift; while (<$fh>) {
@@ -515,20 +538,7 @@ my %parse_alias = (
538
$aliases{$alias} = [ split_addrs($addr) ];
539
}
540
} },
518
-
519
- sendmail => sub { my $fh = shift; while (<$fh>) {
520
- if (/^\s*(?:#.*)?$/) {
521
- } elsif (/"/) {
522
- print STDERR "warning: sendmail alias with quotes is not supported: $_\n";
523
- } elsif (/^\s|\\$/) {
524
- print STDERR "warning: sendmail continuation line is not supported: $_\n";
525
- } elsif (/^(\S+?)\s*:\s*(.+)$/) {
526
- my ($alias, $addr) = ($1, $2);
527
- $aliases{$alias} = [ split_addrs($addr) ];
528
- } else {
529
- print STDERR "warning: sendmail line is not recognized: $_\n";
530
- }}},
531
-
541
+ sendmail => \&parse_sendmail_aliases,
542
gnus => sub { my $fh = shift; while (<$fh>) {
543
if (/\(define-mail-alias\s+"(\S+?)"\s+"(\S+?)"\)/) {
544
$aliases{$1} = [ $2 ];