Re: [RFC] git-send-email: do not double-escape quotes from mutt
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Dec 28, 2015, 22:34 UTC
- Message-ID
- <xmqqlh8ejj79.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <20151227020810.1450-1-normalperson@yhbt.net>
Eric Wong <normalperson@yhbt.net> writes:
Show 10 quoted lines
> - # 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?
Show 29 quoted lines
> }}},
> 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 &&