Eric Wong <normalperson@xxxxxxxx> writes: > mutt saves aliases with escaped quotes in the form of: > > alias dot \"Dot U. Sir\" <somebody@xxxxxxxxxxx> > > When we pass through our sanitize_address routine, > we end up with double-escaping: > > To: "\\\"Dot U. Sir\\\" <somebody@xxxxxxxxxxx> > > 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@xxxxxxxxxxxxxxxxxxxxxxx> > Cc: Matthieu Moy <Matthieu.Moy@xxxxxxx> > --- Forgot to sign-off (I could forge it, though, but anyway)? > Matthieu Moy <Matthieu.Moy@xxxxxxxxxxxxxxx> 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@xxxxxxxxxxx>" >.mutt && > + git config --replace-all sendemail.aliasesfile "$(pwd)/.mutt" && > + git config sendemail.aliasfiletype mutt && > + git send-email \ > + --from="Example <nobody@xxxxxxxxxxx>" \ > + --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@xxxxxxxxxxx>" out > +' > + > test_expect_success $PREREQ 'sendemail.aliasfiletype=mailrc' ' > clean_fake_sendmail && > echo "alias sbd somebody@xxxxxxxxxxx" >.mailrc && -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html