]> git.donarmstrong.com Git - debbugs.git/blobdiff - cgi/bugreport.cgi
Do not escape From and use .eml when returning a single message
[debbugs.git] / cgi / bugreport.cgi
index 088f43b874c24dc6fd9c8ce1599bac32ac4489ba..87f688e368fbf167b784ccedba4e1cba2c8bb319 100755 (executable)
@@ -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',
@@ -306,7 +310,7 @@ END
          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;