git-send-email: handle email address with quoted comma
Correctly handle email addresses containing quoted commas, e.g. "Zhu, Yi" <yi.zhu@intel.com>, "Li, Shaohua" <shaohua.li@intel.com> The commas inside the double quotes are not separators. Signed-off-by: Wu Fengguang <fengguang.wu@intel.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
04c8ce9c1c
commit
0e73b3ee6c
|
@ -20,6 +20,7 @@ use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
use Term::ReadLine;
|
use Term::ReadLine;
|
||||||
use Getopt::Long;
|
use Getopt::Long;
|
||||||
|
use Text::ParseWords;
|
||||||
use Data::Dumper;
|
use Data::Dumper;
|
||||||
use Term::ANSIColor;
|
use Term::ANSIColor;
|
||||||
use Git;
|
use Git;
|
||||||
|
@ -363,6 +364,10 @@ foreach my $entry (@bcclist) {
|
||||||
die "Comma in --bcclist entry: $entry'\n" unless $entry !~ m/,/;
|
die "Comma in --bcclist entry: $entry'\n" unless $entry !~ m/,/;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub split_addrs {
|
||||||
|
return parse_line('\s*,\s*', 1, @_);
|
||||||
|
}
|
||||||
|
|
||||||
my %aliases;
|
my %aliases;
|
||||||
my %parse_alias = (
|
my %parse_alias = (
|
||||||
# multiline formats can be supported in the future
|
# multiline formats can be supported in the future
|
||||||
|
@ -371,7 +376,7 @@ my %parse_alias = (
|
||||||
my ($alias, $addr) = ($1, $2);
|
my ($alias, $addr) = ($1, $2);
|
||||||
$addr =~ s/#.*$//; # mutt allows # comments
|
$addr =~ s/#.*$//; # mutt allows # comments
|
||||||
# commas delimit multiple addresses
|
# commas delimit multiple addresses
|
||||||
$aliases{$alias} = [ split(/\s*,\s*/, $addr) ];
|
$aliases{$alias} = [ split_addrs($addr) ];
|
||||||
}}},
|
}}},
|
||||||
mailrc => sub { my $fh = shift; while (<$fh>) {
|
mailrc => sub { my $fh = shift; while (<$fh>) {
|
||||||
if (/^alias\s+(\S+)\s+(.*)$/) {
|
if (/^alias\s+(\S+)\s+(.*)$/) {
|
||||||
|
@ -380,7 +385,7 @@ my %parse_alias = (
|
||||||
}}},
|
}}},
|
||||||
pine => sub { my $fh = shift; while (<$fh>) {
|
pine => sub { my $fh = shift; while (<$fh>) {
|
||||||
if (/^(\S+)\t.*\t(.*)$/) {
|
if (/^(\S+)\t.*\t(.*)$/) {
|
||||||
$aliases{$1} = [ split(/\s*,\s*/, $2) ];
|
$aliases{$1} = [ split_addrs($2) ];
|
||||||
}}},
|
}}},
|
||||||
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+?)"\)/) {
|
||||||
|
@ -458,7 +463,7 @@ if (!@to) {
|
||||||
}
|
}
|
||||||
|
|
||||||
my $to = $_;
|
my $to = $_;
|
||||||
push @to, split /,\s*/, $to;
|
push @to, split_addrs($to);
|
||||||
$prompting++;
|
$prompting++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue