$|=1;
$tpack = lc $status{'package'};
-$tpack =~ s/[^-+._a-z0-9()].*$//;
+my @tpacks = splitpackages($tpack);
if ($status{severity} eq 'normal') {
$showseverity = '';
}
$indexentry .= "<p>$showseverity";
-$indexentry .= "Package: <a href=\"" . pkgurl($status{package}) . "\">"
- .htmlsanit($status{package})."</a>;\n";
+$indexentry .= htmlpackagelinks($status{package});
$indexentry .= "Reported by: <a href=\"" . submitterurl($status{originator})
. "\">" . htmlsanit($status{originator}) . "</a>;\n";
$indexentry .= join(";\n", @descstates) . ";\n<br>" if @descstates;
-my ($tmaint, $tsrc);
-$tmaint = defined($maintainer{$tpack}) ? $maintainer{$tpack} : '(unknown)';
-$tsrc = defined($pkgsrc{$tpack}) ? $pkgsrc{$tpack} : '(unknown)';
-$descriptivehead= $indexentry."Maintainer for $status{package} is\n".
+$descriptivehead = $indexentry;
+foreach my $pkg (@tpacks) {
+ my $tmaint = defined($maintainer{$pkg}) ? $maintainer{$pkg} : '(unknown)';
+ my $tsrc = defined($pkgsrc{$pkg}) ? $pkgsrc{$pkg} : '(unknown)';
+
+ $descriptivehead .= "Maintainer for $pkg is\n".
'<a href="'.mainturl($tmaint).'">'.htmlsanit($tmaint).'</a>';
-$descriptivehead.= ";\nSource for $status{package} is\n".
- '<a href="'.srcurl($tsrc)."\">$tsrc</a>" if ($tsrc ne "(unknown)");
-$descriptivehead.= ".</p>";
+ $descriptivehead .= ";\nSource for $pkg is\n".
+ '<a href="'.srcurl($tsrc)."\">$tsrc</a>" if ($tsrc ne "(unknown)");
+ $descriptivehead .= ".\n<br>";
+}
open L, "<$buglog" or &quit("open log for $ref: $!");
if ($buglog !~ m#^\Q$gSpoolDir/db-h/#) {
# exit 0;
#}
+# Split a package string from the status file into a list of package names.
+sub splitpackages {
+ my $pkgs = shift;
+ return unless defined $pkgs;
+ return split /[ \t?,()]+/, $pkgs;
+}
+
+# Generate a comma-separated list of HTML links to each package given in
+# $pkgs. $pkgs may be empty, in which case an empty string is returned, or
+# it may be a comma-separated list of package names.
+sub htmlpackagelinks {
+ my $pkgs = shift;
+ return unless defined $pkgs and $pkgs ne '';
+ my @pkglist = splitpackages($pkgs);
+
+ return 'Package' . (@pkglist > 1 ? 's' : '') . ': ' .
+ join(', ',
+ map {
+ '<a href="' . pkgurl($_) . '">' .
+ '<strong>' . htmlsanit($_) . '</strong></a>'
+ } @pkglist
+ ) . ";\n";
+}
+
sub htmlindexentry {
my $ref = shift;
my %status = %{getbugstatus($ref)};
$showseverity = "Severity: <em>$status{severity}</em>;\n";
}
- $result .= "Package: <a href=\"" . pkgurl($status{"package"}) . "\">"
- . "<strong>" . htmlsanit($status{"package"}) . "</strong></a>;\n"
- if (length($status{"package"}));
+ $result .= htmlpackagelinks($status{"package"});
$result .= $showseverity;
$result .= "Reported by: <a href=\"" . submitterurl($status{originator})
. "\">" . htmlsanit($status{originator}) . "</a>";