user/dev discussion of public-inbox itself
 help / color / mirror / code / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* [PATCH] view: safer and optional quoting for --in-reply-to arg
@ 2016-06-25 21:36  7% Eric Wong
  0 siblings, 0 replies; 1+ results
From: Eric Wong @ 2016-06-25 21:36 UTC (permalink / raw)
  To: meta

Angle brackets around the --in-reply-to= arg for git send-email
has been optional since git v1.5.3.2, so strip them and make the
command-line argument easier-to-type.
---
 lib/PublicInbox/View.pm | 11 ++++++++++-
 t/view.t                | 14 +++++++++++++-
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm
index 30d8e3e..38e35bf 100644
--- a/lib/PublicInbox/View.pm
+++ b/lib/PublicInbox/View.pm
@@ -455,6 +455,15 @@ sub _parent_headers {
 	$rv;
 }
 
+sub squote_maybe ($) {
+	my ($val) = @_;
+	if ($val =~ m{([^\w@\./,\%\+\-])}) {
+		$val =~ s/(['!])/'\\$1'/g; # '!' for csh
+		return "'$val'";
+	}
+	$val;
+}
+
 sub mailto_arg_link {
 	my ($hdr) = @_;
 	my %cc; # everyone else
@@ -475,7 +484,7 @@ sub mailto_arg_link {
 	my $subj = $hdr->header('Subject') || '';
 	$subj = "Re: $subj" unless $subj =~ /\bRe:/i;
 	my $mid = $hdr->header_raw('Message-ID');
-	push @arg, "--in-reply-to='" . ascii_html($mid) . "'";
+	push @arg, '--in-reply-to='.ascii_html(squote_maybe(mid_clean($mid)));
 	my $irt = uri_escape_utf8($mid);
 	delete $cc{$to};
 	push @arg, '--to=' . ascii_html($to);
diff --git a/t/view.t b/t/view.t
index 4ce3c77..8a898fe 100644
--- a/t/view.t
+++ b/t/view.t
@@ -4,8 +4,20 @@ use strict;
 use warnings;
 use Test::More;
 use Email::MIME;
-use PublicInbox::View;
 use Plack::Util;
+use_ok 'PublicInbox::View';
+
+my @q = (
+	'foo@bar', 'foo@bar',
+	'a b', "'a b'",
+	"a'b", "'a'\\''b'",
+);
+while (@q) {
+	my $input = shift @q;
+	my $expect = shift @q;
+	my $res = PublicInbox::View::squote_maybe($input);
+	is($res, $expect, "quote $input => $res");
+}
 
 # FIXME: make this test less fragile
 my $ctx = {
-- 
EW


^ permalink raw reply related	[relevance 7%]

Results 1-1 of 1 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2016-06-25 21:36  7% [PATCH] view: safer and optional quoting for --in-reply-to arg Eric Wong

Code repositories for project(s) associated with this public inbox

	https://80x24.org/public-inbox.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).