spec => {binary => {type => BOOLEAN,
default => 1,
},
- package => {type => SCALAR|ARRAYREF,
+ package => {type => SCALAR,#|ARRAYREF,
},
options => {type => HASHREF,
},
}
else {
print {$output} "<p>There is no maintainer for $showpkg. ".
- "Please do not report new bugs against this package.</p>\n";
+ "This means that this package no longer exists (or never existed). ".
+ "Please do not report new bugs against this package. </p>\n";
}
my @pkgs = getsrcpkgs($srcforpkg);
@pkgs = grep( !/^\Q$package\E$/, @pkgs );
"list of other pseudo-packages</a>";
}
elsif (not defined $maint and not @{$param{bugs}}) {
- print {$output} "<p>There is no record of the " . html_escape($package) .
- ($param{binary} ? " package" : " source package") .
- ", and no bugs have been filed against it.</p>";
+ # don't bother printing out this information, because it's
+ # already present above.
+ # print {$output} "<p>There is no record of the " . html_escape($package) .
+ # ($param{binary} ? " package" : " source package") .
+ # ", and no bugs have been filed against it.</p>";
}
else {
if ($package and defined $config{package_pages} and length $config{package_pages}) {
if (defined $config{subscription_domain} and
length $config{subscription_domain}) {
my $ptslink = $param{binary} ? $srcforpkg : $package;
+ # the pts only wants the source, and doesn't care about src: (#566089)
+ $ptslink =~ s/^src://;
push @references, q(to the <a href="http://).html_escape("$config{subscription_domain}/$ptslink").q(">Package Tracking System</a>);
}
# Only output this if the source listing is non-trivial.
if (@blockedby && $status{"pending"} ne 'fixed' && ! length($status{done})) {
for my $b (@blockedby) {
my %s = %{get_bug_status($b)};
- next if $s{"pending"} eq 'fixed' || length $s{done};
+ next if (defined $s{pending} and $s{pending} eq 'fixed') or (defined $s{done} and length $s{done});
push @{$status{blockedby_array}},{bug_num => $b, subject => $s{subject}, status => \%s};
}
}
for my $el (@${order}) {
$pos++;
my $match = 1;
- for my $item (split /[+]/, $el) {
- my ($f, $v) = split /=/, $item, 2;
- next unless (defined $f and defined $v);
- my $isokay = 0;
- $isokay = 1 if (defined $status->{$f} and $v eq $status->{$f});
- $isokay = 1 if ($f eq "tag" && defined $tags{$v});
- unless ($isokay) {
- $match = 0;
- last;
- }
- }
- if ($match) {
- return $pos;
- last;
+ my $first_field = 1; # true if no previous fields have been
+ # checked
+ while ($el =~ /(?<joiner>^|\+|,)(?<field>[^=]+)=(?<value>[^=,\+]+)/g) {
+ my ($j,$f,$v) = @+{qw(joiner field value)};
+ my $isokay = 0;
+ $isokay = 1 if (defined $status->{$f} and $v eq $status->{$f});
+ $isokay = 1 if ($f eq "tag" && defined $tags{$v});
+ if (defined $j and $j eq ',') {
+ $match ||= $isokay;
+ } else {
+ $match &&= $isokay;
+ }
+ $first_field = 0;
+ }
+ # if there is a match, or if there were no fields to check,
+ # this usertag matched.
+ if ($match || $first_field) {
+ return $pos;
+ last;
}
}
return $pos + 1;