]> git.donarmstrong.com Git - debbugs.git/blobdiff - Debbugs/CGI/Bugreport.pm
switch to compatibility level 12
[debbugs.git] / Debbugs / CGI / Bugreport.pm
index ce1bd30d8395110b8c185ea22379ec0276a2b3d1..a6063944a07b5edd1048639d17c6c8d1abecb085 100644 (file)
@@ -35,9 +35,9 @@ use IO::Scalar;
 use Params::Validate qw(validate_with :types);
 use Digest::MD5 qw(md5_hex);
 use Debbugs::Mail qw(get_addresses :reply);
-use Debbugs::MIME qw(decode_rfc1522 create_mime_message);
+use Debbugs::MIME qw(decode_rfc1522 create_mime_message parse_to_mime_entity);
 use Debbugs::CGI qw(:url :html :util);
-use Debbugs::Common qw(globify_scalar english_join);
+use Debbugs::Common qw(globify_scalar english_join hash_slice);
 use Debbugs::UTF8;
 use Debbugs::Config qw(:config);
 use Debbugs::Log qw(:read);
@@ -45,7 +45,7 @@ use POSIX qw(strftime);
 use Encode qw(decode_utf8 encode_utf8);
 use URI::Escape qw(uri_escape_utf8);
 use Scalar::Util qw(blessed);
-use List::Util qw(sum0);
+use List::AllUtils qw(sum);
 use File::Temp;
 
 BEGIN{
@@ -226,9 +226,7 @@ sub display_entity {
                                output => $output,
                                attachments => $attachments,
                                terse => $param{terse},
-                               exists $param{msg}?(msg=>$param{msg}):(),
-                               exists $param{att}?(att=>$param{att}):(),
-                               exists $param{avatars}?(avatars=>$param{avatars}):(),
+                               hash_slice(%param,qw(msg att avatars)),
                               );
             if ($raw_output) {
                 return $raw_output;
@@ -249,9 +247,7 @@ sub display_entity {
                           output => $output,
                           attachments => $attachments,
                           terse => $param{terse},
-                          exists $param{msg}?(msg=>$param{msg}):(),
-                          exists $param{att}?(att=>$param{att}):(),
-                           exists $param{avatars}?(avatars=>$param{avatars}):(),
+                           hash_slice(%param,qw(msg att avatars)),
                          );
            # print {$output} "\n";
        }
@@ -279,7 +275,7 @@ sub display_entity {
             # if the first 20 lines in the message which have any non-space
             # characters are larger than 100 characters more often than they
             # are not, then use CSS to try to impose sensible wrapping
-            sum0(map {length ($_) > 100?1:-1} grep {/\S/} split /\n/,$body,20) > 0
+            sum(0,map {length ($_) > 100?1:-1} grep {/\S/} split /\n/,$body,20) > 0
            ) {
             $css_class .= " wrapping";
         }
@@ -304,7 +300,7 @@ sub display_entity {
            ) {
             # Add links to CVE vulnerabilities (closes #568464)
             $body =~ s{(^|\s|[\(\[])(CVE-\d{4}-\d{4,})(\s|[,.-\[\]\)]|$)}
-                      {$1<a href="http://$config{cve_tracker}$2">$2</a>$3}gxm;
+                      {$1<a href="$config{cve_tracker}$2">$2</a>$3}gxm;
         }
         if (not exists $param{att}) {
              print {$output} qq(<pre class="$css_class">$body</pre>\n);
@@ -335,17 +331,7 @@ sub handle_email_message{
      my $entity;
      my $tempdir;
      if (not blessed $record) {
-         my $parser = MIME::Parser->new();
-         # this will be cleaned up once it goes out of scope
-         $tempdir = File::Temp->newdir();
-         $parser->output_under($tempdir->dirname());
-         if ($record->{inner_file}) {
-             $entity = $parser->parse($record->{fh}) or
-                 die "Unable to parse entity";
-         } else {
-             $entity = $parser->parse_data($record->{text}) or
-                 die "Unable to parse entity";
-         }
+        $entity = parse_to_mime_entity($record);
      } else {
          $entity = $record;
      }
@@ -358,10 +344,8 @@ sub handle_email_message{
                         output => $output_fh,
                         attachments => \@attachments,
                         terse       => $param{terse},
-                        exists $param{msg}?(msg=>$param{msg}):(),
-                        exists $param{att}?(att=>$param{att}):(),
-                        exists $param{trim_headers}?(trim_headers=>$param{trim_headers}):(),
-                        exists $param{avatars}?(avatars=>$param{avatars}):(),
+                        hash_slice(%param,qw(msg att trim_headers avatars),
+                                  ),
                        );
      return $raw_output?$output:decode_utf8($output);
 }
@@ -476,6 +460,7 @@ sub handle_record{
           # this will be cleaned up once it goes out of scope
           my $tempdir = File::Temp->newdir();
           $parser->output_under($tempdir->dirname());
+         $parser->filer->ignore_filename(1);
          my $entity;
          if ($record->{inner_file}) {
              $entity = $parser->parse($record->{fh});
@@ -516,9 +501,7 @@ sub __libravatar_url {
 
 
 __END__
-
-
-
-
-
-
+# Local Variables:
+# cperl-indent-level: 4
+# indent-tabs-mode: nil
+# End: