Re: [RFC] git-send-email: do not double-escape quotes from mutt
From: Junio C Hamano <hidden>
Date: 2016-06-15 23:07:34
Eric Wong [off-list ref] writes:
- # 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,
+ # remove them if paired so we do not
+ # double-escape them later.
+ s/^\\"(.*)\\"/"$1"/g foreach @addr;
+ $aliases{$alias} = \@addrCan one address have two or more double-quoted string pieces in it? If that is possible, (.*) above might want to become (.*?) or even ([^"]*) to make it less greedy, perhaps?
quoted hunk
}}}, 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 3c49536..834d91a 100755 --- a/t/t9001-send-email.sh +++ b/t/t9001-send-email.sh@@ -1527,6 +1527,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 &&