From: Junio C Hamano <gitster@pobox.com>
To: git@vger.kernel.org
Cc: Jeff King <peff@peff.net>
Subject: Re: [PATCH 2/2] send-email: rfc2047-quote subject lines with non-ascii characters
Date: Wed, 21 May 2008 12:39:44 -0700 [thread overview]
Message-ID: <7vve171m67.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <20080328212900.GB9656@coredump.intra.peff.net> (Jeff King's message of "Fri, 28 Mar 2008 17:29:01 -0400")
Last night I was going through old mail-logs and found this and another
one that this is a follow-up to, which I think are still needed. Does
anybody see anything wrong with them?
Jeff King <peff@peff.net> writes:
> We always use 'utf-8' as the encoding, since we currently
> have no way of getting the information from the user.
>
> This also refactors the quoting of recipient names, since
> both processes can share the rfc2047 quoting code.
>
> Signed-off-by: Jeff King <peff@peff.net>
> ---
> git-send-email.perl | 19 +++++++++++++++++--
> t/t9001-send-email.sh | 15 +++++++++++++++
> 2 files changed, 32 insertions(+), 2 deletions(-)
>
> diff --git a/git-send-email.perl b/git-send-email.perl
> index 7c4f06c..d0f9d4a 100755
> --- a/git-send-email.perl
> +++ b/git-send-email.perl
> @@ -536,6 +536,14 @@ EOT
> if (!$in_body && /^MIME-Version:/i) {
> $need_8bit_cte = 0;
> }
> + if (!$in_body && /^Subject: ?(.*)/i) {
> + my $subject = $1;
> + $_ = "Subject: " .
> + ($subject =~ /[^[:ascii:]]/ ?
> + quote_rfc2047($subject) :
> + $subject) .
> + "\n";
> + }
> print C2 $_;
> }
> close(C);
> @@ -626,6 +634,14 @@ sub unquote_rfc2047 {
> return wantarray ? ($_, $encoding) : $_;
> }
>
> +sub quote_rfc2047 {
> + local $_ = shift;
> + my $encoding = shift || 'utf-8';
> + s/([^-a-zA-Z0-9!*+\/])/sprintf("=%02X", ord($1))/eg;
> + s/(.*)/=\?$encoding\?q\?$1\?=/;
> + return $_;
> +}
> +
> # use the simplest quoting being able to handle the recipient
> sub sanitize_address
> {
> @@ -643,8 +659,7 @@ sub sanitize_address
>
> # rfc2047 is needed if a non-ascii char is included
> if ($recipient_name =~ /[^[:ascii:]]/) {
> - $recipient_name =~ s/([^-a-zA-Z0-9!*+\/])/sprintf("=%02X", ord($1))/eg;
> - $recipient_name =~ s/(.*)/=\?utf-8\?q\?$1\?=/;
> + $recipient_name = quote_rfc2047($recipient_name);
> }
>
> # double quotes are needed if specials or CTLs are included
> diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh
> index e222c49..a4bcd28 100755
> --- a/t/t9001-send-email.sh
> +++ b/t/t9001-send-email.sh
> @@ -210,4 +210,19 @@ test_expect_success '--compose respects user mime type' '
> ! grep "^Content-Type: text/plain; charset=utf-8" msgtxt1
> '
>
> +test_expect_success '--compose adds MIME for utf8 subject' '
> + clean_fake_sendmail &&
> + echo y | \
> + GIT_EDITOR=$(pwd)/fake-editor \
> + GIT_SEND_EMAIL_NOTTY=1 \
> + git send-email \
> + --compose --subject utf8-sübjëct \
> + --from="Example <nobody@example.com>" \
> + --to=nobody@example.com \
> + --smtp-server="$(pwd)/fake.sendmail" \
> + $patches &&
> + grep "^fake edit" msgtxt1 &&
> + grep "^Subject: =?utf-8?q?utf8-s=C3=BCbj=C3=ABct?=" msgtxt1
> +'
> +
> test_done
> --
> 1.5.5.rc1.141.g50ecd.dirty
next prev parent reply other threads:[~2008-05-21 19:41 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-28 6:30 [ANNOUNCE] GIT 1.5.5-rc2 Junio C Hamano
2008-03-28 18:13 ` Jeff King
2008-03-28 21:05 ` Junio C Hamano
2008-03-28 21:23 ` Jeff King
2008-03-28 21:27 ` Jeff King
2008-03-28 21:28 ` [PATCH 1/2] send-email: specify content-type of --compose body Jeff King
2008-03-28 21:29 ` [PATCH 2/2] send-email: rfc2047-quote subject lines with non-ascii characters Jeff King
2008-03-29 7:19 ` Robin Rosenberg
2008-03-29 7:22 ` Jeff King
2008-03-29 8:41 ` Robin Rosenberg
2008-03-29 8:49 ` Jeff King
2008-03-29 9:02 ` Robin Rosenberg
2008-03-29 9:11 ` Jeff King
2008-03-29 9:39 ` Robin Rosenberg
2008-03-29 9:43 ` Jeff King
2008-03-29 12:54 ` Robin Rosenberg
2008-03-29 21:45 ` Jeff King
2008-03-30 3:40 ` Sam Vilain
2008-03-30 4:39 ` Jeff King
2008-03-30 23:47 ` Junio C Hamano
2008-03-29 8:44 ` Robin Rosenberg
2008-03-29 8:53 ` Jeff King
2008-03-29 9:38 ` Robin Rosenberg
2008-03-29 9:52 ` Jeff King
2008-03-29 12:54 ` Robin Rosenberg
2008-03-29 21:18 ` Jeff King
2008-03-29 21:43 ` Robin Rosenberg
2008-03-29 22:00 ` Jeff King
2008-03-30 2:12 ` Sam Vilain
2008-03-30 4:31 ` Jeff King
2008-05-21 19:39 ` Junio C Hamano [this message]
2008-05-21 19:47 ` Jeff King
[not found] <7caf19ae394accab538d2f94953bb62b55a2c79f.1206486012.git.peff@peff.net>
2008-03-25 23:03 ` Jeff King
2008-03-26 5:59 ` Teemu Likonen
2008-03-26 6:20 ` Jeff King
2008-03-26 8:30 ` Teemu Likonen
2008-03-26 8:39 ` Jeff King
2008-03-26 9:23 ` Teemu Likonen
2008-03-26 9:32 ` Teemu Likonen
2008-03-26 9:35 ` Jeff King
2008-03-26 9:33 ` Jeff King
2008-03-27 7:38 ` Jeff King
2008-03-27 19:44 ` Todd Zullinger
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=7vve171m67.fsf@gitster.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.