X-Git-Url: https://git.deb.at/?p=deb%2Fpackages.git;a=blobdiff_plain;f=lib%2FPackages%2FDoSearch.pm;fp=lib%2FPackages%2FDoSearch.pm;h=1a5cf2e466d1eacf446c6216691fdfeebc262db8;hp=35ee88fa5a02f0705f3a38121075e3a898fe70a7;hb=a38d98d27880c8fc0f4d98646e318ecc1d39884f;hpb=4452916120a65632430780fd0eb16f63811517b9 diff --git a/lib/Packages/DoSearch.pm b/lib/Packages/DoSearch.pm index 35ee88f..1a5cf2e 100644 --- a/lib/Packages/DoSearch.pm +++ b/lib/Packages/DoSearch.pm @@ -34,15 +34,15 @@ sub do_search { $$menu = ""; - my $keyword = $opts->{keywords}; + my @keywords = @{$opts->{keywords}}; my $searchon = $opts->{searchon}; # for URL construction - my $keyword_esc = uri_escape( $keyword ); + my $keyword_esc = uri_escape( "@keywords" ); $opts->{keywords_esc} = $keyword_esc; # for output - my $keyword_enc = encode_entities $keyword || ''; + my $keyword_enc = encode_entities "@keywords" || ''; my $searchon_enc = encode_entities $searchon; my $suites_enc = encode_entities( join( ', ', @{$params->{values}{suite}{no_replace}} ) ); my $sections_enc = encode_entities( join( ', ', @{$params->{values}{section}{no_replace}} ) ); @@ -55,22 +55,19 @@ sub do_search { if ($searchon eq 'names') { if ($opts->{source}) { - do_names_search( $keyword, \%sources, $sp_obj, + do_names_search( \@keywords, \%sources, $sp_obj, \&read_src_entry_all, $opts, \@results, \@non_results ); } else { - do_names_search( $keyword, \%packages, $p_obj, + do_names_search( \@keywords, \%packages, $p_obj, \&read_entry_all, $opts, \@results, \@non_results ); } -# } elsif ($searchon eq 'contents') { -# require "./search_contents.pl"; -# &contents($input); } else { - do_names_search( $keyword, \%packages, $p_obj, + do_names_search( \@keywords, \%packages, $p_obj, \&read_entry_all, $opts, \@results, \@non_results ); - do_fulltext_search( $keyword, "$DBDIR/descriptions.txt", + do_fulltext_search( \@keywords, "$DBDIR/descriptions.txt", \%did2pkg, \%packages, \&read_entry_all, $opts, \@results, \@non_results ); @@ -179,7 +176,7 @@ sub do_search { my %uniq_pkgs = map { $_ => 1 } (keys %pkgs, keys %provided_by); my @pkgs = sort keys %uniq_pkgs; - $$page_content .= print_packages( \%pkgs, \@pkgs, $opts, $keyword, + $$page_content .= print_packages( \%pkgs, \@pkgs, $opts, \@keywords, \&print_package, \%provided_by, \%archives, \%sect, \%subsect, \%desc ); @@ -210,7 +207,7 @@ sub do_search { } my @pkgs = sort keys %pkgs; - $$page_content .= print_packages( \%pkgs, \@pkgs, $opts, $keyword, + $$page_content .= print_packages( \%pkgs, \@pkgs, $opts, \@keywords, \&print_src_package, \%archives, \%sect, \%subsect, \%binaries ); } # else unless $opts->{source} @@ -218,16 +215,18 @@ sub do_search { } # sub do_search sub print_packages { - my ($pkgs, $pkgs_list, $opts, $keyword, $print_func, @func_args) = @_; + my ($pkgs, $pkgs_list, $opts, $keywords, $print_func, @func_args) = @_; #my ($start, $end) = multipageheader( $input, scalar @pkgs, \%opts ); my $str = '
'; $str .= "

".sprintf( _g( "Found %s matching packages." ), scalar @$pkgs_list )."

"; #my $count = 0; + my $keyword; + $keyword = $keywords->[0] if @$keywords == 1; my $have_exact; - if (grep { $_ eq $keyword } @$pkgs_list) { + if ($keyword && grep { $_ eq $keyword } @$pkgs_list) { $have_exact = 1; $str .= '

'._g( "Exact hits" ).'

'; $str .= &$print_func( $keyword, $pkgs->{$keyword}||{},