diff options
| -rwxr-xr-x | git-send-email.perl | 9 | ||||
| -rwxr-xr-x | t/t9001-send-email.sh | 15 | 
2 files changed, 22 insertions, 2 deletions
diff --git a/git-send-email.perl b/git-send-email.perl index e1e9b1460c..6c140e4ef6 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -493,8 +493,13 @@ my %parse_alias = (  		if (/^\s*alias\s+(?:-group\s+\S+\s+)*(\S+)\s+(.*)$/) {  			my ($alias, $addr) = ($1, $2);  			$addr =~ s/#.*$//; # mutt allows # comments -			 # commas delimit multiple addresses -			$aliases{$alias} = [ split_addrs($addr) ]; +			# commas delimit multiple addresses +			my @addr = split_addrs($addr); + +			# quotes may be escaped in the file, +			# unescape them so we do not double-escape them later. +			s/\\"/"/g foreach @addr; +			$aliases{$alias} = \@addr  		}}},  	mailrc => sub { my $fh = shift; while (<$fh>) {  		if (/^alias\s+(\S+)\s+(.*)$/) { diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh index 7be14a4e37..ce94c5a4cb 100755 --- a/t/t9001-send-email.sh +++ b/t/t9001-send-email.sh @@ -1521,6 +1521,21 @@ test_expect_success $PREREQ 'cccover adds Cc to all mail' '  	test_cover_addresses "Cc"  ' +test_expect_success $PREREQ 'escaped quotes in sendemail.aliasfiletype=mutt' ' +	clean_fake_sendmail && +	echo "alias sbd \\\"Dot U. Sir\\\" <somebody@example.org>" >.mutt && +	git config --replace-all sendemail.aliasesfile "$(pwd)/.mutt" && +	git config sendemail.aliasfiletype mutt && +	git send-email \ +		--from="Example <nobody@example.com>" \ +		--to=sbd \ +		--smtp-server="$(pwd)/fake.sendmail" \ +		outdir/0001-*.patch \ +		2>errors >out && +	grep "^!somebody@example\.org!$" commandline1 && +	grep -F "To: \"Dot U. Sir\" <somebody@example.org>" out +' +  test_expect_success $PREREQ 'sendemail.aliasfiletype=mailrc' '  	clean_fake_sendmail &&  	echo "alias sbd  somebody@example.org" >.mailrc &&  | 
