X-Git-Url: https://git.deb.at/w?a=blobdiff_plain;ds=sidebyside;f=lib%2FPackages%2FSearch.pm;h=ba3b68c94ea11e6f58b0a85cdbe7d056d63f4c64;hb=1fceab61ae04b085395167ede490a9d0eab02b11;hp=9418f63e0c3037b14cd9ce079c34403f28427ed4;hpb=ef769eaccb9ebf7f49b8c3240c9c4d6980072ee5;p=deb%2Fpackages.git diff --git a/lib/Packages/Search.pm b/lib/Packages/Search.pm index 9418f63..ba3b68c 100644 --- a/lib/Packages/Search.pm +++ b/lib/Packages/Search.pm @@ -134,9 +134,10 @@ sub parse_params { my @p_value_no_replace = @p_value; if ($params{$param}{replace} && @p_value) { - @p_value = (); foreach my $pattern (keys %{$params{$param}{replace}}) { - foreach (@p_value_no_replace) { + my @p_value_tmp = @p_value; + @p_value = (); + foreach (@p_value_tmp) { if ($_ eq $pattern) { my $replacement = $params{$param}{replace}{$_}; if (ref $replacement) { @@ -369,12 +370,16 @@ sub read_entry_simple { my @data = split ( /\s/o, $_, 8 ); debug( "Considering entry ".join( ':', @data), 2); if ($data[1] eq $suite) { - if ($archives->{$data[0]}) { + if ($archives->{$data[0]} + && ($data[2] ne 'virtual')) { debug( "Using entry ".join( ':', @data), 2); return \@data; + } elsif ($archives->{$data[0]}) { + debug( "Virtual entry ".join( ':', @data), 2); + @data_fuzzy = @data; } elsif ($data[0] eq 'us') { debug( "Fuzzy entry ".join( ':', @data), 2); - @data_fuzzy = @data; + @data_fuzzy = @data unless @data_fuzzy; } } } @@ -413,6 +418,7 @@ sub do_names_search { $postfixes->seq( $key, $prefixes, R_CURSOR ); while (index($key, $keyword) >= 0) { if ($prefixes =~ /^\001(\d+)/o) { + debug( "$key has too many hits", 2 ); $too_many_hits += $1; } else { foreach (split /\000/o, $prefixes) {