]> git.donarmstrong.com Git - debbugs.git/blobdiff - cgi/bugreport.cgi
merge changes from dla source branch
[debbugs.git] / cgi / bugreport.cgi
index 4c8e05d750766b56a2f996e9fdf969602d7daa77..5b46729639605ba74a0b941b3374d2cd46bd3b78 100755 (executable)
@@ -11,7 +11,7 @@ use IO::File;
 use Debbugs::Config qw(:globals :text);
 
 # for read_log_records
-use Debbugs::Log;
+use Debbugs::Log qw(read_log_records);
 use Debbugs::MIME qw(convert_to_utf8 decode_rfc1522 create_mime_message);
 use Debbugs::CGI qw(:url :html :util);
 use Debbugs::Common qw(buglog getmaintainers);
@@ -125,7 +125,7 @@ sub display_entity ($$$$\$\@) {
        $$this .= '<pre class="mime">[<a href="' . bug_url(@dlargs) . qq{">$printname</a> } .
                  "($type, $disposition)]</pre>\n";
 
-       if ($msg and defined($att) and $att eq $#$attachments) {
+       if ($msg and defined($att) and $att == $#$attachments) {
            my $head = $entity->head;
            chomp(my $type = $entity->effective_type);
            my $body = $entity->stringify_body;
@@ -176,6 +176,12 @@ sub display_entity ($$$$\$\@) {
              my $body = $entity->bodyhandle->as_string;
              $body = convert_to_utf8($body,$charset) if defined $charset;
              $body = html_escape($body);
+             # Attempt to deal with format=flowed
+             if ($content_type =~ m/format\s*=\s*\"?flowed\"?/i) {
+                  $body =~ s{^\ }{}mgo;
+                  # we ignore the other things that you can do with
+                  # flowed e-mails cause they don't really matter.
+             }
              # Add links to URLs
              $body =~ s,((ftp|http|https)://[\S~-]+?/?)((\&gt\;)?[)]?[']?[:.\,]?(\s|$)),<a href=\"$1\">$1</a>$3,go;
              # Add links to bug closures
@@ -416,6 +422,7 @@ sub handle_record{
      my $output = '';
      local $_ = $record->{type};
      if (/html/) {
+         my ($time) = $record->{text} =~ /<!--\s+time:(\d+)\s+-->/;
          my $class = $record->{text} =~ /^<strong>(?:Acknowledgement|Reply|Information|Report|Notification)/ ? 'infmessage':'msgreceived';
          $output .= decode_rfc1522($record->{text});
          # Link to forwarded http:// urls in the midst of the report
@@ -430,8 +437,11 @@ sub handle_record{
                      {(defined $2?$1.bug_links($2):'').$3.
                            join(' ',map {bug_links($_)} (split /\,?\s+/, $4))}eo;
          # Add links to reassigned packages
-         $output =~ s{(Bug reassigned from package \`)([^\']+)(' to \`)([^\']+)(')}
+         $output =~ s{(Bug reassigned from package \`)([^']+)((?:'|\&\#39;) to \`)([^']+)((?:'|\&\#39;))}
          {$1.q(<a href=").pkg_url(pkg=>$2).qq(">$2</a>).$3.q(<a href=").pkg_url(pkg=>$4).qq(">$4</a>).$5}eo;
+         if (defined $time) {
+              $output .= ' ('.strftime('%a, %d %b %Y %T GMT',gmtime($time)).') ';
+         }
          $output .= '<a href="' . bug_url($ref, msg => ($msg_number+1)) . '">Full text</a> and <a href="' .
               bug_url($ref, msg => ($msg_number+1), mbox => 'yes') . '">rfc822 format</a> available.';
 
@@ -465,8 +475,10 @@ sub handle_record{
          }
          # Incomming Mail Message
          my ($received,$hostname) = $record->{text} =~ m/Received: \(at (\S+)\) by (\S+)\;/;
-         $output .= qq|<hr><p class="msgreceived"><a name="$msg_number"></a><a name="msg$msg_number">Message received</a> at |.
-              html_escape("$received\@$hostname") . q| (<a href="| . bug_url($ref, msg=>$msg_number) . '">full text</a>'.q|, <a href="| . bug_url($ref, msg=>$msg_number,mbox=>'yes') .'">mbox</a>)'.":</p>\n";
+         $output .= qq|<hr><p class="msgreceived"><a name="$msg_number"></a><a name="msg$msg_number"></a><a href="#$msg_number">Message</a> received at |.
+              html_escape("$received\@$hostname") .
+                   q| (<a href="| . bug_url($ref, msg=>$msg_number) . '">full text</a>'.
+                        q|, <a href="| . bug_url($ref, msg=>$msg_number,mbox=>'yes') .'">mbox</a>)'.":</p>\n";
          $output .= handle_email_message($record->{text},
                                    ref        => $bug_number,
                                    msg_number => $msg_number,