) {
- $linenum++;
- if ($line =~ m/^.$/ and 1 <= ord($line) && ord($line) <= 7) {
- # state transitions
- my $newstate;
- my $statenum = ord($line);
-
- $newstate = 'autocheck' if ($statenum == 1);
- $newstate = 'recips' if ($statenum == 2);
- $newstate = 'kill-end' if ($statenum == 3);
- $newstate = 'go' if ($statenum == 5);
- $newstate = 'html' if ($statenum == 6);
- $newstate = 'incoming-recv' if ($statenum == 7);
-
- # disallowed transitions:
- $_ = "$normstate $newstate";
- unless (m/^(go|go-nox|html) kill-end$/
- || m/^(kill-init|kill-end) (incoming-recv|autocheck|recips|html)$/
- || m/^kill-body go$/)
- {
- &quit("$ref: Transition from $normstate to $newstate at $linenum disallowed");
- }
-
- if ($newstate eq 'go') {
- $this .= "\n";
- }
-
- if ($newstate eq 'html') {
- $this = '';
- }
-
- if ($newstate eq 'kill-end') {
-
- $this .= "
\n"
- if $normstate eq 'go' || $normstate eq 'go-nox';
-
- if ($normstate eq 'html') {
- $this .= " Full text available.";
- }
-
- my $show = 1;
- $show = $boring
- if ($suppressnext && $normstate ne 'html');
-
- $show = ($xmessage == $msg) if ($msg);
-
- if ($show) {
- if ($reverse) {
- $log = "$this\n
$log";
- } else {
- $log .= "$this\n
\n";
- }
- }
-
- $xmessage++ if ($normstate ne 'html');
-
- $suppressnext = $normstate eq 'html';
- }
-
- $normstate = $newstate;
- next;
- }
-
- $_ = $line;
- if ($normstate eq 'incoming-recv') {
- my $pl= $_;
- $pl =~ s/\n+$//;
- m/^Received: \(at (\S+)\) by (\S+)\;/
- || &quit("bad line \`$pl' in state incoming-recv");
- $this = "Message received at ".htmlsanit("$1\@$2")
- . ":
\n\n$_";
- $normstate= 'go';
- } elsif ($normstate eq 'html') {
- $this .= $_;
- } elsif ($normstate eq 'go') {
- $this .= htmlsanit($_);
- } elsif ($normstate eq 'go-nox') {
- next if !s/^X//;
- $this .= htmlsanit($_);
- } elsif ($normstate eq 'recips') {
- if (m/^-t$/) {
- $this = "Message sent:
\n";
- } else {
- s/\04/, /g; s/\n$//;
- $this = "Message sent to ".htmlsanit($_).":
\n";
- }
- $normstate= 'kill-body';
- } elsif ($normstate eq 'autocheck') {
- next if !m/^X-Debian-Bugs(-\w+)?: This is an autoforward from (\S+)/;
- $normstate= 'autowait';
- $this = "Message received at $2:
\n";
- } elsif ($normstate eq 'autowait') {
- next if !m/^$/;
- $normstate= 'go-nox';
- $this .= "\n";
- } else {
- &quit("$ref state $normstate line \`$_'");
- }
-}
-&quit("$ref state $normstate at end") unless $normstate eq 'kill-end';
-close(L);
-
-print header;
-print start_html(
- -TEXT => "#000000",
- -BGCOLOR=>"#FFFFFF",
- -LINK => "#0000FF",
- -VLINK => "#800080",
- -title => "$debbugs::gProject $debbugs::gBug report logs - $short");
-
-print h1("$debbugs::gProject $debbugs::gBug report logs - $short
\n"
- . htmlsanit($status{subject}));
-
-print "$descriptivehead\n";
-print hr;
-print "$log";
-print $tail_html;
-
-print end_html;
-
-exit 0;
+my $descriptivehead = $indexentry;
+
+print $q->header(-type => "text/html",
+ -charset => 'utf-8',
+ (length $mtime)?(-last_modified => $mtime):(),
+ );
+
+print fill_in_template(template => 'cgi/bugreport',
+ variables => {status => \%status,
+ package => \%package,
+ log => $log,
+ bug_num => $ref,
+ version_graph => $version_graph,
+ msg => $msg,
+ isstrongseverity => \&Debbugs::Status::isstrongseverity,
+ html_escape => \&Debbugs::CGI::html_escape,
+ looks_like_number => \&Scalar::Util::looks_like_number,
+ make_list => \&Debbugs::Common::make_list,
+ },
+ hole_var => {'&package_links' => \&Debbugs::CGI::package_links,
+ '&bug_links' => \&Debbugs::CGI::bug_links,
+ '&version_url' => \&Debbugs::CGI::version_url,
+ '&bug_url' => \&Debbugs::CGI::bug_url,
+ '&strftime' => \&POSIX::strftime,
+ '&maybelink' => \&Debbugs::CGI::maybelink,
+ },
+ );