From: Eric Wong <normalperson@yhbt•net>
To: Junio C Hamano <gitster@pobox•com>
Cc: git@vger•kernel.org,
Remi Lespinet <remi.lespinet@ensimag•grenoble-inp.fr>,
Matthieu Moy <Matthieu.Moy@grenoble-inp•fr>
Subject: [PATCH v2] git-send-email: do not double-escape quotes from mutt
Date: Mon, 4 Jan 2016 20:53:30 +0000 [thread overview]
Message-ID: <20160104205330.GA6658@dcvr.yhbt.net> (raw)
In-Reply-To: <vpqsi2dxlht.fsf@anie.imag.fr>
mutt saves aliases with escaped quotes in the form of:
alias dot \"Dot U. Sir\" <somebody@example•org>
When we pass through our sanitize_address routine,
we end up with double-escaping:
To: "\\\"Dot U. Sir\\\" <somebody@example•org>
Remove the escaping in mutt only for now, as I am not sure
if other mailers can do this or if this is better fixed in
sanitize_address.
Cc: Remi Lespinet <remi.lespinet@ensimag•grenoble-inp.fr>
Cc: Matthieu Moy <Matthieu.Moy@imag•fr>
---
Matthieu Moy <Matthieu.Moy@grenoble-inp•fr> wrote:
> I think you meant "remove the escaping" or simply "unescape", not
> "remove them", which I'd understand as "remove the quotes".
>
> Other than that, the patch looks good to me, including your proposed
> fixup:
Thanks, updated the comment and squashed my fixup
> I wouldn't worry too much about corner-cases, but perhaps some people do
> use escaped quotes inside escaped quotes. I'd say they get what they
> deserve ;-).
Agreed :)
git-send-email.perl | 9 +++++++--
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 6caa5b5..d356901 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -524,8 +524,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 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 &&
--
EW
next prev parent reply other threads:[~2016-01-04 20:53 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-27 2:08 [RFC] git-send-email: do not double-escape quotes from mutt Eric Wong
2015-12-28 22:34 ` Junio C Hamano
2015-12-29 2:49 ` Eric Wong
2016-01-04 18:11 ` Matthieu Moy
2016-01-04 20:53 ` Eric Wong [this message]
2016-01-04 21:35 ` [PATCH v2] " Junio C Hamano
2016-01-04 22:01 ` Eric Wong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160104205330.GA6658@dcvr.yhbt.net \
--to=normalperson@yhbt$(echo .)net \
--cc=Matthieu.Moy@grenoble-inp$(echo .)fr \
--cc=git@vger$(echo .)kernel.org \
--cc=gitster@pobox$(echo .)com \
--cc=remi.lespinet@ensimag$(echo .)grenoble-inp.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox