use vars qw($gPackagePages $gWebDomain);
-if ($ENV{REQUEST_METHOD} eq 'HEAD') {
- print "Content-Type: text/html\n\n";
+if (defined $ENV{REQUEST_METHOD} and $ENV{REQUEST_METHOD} eq 'HEAD') {
+ print "Content-Type: text/html; charset=utf-8\n\n";
exit 0;
}
nice(5);
+my $userAgent = detect_user_agent();
my %param = readparse();
my $repeatmerged = ($param{'repeatmerged'} || "yes") eq "yes";
my $pend_inc = $param{'&pend-inc'} || $param{'pend-inc'} || "";
my $sev_exc = $param{'&sev-exc'} || $param{'sev-exc'} || "";
my $sev_inc = $param{'&sev-inc'} || $param{'sev-inc'} || "";
+my $version = $param{'version'} || undef;
+my $dist = $param{'dist'} || undef;
+my $arch = $param{'arch'} || undef;
+my $show_list_header = ($param{'show_list_header'} || $userAgent->{'show_list_header'} || "yes" ) eq "yes";
+my $show_list_footer = ($param{'show_list_footer'} || $userAgent->{'show_list_footer'} || "yes" ) eq "yes";
my ($pkg, $src, $maint, $maintenc, $submitter, $severity, $status, $tag);
set_option("pend-inc", $pend_inc);
set_option("sev-exc", $sev_exc);
set_option("sev-inc", $sev_inc);
+set_option("version", $version);
+set_option("dist", $dist);
+set_option("arch", $arch);
+set_option("show_list_header", $show_list_header);
+set_option("show_list_footer", $show_list_footer);
my $title;
my @bugs;
if (defined $pkg) {
$title = "package $pkg";
+ if (defined $version) {
+ $title .= " (version $version)";
+ } elsif (defined $dist) {
+ $title .= " in $dist";
+ my $verdesc = getversiondesc($pkg);
+ $title .= " ($verdesc)" if defined $verdesc;
+ }
my @pkgs = split /,/, $pkg;
@bugs = @{getbugs(sub {my %d=@_;
foreach my $try (splitpackages($d{"pkg"})) {
}, 'package', @pkgs)};
} elsif (defined $src) {
$title = "source $src";
+ set_option('arch', 'source');
+ if (defined $version) {
+ $title .= " (version $version)";
+ } elsif (defined $dist) {
+ $title .= " in $dist";
+ my $verdesc = getversiondesc($src);
+ $title .= " ($verdesc)" if defined $verdesc;
+ }
my @pkgs = ();
my @srcs = split /,/, $src;
foreach my $try (@srcs) {
} elsif (defined $maint) {
my %maintainers = %{getmaintainers()};
$title = "maintainer $maint";
+ $title .= " in $dist" if defined $dist;
if ($maint eq "") {
@bugs = @{getbugs(sub {my %d=@_;
foreach my $try (splitpackages($d{"pkg"})) {
} elsif (defined $maintenc) {
my %maintainers = %{getmaintainers()};
$title = "encoded maintainer $maintenc";
+ $title .= " in $dist" if defined $dist;
@bugs = @{getbugs(sub {my %d=@_;
foreach my $try (splitpackages($d{"pkg"})) {
my @me = getparsedaddrs($maintainers{$try});
})};
} elsif (defined $submitter) {
$title = "submitter $submitter";
+ $title .= " in $dist" if defined $dist;
my @submitters = split /,/, $submitter;
- @bugs = @{getbugs(sub {my %d=@_; my $se;
- ($se = $d{"submitter"} || "") =~ s/\s*\(.*\)\s*//;
- $se = $1 if ($se =~ m/<(.*)>/);
- return 1 if grep($se eq $_, @submitters);
- }, 'submitter-email', @submitters)};
+ @bugs = @{getbugs(sub {my %d=@_;
+ my @se = getparsedaddrs($d{"submitter"} || "");
+ foreach my $try (@submitters) {
+ return 1 if grep { $_->address eq $try } @se;
+ }
+ }, 'submitter-email', @submitters)};
} elsif (defined($severity) && defined($status)) {
$title = "$status $severity bugs";
+ $title .= " in $dist" if defined $dist;
my @severities = split /,/, $severity;
my @statuses = split /,/, $status;
@bugs = @{getbugs(sub {my %d=@_;
})};
} elsif (defined($severity)) {
$title = "$severity bugs";
+ $title .= " in $dist" if defined $dist;
my @severities = split /,/, $severity;
@bugs = @{getbugs(sub {my %d=@_;
return (grep($d{"severity"} eq $_, @severities));
}, 'severity', @severities)};
} elsif (defined($tag)) {
$title = "bugs tagged $tag";
+ $title .= " in $dist" if defined $dist;
my @tags = split /,/, $tag;
@bugs = @{getbugs(sub {my %d = @_;
my %tags = map { $_ => 1 } split ' ', $d{"tags"};
my $result = htmlizebugs(\@bugs);
-print "Content-Type: text/html\n\n";
+print "Content-Type: text/html; charset=utf-8\n\n";
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
print "<HTML><HEAD>\n" .
my $showresult = 1;
if (defined $pkg || defined $src) {
+ my $showpkg = (defined $pkg) ? $pkg : "source package $src";
my %maintainers = %{getmaintainers()};
my $maint = $pkg ? $maintainers{$pkg} : $maintainers{$src} ? $maintainers{$src} : undef;
if (defined $maint) {
print '<p>';
- my $showpkg = (defined $pkg) ? $pkg : "source package $src";
print htmlmaintlinks(sub { $_[0] == 1 ? "Maintainer for $showpkg is "
: "Maintainers for $showpkg are "
},
$maint);
print ".</p>\n";
+ } else {
+ print "<p>No maintainer for $showpkg. Please do not report new bugs against this package.</p>\n";
}
if (defined $maint or @bugs) {
my %pkgsrc = %{getpkgsrc()};
print join( ", ", map( "<A href=\"" . pkgurl($_) . "\">$_</A>", @pkgs ) );
print ".\n";
}
- if ($pkg) {
- my @references;
- my $pseudodesc = getpseudodesc();
- if (defined($pseudodesc) and exists($pseudodesc->{$pkg})) {
- push @references, "to the <a href=\"http://${debbugs::gWebDomain}/pseudo-packages${debbugs::gHTMLSuffix}\">list of other pseudo-packages</a>";
- } else {
+ my @references;
+ my $pseudodesc = getpseudodesc();
+ if ($pkg and defined($pseudodesc) and exists($pseudodesc->{$pkg})) {
+ push @references, "to the <a href=\"http://${debbugs::gWebDomain}/pseudo-packages${debbugs::gHTMLSuffix}\">list of other pseudo-packages</a>";
+ } else {
+ if ($pkg and defined $debbugs::gPackagePages) {
push @references, sprintf "to the <a href=\"%s\">%s package page</a>", urlsanit("http://${debbugs::gPackagePages}/$pkg"), htmlsanit("$pkg");
}
- if ($srcforpkg) {
- if (defined $debbugs::gSubscriptionDomain) {
- push @references, "to the <a href=\"http://$debbugs::gSubscriptionDomain/$srcforpkg\">Package Tracking System</a>";
- }
- # Only output this if the source listing is non-trivial.
- if (@pkgs or $pkg ne $srcforpkg) {
- push @references, sprintf "to the source package <a href=\"%s\">%s</a>'s bug page", srcurl($srcforpkg), htmlsanit($srcforpkg);
- }
+ if (defined $debbugs::gSubscriptionDomain) {
+ my $ptslink = $pkg ? $srcforpkg : $src;
+ push @references, "to the <a href=\"http://$debbugs::gSubscriptionDomain/$ptslink\">Package Tracking System</a>";
}
- if (@references) {
- $references[$#references] = "or $references[$#references]" if @references > 1;
- print "<p>You might like to refer ", join(", ", @references), ".</p>\n";
+ # Only output this if the source listing is non-trivial.
+ if ($pkg and $srcforpkg and (@pkgs or $pkg ne $srcforpkg)) {
+ push @references, sprintf "to the source package <a href=\"%s\">%s</a>'s bug page", srcurl($srcforpkg), htmlsanit($srcforpkg);
}
}
+ if (@references) {
+ $references[$#references] = "or $references[$#references]" if @references > 1;
+ print "<p>You might like to refer ", join(", ", @references), ".</p>\n";
+ }
print "<p>If you find a bug not listed here, please\n";
printf "<a href=\"%s\">report it</a>.</p>\n",
urlsanit("http://${debbugs::gWebDomain}/Reporting${debbugs::gHTMLSuffix}");