From: Wu Fengguang Date: Fri, 19 Dec 2008 08:10:10 +0000 (+0800) Subject: git-send-email: handle email address with quoted comma X-Git-Tag: v1.6.0.6~5 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=0e73b3ee6ca95e1db2fe801d2b8544f4c27991df;p=git.git git-send-email: handle email address with quoted comma Correctly handle email addresses containing quoted commas, e.g. "Zhu, Yi" , "Li, Shaohua" The commas inside the double quotes are not separators. Signed-off-by: Wu Fengguang Signed-off-by: Junio C Hamano --- diff --git a/git-send-email.perl b/git-send-email.perl index 18529c76e..449d938ba 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -20,6 +20,7 @@ use strict; use warnings; use Term::ReadLine; use Getopt::Long; +use Text::ParseWords; use Data::Dumper; use Term::ANSIColor; use Git; @@ -363,6 +364,10 @@ foreach my $entry (@bcclist) { die "Comma in --bcclist entry: $entry'\n" unless $entry !~ m/,/; } +sub split_addrs { + return parse_line('\s*,\s*', 1, @_); +} + my %aliases; my %parse_alias = ( # multiline formats can be supported in the future @@ -371,7 +376,7 @@ my %parse_alias = ( my ($alias, $addr) = ($1, $2); $addr =~ s/#.*$//; # mutt allows # comments # commas delimit multiple addresses - $aliases{$alias} = [ split(/\s*,\s*/, $addr) ]; + $aliases{$alias} = [ split_addrs($addr) ]; }}}, mailrc => sub { my $fh = shift; while (<$fh>) { if (/^alias\s+(\S+)\s+(.*)$/) { @@ -380,7 +385,7 @@ my %parse_alias = ( }}}, pine => sub { my $fh = shift; while (<$fh>) { if (/^(\S+)\t.*\t(.*)$/) { - $aliases{$1} = [ split(/\s*,\s*/, $2) ]; + $aliases{$1} = [ split_addrs($2) ]; }}}, gnus => sub { my $fh = shift; while (<$fh>) { if (/\(define-mail-alias\s+"(\S+?)"\s+"(\S+?)"\)/) { @@ -458,7 +463,7 @@ if (!@to) { } my $to = $_; - push @to, split /,\s*/, $to; + push @to, split_addrs($to); $prompting++; }