]> git.donarmstrong.com Git - debbugs.git/blobdiff - scripts/process
set indent level and tabs mode
[debbugs.git] / scripts / process
index bceb69cb186b4198267ad24014e67bd11b75d9bc..3eba1fce2ca4b3a5baa33f924035fbfe9df24e18 100755 (executable)
@@ -7,7 +7,6 @@
 use warnings;
 use strict;
 
-use locale;
 use POSIX qw(strftime locale_h);
 setlocale(LC_TIME, "C");
 
@@ -180,8 +179,10 @@ for my $hdr (@headerlines) {
     $_ = $hdr;
     s/\n\s/ /g;
     finish() if m/^x-loop: (\S+)$/i && $1 eq "$gMaintainerEmail";
-    my $ins = !m/^subject:/i && !m/^reply-to:/i && !m/^return-path:/i
-           && !m/^From / && !m/^X-Debbugs-/i;
+    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";
     if (s/^(\S+):\s*//) {
@@ -225,9 +226,14 @@ 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
+    $fn = $fn.'s' if $fn =~ /^(?:tag|usertag)$/;
     print {$debugfh} ">$fn|$fv|\n";
     $fn = lc $fn;
     if ($fn =~ /^control$/) {
@@ -501,6 +507,8 @@ if ($codeletter eq 'D' || $codeletter eq 'F')
               "X-$gProject-PR-Keywords" => $data->{keywords},
              # Only have a X-$gProject-PR-Source when we know the source package
              (defined($source_package) and length($source_package))?("X-$gProject-PR-Source" => $source_package):(),
+              "Reply-To"                => "$ref\@$gEmailDomain",
+              "Content-Type"            => 'text/plain; charset="utf-8"',
              ],message_body_template('mail/process_mark_as_forwarded',
                                     {date => $header{date},
                                      messageid => $header{'message-id'},
@@ -524,6 +532,8 @@ if ($codeletter eq 'D' || $codeletter eq 'F')
               "X-$gProject-PR-Keywords" => $data->{keywords},
              # Only have a X-$gProject-PR-Source when we know the source package
              (defined($source_package) and length($source_package))?("X-$gProject-PR-Source" => $source_package):(),
+              "Reply-To"                => "$ref\@$gEmailDomain",
+              "Content-Type"            => 'text/plain; charset="utf-8"',
              ],message_body_template('mail/process_mark_as_done',
                                     {date => $header{date},
                                      messageid => $header{'message-id'},
@@ -592,7 +602,8 @@ if ($ref<0) { # new bug report
 
     if (defined $pheader{source}) {
        # source packages are identified by the src: prefix
-        $data->{package} = 'src:'.$pheader{source};
+        $data->{package} = $pheader{source};
+        $data->{package} =~ s/(^|,\s*)/${1}src:/g;
     } elsif (defined $pheader{package}) {
         $data->{package} = $pheader{package};
        if ($data->{package} =~ /^src:(.+)/) {
@@ -802,6 +813,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;
@@ -821,7 +838,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";
@@ -844,7 +861,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";
@@ -878,7 +895,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";
@@ -1015,7 +1032,7 @@ if (@control_bits) {
         request_subject   => $header{subject},
         request_nn        => $nn,
         request_replyto   => $replyto,
-        message           => $msg,
+        message           => [$msg],
         affected_bugs     => \%bug_affected,
         affected_packages => \%affected_packages,
         recipients        => \%recipients,
@@ -1070,7 +1087,7 @@ if (@control_bits) {
                                        address_only => 1,
                                        cc => 1,
                                       );
-    my $error_text = $errors > 0 ? " (with $errors errors)":'';
+    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)",
@@ -1261,7 +1278,7 @@ sub fill_template{
                     };
      my $hole_var = {'&bugurl' =>
                     sub{"$_[0]: ".
-                             'http://'.$config{cgi_domain}.'/'.
+                             $config{cgi_domain}.'/'.
                                   Debbugs::CGI::bug_links(bug=>$_[0],
                                                           links_only => 1,
                                                          );