X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scripts%2Fprocess;h=3da8f983c4a13ea773fe808a6f8136018b918a9d;hb=210f625e6e6b4cbe1065f35d9eb0bdc73563969c;hp=228d28ad32fc6166e8c52b9cd025aa0fdbfe8d32;hpb=5a93a371c0c14c494f28c226d3be1ff6b0aff367;p=debbugs.git diff --git a/scripts/process b/scripts/process index 228d28a..3da8f98 100755 --- a/scripts/process +++ b/scripts/process @@ -7,7 +7,6 @@ use warnings; use strict; -use locale; use POSIX qw(strftime locale_h); setlocale(LC_TIME, "C"); @@ -35,6 +34,7 @@ use Debbugs::Control qw(append_action_to_log); use Debbugs::Control::Service qw(valid_control control_line); use Debbugs::Recipients qw(determine_recipients); use Encode qw(encode_utf8 decode); +use List::AllUtils qw(first uniqnum); =head1 NAME @@ -180,7 +180,9 @@ for my $hdr (@headerlines) { $_ = $hdr; s/\n\s/ /g; finish() if m/^x-loop: (\S+)$/i && $1 eq "$gMaintainerEmail"; - my $ins = !m/^(?:(?:subject|reply-to|return-path|mail-followup-to): + my $ins = !m/^(?:(?:subject|reply-to|return-path| + mail-followup-to| + references): |From\s|X-Debbugs-)/xi; $fwd .= encode_utf8($hdr)."\n" if $ins; # print {$debugfh} ">$_<\n"; @@ -225,7 +227,10 @@ for my $phline (@bodylines) # Fixes #488554 $phline =~ s/\xef\xbb\xbf//g; $phline =~ s/\N{U+FEFF}//g; - last if $phline !~ m/^([\w-]+):\s*(\S.*)/; + last if $phline !~ m/^([\w-]+): # psuedoheader + (?:\s|\N{U+00A0})* # zero or more spaces, including + # non-breaking space + (\S.*)/x; # pseudoheader value my ($fn, $fv) = ($1, $2); $fv =~ s/\s*$//; # pluralize tag/usertag @@ -308,7 +313,7 @@ if (defined $tryref) { $ref= $tryref; } else { &sendmessage(create_mime_message( - [From => "$gMaintainerEmail ($gProject $gBug Tracking System)", + [From => qq("$gProject $gBug Tracking System" <$gMaintainerEmail>), To => $replyto, Subject => "Unknown problem report $gBug#$tryref ($subject)", 'Message-ID' => "", @@ -399,7 +404,7 @@ if ($codeletter eq 'D' || $codeletter eq 'F') } if ($ref<0) { &sendmessage(create_mime_message( - [From => "$gMaintainerEmail ($gProject $gBug Tracking System)", + [From => qq("$gProject $gBug Tracking System" <$gMaintainerEmail>), To => $replyto, Subject => "Message with no $gBug number ignored by $receivedat ($subject)", 'Message-ID' => "", @@ -491,7 +496,7 @@ if ($codeletter eq 'D' || $codeletter eq 'F') &htmllog("Reply","sent",$replyto,"You have marked $gBug as forwarded."); &sendmessage(create_mime_message( [@common_headers, - From => "$gMaintainerEmail ($gProject $gBug Tracking System)", + From => qq("$gProject $gBug Tracking System" <$gMaintainerEmail>), To => "$replyto", Subject => "$gBug#$ref: marked as forwarded ($data->{subject})", "Message-ID" => "", @@ -516,7 +521,7 @@ if ($codeletter eq 'D' || $codeletter eq 'F') &htmllog("Reply","sent",$replyto,"You have taken responsibility."); &sendmessage(create_mime_message( [@common_headers, - From => "$gMaintainerEmail ($gProject $gBug Tracking System)", + From => qq("$gProject $gBug Tracking System" <$gMaintainerEmail>), To => $replyto, Subject => "$gBug#$ref: marked as done ($data->{subject})", "Message-ID" => "", @@ -542,7 +547,7 @@ if ($codeletter eq 'D' || $codeletter eq 'F') "$gBug acknowledged by developer."); &sendmessage(create_mime_message( [@common_headers, - From => "$gMaintainerEmail ($gProject $gBug Tracking System)", + From => qq("$gProject $gBug Tracking System" <$gMaintainerEmail>), To => "$data->{originator}", Subject => "$gBug#$ref closed by $markedby ($header{'subject'})", "Message-ID" => "", @@ -573,7 +578,7 @@ if ($ref<0) { # new bug report if ($codeletter eq 'U') { # -submitter &sendmessage(create_mime_message( [@common_headers, - From => "$gMaintainerEmail ($gProject $gBug Tracking System)", + From => qq("$gProject $gBug Tracking System" <$gMaintainerEmail>), To => $replyto, Subject => "Message with no $gBug number cannot be sent to submitter! ($subject)", 'Message-ID' => "", @@ -613,7 +618,7 @@ if ($ref<0) { # new bug report ); &sendmessage(create_mime_message( [@common_headers, - From => "$gMaintainerEmail ($gProject $gBug Tracking System)", + From => qq("$gProject $gBug Tracking System" <$gMaintainerEmail>), To => $replyto, Subject => "Message with no Package: tag cannot be processed! ($subject)", "Message-ID" => "", @@ -809,6 +814,12 @@ if (length($resentccval)) { $resentcc= "Resent-CC: $resentccval\n"; } +my $referencesval = join(' ',grep {defined $_} $header{'references'},$data->{msgid}); +my $references = ''; +if (!$newref && length($referencesval)) { + $references = "References: $referencesval\n"; +} + my $common_headers=''; { my @tmp = @common_headers; @@ -828,7 +839,7 @@ Resent-Sender: $gMaintainerEmail X-$gProject-PR-Message: report $ref X-$gProject-PR-Package: $data->{package} X-$gProject-PR-Keywords: $data->{keywords} -${source_pr_header} +${references}${source_pr_header} END chomp $enc_msg; $enc_msg = encode_utf8($enc_msg).$fwd."\n"; @@ -851,7 +862,7 @@ Resent-Sender: $gMaintainerEmail X-$gProject-PR-Message: $report_followup $ref X-$gProject-PR-Package: $data->{package} X-$gProject-PR-Keywords: $data->{keywords} -${source_pr_header} +${references}${source_pr_header} END chomp $enc_msg; $enc_msg = encode_utf8($enc_msg).$fwd."\n"; @@ -885,7 +896,7 @@ Resent-Sender: $gMaintainerEmail ${common_headers}X-$gProject-PR-Message: $report_followup $ref X-$gProject-PR-Package: $data->{package} X-$gProject-PR-Keywords: $data->{keywords} -${source_pr_header} +${references}${source_pr_header} END chomp $enc_msg; $enc_msg = encode_utf8($enc_msg).$fwd."\n"; @@ -979,7 +990,7 @@ if (not exists $header{'x-debbugs-no-ack'} and ); &sendmessage(create_mime_message( [@common_headers, - From => "$gMaintainerEmail ($gProject $gBug Tracking System)", + From => qq("$gProject $gBug Tracking System" <$gMaintainerEmail>), To => $replyto, Subject => $t_h{subject}, "Message-ID" => $t_h{messageid}, @@ -1080,7 +1091,7 @@ if (@control_bits) { my $error_text = $errors > 0 ? " (with $errors error" . ($errors > 1 ? "s" : "") . ")" : ""; my $reply = create_mime_message(['X-Loop' => $gMaintainerEmail, - From => "$gMaintainerEmail ($gProject $gBug Tracking System)", + From => qq("$gProject $gBug Tracking System" <$gMaintainerEmail>), To => $replyto, @maintccs ? (Cc => join(', ',@maintccs)):(), Subject => "Processed${error_text}: $header{subject}", @@ -1263,20 +1274,15 @@ sub fill_template{ my $variables = {config => \%config, defined($ref)?(ref => $ref):(), defined($data)?(data => $data):(), - refs => [map {exists $clonebugs{$_}?$clonebugs{$_}:$_} keys %bug_affected], + refs => [sort + uniqnum(defined($ref)?($ref):(), + map {exists $clonebugs{$_}?$clonebugs{$_}:$_} + keys %bug_affected)], %{$extra_var}, }; - my $hole_var = {'&bugurl' => - sub{"$_[0]: ". - $config{cgi_domain}.'/'. - Debbugs::CGI::bug_links(bug=>$_[0], - links_only => 1, - ); - } - }; return fill_in_template(template => $template, variables => $variables, - hole_var => $hole_var, + output_type => 'text', ); }