X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Debbugs%2FCGI%2FBugreport.pm;h=a6063944a07b5edd1048639d17c6c8d1abecb085;hb=466f7faff129a5699c7674f59900a92aa256175d;hp=ce1bd30d8395110b8c185ea22379ec0276a2b3d1;hpb=f3d363c90dc8253057b4ac91b78690b5b28a95b0;p=debbugs.git diff --git a/Debbugs/CGI/Bugreport.pm b/Debbugs/CGI/Bugreport.pm index ce1bd30..a606394 100644 --- a/Debbugs/CGI/Bugreport.pm +++ b/Debbugs/CGI/Bugreport.pm @@ -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$2$3}gxm; + {$1$2$3}gxm; } if (not exists $param{att}) { print {$output} qq(
$body
\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: