X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=cgi%2Fbugreport.cgi;h=a33863ff62431eb66463f3671418c8b8207e6844;hb=HEAD;hp=088f43b874c24dc6fd9c8ce1599bac32ac4489ba;hpb=f80106b5aa44579d927790ba9f1a60bde259dd81;p=debbugs.git diff --git a/cgi/bugreport.cgi b/cgi/bugreport.cgi index 088f43b..a33863f 100755 --- a/cgi/bugreport.cgi +++ b/cgi/bugreport.cgi @@ -34,9 +34,12 @@ BEGIN { # if the first directory in @INC is not an absolute directory, assume that # someone has overridden us via -I. if ($INC[0] !~ /^\//) { + undef $debbugs_dir; + } + if (defined $debbugs_dir) { + unshift @INC, $debbugs_dir.'/lib/'; } } -use if defined $debbugs_dir, lib => $debbugs_dir; use Debbugs::Config qw(:globals :text :config); @@ -247,7 +250,8 @@ my @log; if ( $mbox ) { binmode(STDOUT,":raw"); my $date = strftime "%a %b %d %T %Y", localtime; - if (@records > 1) { + my $multiple_messages = @records > 1; + if ($multiple_messages) { print $q->header(-type => "application/mbox", -cache_control => 'public, max-age=600', -etag => $etag, @@ -259,10 +263,10 @@ if ( $mbox ) { print $q->header(-type => "message/rfc822", -cache_control => 'public, max-age=86400', -etag => $etag, - content_disposition => qq(attachment; filename="bug_${ref}_message_${msg_num}.mbox"), + content_disposition => qq(attachment; filename="bug_${ref}_message_${msg_num}.eml"), ); } - if ($mbox_status_message and @records > 1) { + if ($mbox_status_message and $multiple_messages) { my $status_message=''; my @status_fields = (retitle => 'subject', package => 'package', @@ -301,12 +305,12 @@ END my $record_wanted_anyway = 0; my ($msg_id) = record_regex($record,qr/^Message-Id:\s+<(.+)>/im); next if defined $msg_id and exists $seen_message_ids{$msg_id}; - next if defined $msg_id and $msg_id =~/handler\..+\.ack(?:info|done)?\@/; + next if not defined $msg and defined $msg_id and $msg_id =~/handler\..+\.ack(?:info|done)?\@/; $record_wanted_anyway = 1 if record_regex($record,qr/^Received: \(at control\)/); next if not $boring and not $record->{type} eq $wanted_type and not $record_wanted_anyway and @records > 1; $seen_message_ids{$msg_id} = 1 if defined $msg_id; # skip spam messages if we're outputting more than one message - next if @records > 1 and $bug->is_spam($msg_id); + next if $multiple_messages and $bug->is_spam($msg_id); my @lines; if ($record->{inner_file}) { push @lines, scalar $record->{fh}->getline; @@ -323,10 +327,15 @@ END unshift @lines, "From unknown $date"; } print $lines[0]."\n"; - print map { s/^(>*From )/>$1/; $_."\n" } @lines[ 1 .. $#lines ]; + print map { s/^(>*From )/>$1/ if $multiple_messages; + $_."\n" } @lines[ 1 .. $#lines ]; if ($record->{inner_file}) { my $fh = $record->{fh}; - print $_ while (<$fh>); + local $/; + while (<$fh>) { + s/^(>*From )/>$1/gm if $multiple_messages; + print $_; + } } } exit 0;