5 print header . start_html("Error");
6 print "An error occurred. Dammit.\n";
7 print "Error was: $msg.\n";
16 my %status = getbugstatus($ref, $archive );
19 if ($status{severity} eq 'normal') {
21 } elsif (grep($status{severity} eq $_, @debbugs::gStrongSeverities)) {
22 $showseverity = "<strong>Severity: $status{severity}</strong>;\n";
24 $showseverity = "Severity: <em>$status{severity}</em>;\n";
27 $result .= "Package: <a href=\"" . pkgurl($status{"package"}) . "\"><strong>"
28 . htmlsanit($status{"package"}) . "</strong></a>;\n"
29 if (length($status{"package"}));
30 $result .= $showseverity;
31 $result .= "Reported by: " . htmlsanit($status{originator});
32 $result .= ";\nKeywords: " . htmlsanit($status{keywords})
33 if (length($status{keywords}));
35 my @merged= split(/ /,$status{mergedwith});
37 my $mseparator= ";\nmerged with ";
39 $result .= $mseparator."<A href=\"" . bugurl($m) . "\">#$m</A>";
44 if (length($status{done})) {
45 $result .= ";\n<strong>Done:</strong> " . htmlsanit($status{done});
46 } elsif (length($status{forwarded})) {
47 $result .= ";\n<strong>Forwarded</strong> to "
48 . htmlsanit($status{forwarded});
50 my $daysold = int((time - $status{date}) / 86400); # seconds to days
54 $font = "em" if ($daysold > 30);
55 $font = "strong" if ($daysold > 60);
56 $efont = "</$font>" if ($font);
57 $font = "<$font>" if ($font);
59 my $yearsold = int($daysold / 364);
60 $daysold = $daysold - $yearsold * 364;
62 $result .= ";\n $font";
63 $result .= "1 year and " if ($yearsold == 1);
64 $result .= "$yearsold years and " if ($yearsold > 1);
65 $result .= "1 day old" if ($daysold == 1);
66 $result .= "$daysold days old" if ($daysold != 1);
78 my $params = "pkg=$ref";
79 foreach my $val (@_) { 1 }
81 return $debbugs::gCGIDomain . "pkgreport.cgi" . "?" . "$params";
84 %saniarray= ('<','lt', '>','gt', '&','amp', '"','quot');
89 while ($in =~ m/[<>&"]/) {
90 $out.= $`. '&'. $saniarray{$&}. ';';
99 my $params = "bug=$ref";
100 foreach my $val (@_) {
101 $params .= "\&msg=$1" if ($val =~ /^msg=([0-9]+)/);
102 $params .= "\&archive=yes" if ($val =~ /^archive=1/);
105 return $debbugs::gCGIDomain . "bugreport.cgi" . "?" . "$params";
110 return $debbugs::gCGIDomain . "package.cgi" . "?" . "package=$ref";
116 opendir(D, "$debbugs::gSpoolDir/db") || &quit("opendir db: $!");
117 @bugs = sort { $a <=> $b }
119 (grep m/^[0-9]+\.status$/,
128 open I, "<$debbugs::gSpoolDir/archive/index" || &quit("bugindex: $!");
130 { if (/^$pkg\s+(\d+)\s+(.+)/)
132 my $tmpstr = sprintf( "%d: %s", $1, $2 );
133 $descstr{ $1 } = $tmpstr;
142 open I, "<$debbugs::gSpoolDir/archive/index" || &quit("bugindex: $!");
143 while(<I>) { $descstr{ $1 } = 1 if (/^(\S+)/); }
150 open(MM,"$gMaintainerFile") || &quit("open $gMaintainerFile: $!");
152 m/^(\S+)\s+(\S.*\S)\s*$/ || &quit("$gMaintainerFile: \`$_'");
169 { my $archdir = $bugnum % 100;
170 open(S,"$gSpoolDir/archive/$archdir/$bugnum.status" ) || &quit("open $bugnum.status: $!");
172 { open(S,"$gSpoolDir/db/$bugnum.status") || &quit("open $bugnum.status: $!"); }
173 my @lines = qw(originator date subject msgid package keywords done
174 forwarded mergedwith severity);
177 $status{shift @lines} = $_;
180 $status{shift @lines} = '' while(@lines);
182 $status{package} =~ s/\s*$//;
183 $status{package} = 'unknown' if ($status{package} eq '');
184 $status{severity} = 'normal' if ($status{severity} eq '');
186 $status{pending} = 'pending';
187 $status{pending} = 'forwarded' if (length($status{forwarded}));
188 $status{pending} = 'done' if (length($status{done}));
197 { my $archdir = $bugnum % 100;
198 return "$gSpoolDir/archive/$archdir/$bugnum.log";
199 } else { return "$gSpoolDir/db/$bugnum.log"; }