On Mon, Nov 19, 2012 at 03:57:36PM -0800, Junio C Hamano wrote:
Felipe Contreras [off-list ref] writes:
quoted
On Mon, Nov 19, 2012 at 11:58 PM, Krzysztof Mazur [off-list ref] wrote:
quoted
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -924,6 +924,10 @@ sub quote_subject {
# use the simplest quoting being able to handle the recipient
sub sanitize_address {
my ($recipient) = @_;
+
+ # remove garbage after email address
+ $recipient =~ s/(.*>).*$/$1/;
+
Looks fine, but I would do s/(.*?>)(.*)$/$1/, so that 'test
[off-list ref] <#comment>' gets the second comment removed.
Yeah, but do you need to capture the second group? IOW, like
"s/(.*?>).*$/$1/" perhaps?
I also thought about removing everything after first ">", but I will
not work for addresses like:
Cc: "foo >" <redacted> #v3.4 v3.5 v3.6
What about:
$recipient =~ s/(.*<[^@]*@[^]]*>).*$/$1/;
or even
diff --git a/git-send-email.perl b/git-send-email.perl
index 9840d0a..b988c57 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -925,8 +925,11 @@ sub quote_subject {
sub sanitize_address {
my ($recipient) = @_;
+ my $local_part_regexp = qr/[^<>"\s@]+/;
+ my $domain_regexp = qr/[^.<>"\s@]+(?:\.[^.<>"\s@]+)+/;
+
# remove garbage after email address
- $recipient =~ s/(.*>).*$/$1/;
+ $recipient =~ s/(.*<$local_part_regexp\@$domain_regexp>).*$/$1/;
my ($recipient_name, $recipient_addr) = ($recipient =~ /^(.*?)\s*(<.*)/);
which uses regex used by 99% accurate version of extract_valid_address().
Krzysiek