threads / rfc / 39632

[RFC] send-email quote issues

Subject: [RFC] send-email quote issues

## tl;dr

5 messages between Jun 15, 2015 and Jun 15, 2015.

replies: 4people: 2as markdown or json

Remi Lespinet· Jun 15, 2015, 11:16 UTC · lore
Hi,

I'm currently working on git send-email to allow passing names containing commas. I would like to specify that the comma shouldn't be interpreted as a delimiter when there's quotes around:

  "Jane, Katarina Doe" <jdoe@example.com>

This changes the behavior of the double quote. For example when passing:

  --to='"Jane" Doe <jdoe@example.com>'
to git send-email, the line produced was:
  To: "\"Jane\" Doe" <jdoe@example.com>
With this modification, it would be:
  To: Jane Doe <jdoe@example.com>
    or
  To: "Jane Doe" <jdoe@example.com>

And this will not be possible to use quote in a name anymore. Is this a problem ?

Currently, git send-email contains a function which splits at commas with respect to quotes (parse_address_line introduced by 5012699d9840fe34fe0838ea0d529c2f32f76b82). It is used to parse user input when there's no recipient specified. I would like to use this function to parse --to, --cc and --bcc options, but the execution of this function depends on whether the user has the Perl library Mail::Address or not. This introduce a change in the behaviour:

Output1 represents lines produced with the Mail::Address library Output2 represents lines produced without the Mail::Address library

 1) Simple quote are not interpreted the same way:
   Input : 'Doe, "Jane' <jdoe@example.com>
      Output1 : 'Doe,
                "\" Jane'" <jdoe@example.com>
      Output2 : "'Doe, \"Jane'" <jdoe@example.com>
   Input : 'Jane 'Doe' <jdoe@example.com>
      Output1 : 'Jane 'Doe' <jdoe@example.com>
      Output2 : ERROR
 2) Mail::Address adds a space when using a quote or a backslash in a name
   Input : "Jane Do"e <jdoe@example.com>
      Output1 : "\"Jane Do\" e" <jdoe@example.com>
      Output2 : "\"Jane Do\"e" <jdoe@example.com>
   Input : \Jane Doe <jdoe@example.com>
      Output1 : "\ Jane Doe" <jdoe@example.com>
      Output2 : "\Jane Doe" <jdoe@example.com>
 3) Mail::Address works when quote is not closed
   Input : "Jane Doe <jdoe@example.com>
      Output1 : "\" Jane Doe" <jdoe@example.com>
      Output2 : ERROR
 4) Mail::Address splits the string when there's no comma
   Input : Jane "Doe <jdoe@example.com>"
      Output1 : Jane,
   	"\"Doe" <jdoe@example.com>
      Output2 : "Jane \"Doe" <jdoe@example.com>
The following doesn't work for both:
   Input : "Jane Doe <jdoe@example.com>" <jdoe@example.com>
      Output1 : ERROR
      Output2 : ERROR
Matthieu Moy· Jun 15, 2015, 11:32 UTC · re: Remi Lespinet · lore

Re: [RFC] send-email quote issues

Remi Lespinet <remi.lespinet@ensimag.grenoble-inp.fr> writes:
> Currently, git send-email contains a function which splits at commas
> with respect to quotes (parse_address_line introduced by
> 5012699d9840fe34fe0838ea0d529c2f32f76b82).

It seems I had missed this one, but indeed, it should probably be used instead of split_at_commas in your series.

Show 5 quoted lines
> It is used to parse user input when there's no recipient specified. I
> would like to use this function to parse --to, --cc and --bcc options,
> but the execution of this function depends on whether the user has the
> Perl library Mail::Address or not. This introduce a change in the
> behaviour:

I would say that using parse_address_line is good for consistancy in Git anyway. If the behavior of parse_address_line is broken on some corner-cases, then it should be fixed anyway.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
Remi Lespinet· Jun 15, 2015, 13:03 UTC · re: Matthieu Moy · lore
Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> writes
> I would say that using parse_address_line is good for consistancy in Git 
> anyway. If the behavior of parse_address_line is broken on some 
> corner-cases, then it should be fixed anyway. 

Ok, but I don't know what fixed means in these particular cases. Actually the problem when we have a quote in a name is: Is this a delimiter or is this an ascii char?

Currently the problem is solved by saying : it's an ascii char unless there is two quotes aroung all the name (modulo minor things). So if I write:

--to='"Jane, Kararina" Doe <jdoe@example.com>'

they are considered characters. Which means that this is different than:

--to='"Jane, Kararina Doe" <jdoe@example.com>'
Is this expected?
Matthieu Moy· Jun 15, 2015, 13:52 UTC · re: Remi Lespinet · lore

Re: [RFC] send-email quote issues

Remi Lespinet <remi.lespinet@ensimag.grenoble-inp.fr> writes:
> Ok, but I don't know what fixed means in these particular cases.
> Actually the problem when we have a quote in a name is: Is this a
> delimiter or is this an ascii char?

To me, the answer should be: do whatever the RFC says in email headers. I'd expect anything that works in the To: header to work in the --to option of git send-email.

If I read correctly, this is address-list in RFC 2822.

Now, when the address list is invalid wrt the RFC, we can either reject it or try to guess.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
Remi Lespinet· Jun 15, 2015, 14:10 UTC · re: Matthieu Moy · lore
Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> writes
> To me, the answer should be: do whatever the RFC says in email headers. 
> I'd expect anything that works in the To: header to work in the --to 
> option of git send-email. 
Ok sounds good to me !

← back to recent threads