]> git.donarmstrong.com Git - debbugs.git/blobdiff - scripts/process.in
* Fix more undefined value issues
[debbugs.git] / scripts / process.in
index 194c57dee416e85ab53c6e7966105ec8adffc421..c53e108ccd9c39ffc298166af9059e091216c817 100755 (executable)
@@ -15,7 +15,7 @@ use Debbugs::Mail qw(send_mail_message encode_headers);
 use Debbugs::Packages qw(getpkgsrc);
 use Debbugs::User qw(read_usertags write_usertags);
 use Debbugs::Common qw(:lock get_hashname);
-use Debbugs::Status qw(writebug isstrongseverity lockreadbugmerge);
+use Debbugs::Status qw(writebug isstrongseverity lockreadbugmerge lockreadbug);
 
 use Debbugs::CGI qw(html_escape bug_url);
 
@@ -226,7 +226,7 @@ if ($tryref >= 0)
           Subject       => "Unknown problem report $gBug#$tryref ($subject)",
           'Message-ID'  => "<handler.x.$nn.unknown\@$gEmailDomain>",
           'In-Reply-To' => $header{'message-id'},
-          References    => "$header{'message-id'} $data->{msgid}",
+          References    => join(' ',grep {defined $_} $header{'message-id'},$data->{msgid}),
           Precedence    => 'bulk',
           "X-$gProject-PR-Message" => 'error',
          ],message_body_template('process_unknown_bug_number',
@@ -274,7 +274,7 @@ if ($codeletter eq 'D' || $codeletter eq 'F')
     my $generalcc;
     my $set_done;
     if ($codeletter eq 'F') { # Forwarded
-        (&appendlog,&finish) if length($data->{forwarded});
+        (&appendlog,&finish) if defined $data->{forwarded} and length($data->{forwarded});
         $receivedat= "forwarded\@$gEmailDomain";
         $markaswhat= 'forwarded';
         $set_forwarded= $header{'to'};
@@ -317,10 +317,10 @@ if ($codeletter eq 'D' || $codeletter eq 'F')
           Subject       => "Message with no $gBug number ignored by $receivedat ($subject)",
           'Message-ID'  => "<handler.x.$nn.warnignore\@$gEmailDomain>",
           'In-Reply-To' => $header{'message-id'},
-          References    => "$header{'message-id'} $data->{msgid}",
+          References    => join(' ',grep {defined $_} $header{'message-id'},$data->{msgid}),
           Precedence    => 'bulk',
           "X-$gProject-PR-Message" => 'error',
-         ],message_body_template('process_no_bug_number',
+         ],message_body_template('mail/process_no_bug_number',
                                  {subject => $subject,
                                   date    => $header{date},
                                   markaswhat => $markaswhat,
@@ -382,13 +382,13 @@ if ($codeletter eq 'D' || $codeletter eq 'F')
               Subject       => "$gBug#$ref: marked as forwarded ($data->{subject})",
               "Message-ID"  => "<header.$ref.$nn.ackfwdd\@$gEmailDomain>",
               "In-Reply-To" => $header{'message-id'},
-              References    => "$header{'message-id'} $data->{msgid}",
+              References    => join(' ',grep {defined $_} $header{'message-id'},$data->{msgid}),
               Precedence    => 'bulk',
               "X-$gProject-PR-Message"  => "forwarded $ref",
               "X-$gProject-PR-Package"  => $data->{package},
               "X-$gProject-PR-Keywords" => $data->{keywords},
              # Only have a X-$gProject-PR-Source when we know the source package
-             length($source_package)?("X-$gProject-PR-Source" => $source_package):(),
+             (defined($source_package) and length($source_package))?("X-$gProject-PR-Source" => $source_package):(),
              ],message_body_template('mail/process_mark_as_forwarded',
                                     {date => $header{date},
                                      messageid => $header{'message-id'},
@@ -405,13 +405,13 @@ if ($codeletter eq 'D' || $codeletter eq 'F')
               Subject       => "$gBug#$ref: marked as done ($data->{subject})",
               "Message-ID"  => "<handler.$ref.$nn.ackdone\@$gEmailDomain>",
               "In-Reply-To" => $header{'message-id'},
-              References    => "$header{'message-id'} $data->{msgid}",
+              References    => join(' ',grep {defined $_} $header{'message-id'},$data->{msgid}),
               Precedence    => 'bulk',
               "X-$gProject-PR-Message"  => "closed $ref",
               "X-$gProject-PR-Package"  => $data->{package},
               "X-$gProject-PR-Keywords" => $data->{keywords},
              # Only have a X-$gProject-PR-Source when we know the source package
-             length($source_package)?("X-$gProject-PR-Source" => $source_package):(),
+             (defined($source_package) and length($source_package))?("X-$gProject-PR-Source" => $source_package):(),
              ],message_body_template('mail/process_mark_as_done',
                                     {date => $header{date},
                                      messageid => $header{'message-id'},
@@ -429,17 +429,19 @@ if ($codeletter eq 'D' || $codeletter eq 'F')
               Subject       => "$gBug#$ref closed by $markedby ($header{'subject'})",
               "Message-ID"  => "<handler.$ref.$nn.notifdone\@$gEmailDomain>",
               "In-Reply-To" => "$data->{msgid}",
-              References    => "$header{'message-id'} $data->{msgid}",
+              References    => join(' ',grep {defined $_} $header{'message-id'},$data->{msgid}),
               "X-$gProject-PR-Message"  => "they-closed $ref",
               "X-$gProject-PR-Package"  => "$data->{package}",
               "X-$gProject-PR-Keywords" => "$data->{keywords}",
              # Only have a X-$gProject-PR-Source when we know the source package
-             length($source_package)?("X-$gProject-PR-Source" => $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',
                                     {data      => $data,
                                      markedby  => $markedby,
+                                     messageid => $header{'message-id'},
+                                     subject   => $header{subject},
                                     },
                                    ),
             [join("\n",@msg),$orig_report]),'',undef,1);
@@ -458,10 +460,10 @@ if ($ref<0) {
           Subject       => "Message with no $gBug number cannot be sent to submitter! ($subject)",
           'Message-ID'  => "<handler.x.$nn.nonumnosub\@$gEmailDomain>",
           'In-Reply-To' => $header{'message-id'},
-          References    => "$header{'message-id'} $data->{msgid}",
+          References    => join(' ',grep {defined $_} $header{'message-id'},$data->{msgid}),
           Precedence    => 'bulk',
           "X-$gProject-PR-Message" => 'error',
-         ],message_body_template('process_no_bug_number',
+         ],message_body_template('mail/process_no_bug_number',
                                  {subject => $subject,
                                   date    => $header{date},
                                   markaswhat => 'submitter',
@@ -491,11 +493,11 @@ if ($ref<0) {
                         Subject       => "Message with no Package: tag cannot be processed! ($subject)",
                         "Message-ID"  => "<handler.x.$nn.nonumnosub\@$gEmailDomain>",
                         "In-Reply-To" => $header{'message-id'},
-                        References    => "$header{'message-id'} $data->{msgid}",
+                        References    => join(' ',grep {defined $_} $header{'message-id'},$data->{msgid}),
                         Precedence    => 'bulk',
                         "X-$gProject-PR-Message" => 'error'
                       ],
-          message_body_template('mail/process_mark_as_done',
+          message_body_template('mail/process_no_package',
                                 {date => $header{date},
                                  subject => $subject,
                                  messageid => $header{'message-id'},
@@ -567,7 +569,7 @@ if ($ref<0) {
              for my $tag (split /[,\s]+/, $pheader{usertags}) {
                   if ($tag =~ /^[a-zA-Z0-9.+\@-]+/) {
                        my %bugs_with_tag; 
-                       @bugs_with_tag{@{$user_tags{$tag}}} = (1) x @{$user_tags{$tag}};
+                       @bugs_with_tag{@{$user_tags{$tag}||[]]}} = (1) x @{$user_tags{$tag}||[]};
                        $bugs_with_tag{$ref} = 1;
                        $user_tags{$tag} = [keys %bugs_with_tag];
                   }
@@ -722,8 +724,9 @@ if (length($resentccval)) {
 if (not exists $header{'x-debbugs-no-ack'} and
     ($newref or
      ($codeletter ne 'U' and
-      not defined $header{precedence} or
-      $header{'precedence'} !~ /\b(?:bulk|junk|list)\b/
+      (not defined $header{precedence} or
+       $header{'precedence'} !~ /\b(?:bulk|junk|list)\b/
+      )
      )
     )
    ){
@@ -784,7 +787,7 @@ if (not exists $header{'x-debbugs-no-ack'} and
          $t_h{pr_message} = "ack${infod} $ref";
          $t_h{reply_to}   = "$ref\@$gEmailDomain";
          $extra_vars->{refreplyto} = "$ref\@$gEmailDomain";
-         $t_h{subject}    = length($info)?
+         $t_h{subject}    = (defined $info and length($info))?
               "$gBug#$ref: Info received ($subject)" :
               "$gBug#$ref: Acknowledgement ($subject)";
      }
@@ -808,7 +811,7 @@ if (not exists $header{'x-debbugs-no-ack'} and
                        "X-$gProject-PR-Package"  => $data->{package},
                        "X-$gProject-PR-Keywords" => $data->{keywords},
                        # Only have a X-$gProject-PR-Source when we know the source package
-                       length($source_package)?("X-$gProject-PR-Source" => $source_package):(),
+                       (defined($source_package) and length($source_package))?("X-$gProject-PR-Source" => $source_package):(),
                        "Reply-To"                => $t_h{reply_to} || "$ref\@$gEmailDomain",
                       ],$body,[]), '',undef,1);
 }
@@ -967,11 +970,17 @@ sub fill_template{
      my $variables = {config => \%config,
                      defined($ref)?(ref    => $ref):(),
                      defined($data)?(data  => $data):(),
-                     bugurl => sub{"bug_url for $_[0] ".bug_url($_[0])},
                      %{$extra_var},
                     };
+     my $hole_var = {'&bugurl' =>
+                    sub{"$_[0]: ".
+                             'http://'.$config{cgi_domain}.'/'.
+                                  Debbugs::CGI::bug_url($_[0]);
+                   }
+                   };
      return fill_in_template(template => $template,
                             variables => $variables,
+                            hole_var  => $hole_var,
                            );
 }