X-Git-Url: https://git.deb.at/?a=blobdiff_plain;f=lib%2FPackages%2FDoSearchContents.pm;h=b1057f83bd51a084baed256bb4eac4b2630e96e9;hb=a38d98d27880c8fc0f4d98646e318ecc1d39884f;hp=3079f92de025aedd126746745b47f8fe6a1a40a2;hpb=6af10f3657d5ef5e0d15fe4a48590655fe136b7b;p=deb%2Fpackages.git diff --git a/lib/Packages/DoSearchContents.pm b/lib/Packages/DoSearchContents.pm index 3079f92..b1057f8 100644 --- a/lib/Packages/DoSearchContents.pm +++ b/lib/Packages/DoSearchContents.pm @@ -44,8 +44,7 @@ sub do_search_contents { $$menu = ""; my $keyword = $opts->{keywords}; - my $searchon = $opts->{searchon}; - my $exact = $opts->{exact}; + my $mode = $opts->{mode} || ''; my $suite = $opts->{suite}[0]; my $archive = $opts->{archive}[0] ||''; $Packages::Search::too_many_hits = 0; @@ -58,7 +57,6 @@ sub do_search_contents { # for output my $keyword_enc = encode_entities $keyword || ''; - 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}} ), '&<>"' ); my $archs_enc = encode_entities( join( ', ', @{$params->{values}{arch}{no_replace}} ), '&<>"' ); @@ -72,7 +70,7 @@ sub do_search_contents { my $kw = lc $keyword; # full filename search is tricky - my $ffn = $searchon eq 'filenames'; + my $ffn = $mode eq 'filename'; my $reverses = tie my %reverses, 'DB_File', "$DBDIR/contents/reverse_$suite.db", O_RDONLY, 0666, $DB_BTREE @@ -82,9 +80,6 @@ sub do_search_contents { open FILENAMES, '-|', 'fgrep', '--', $kw, "$DBDIR/contents/filenames_$suite.txt" or die "Failed opening filename table: $!"; - error( _g( "Exact and fullfilenamesearch don't go along" ) ) - if $ffn and $exact; - while () { chomp; &searchfile(\@results, reverse($_)."/", \$nres, $reverses); @@ -96,7 +91,7 @@ sub do_search_contents { $kw = reverse $kw; # exact filename searching follows trivially: - $kw = "$kw/" if $exact; + $kw = "$kw/" if $mode eq 'exactfilename'; &searchfile(\@results, $kw, \$nres, $reverses); } @@ -114,18 +109,29 @@ sub do_search_contents { : sprintf(_g("section(s) %s"), $sections_enc ); my $arch_wording = $archs_enc eq 'any' ? _g("all architectures") : sprintf(_g("architecture(s) %s"), $archs_enc ); - my $wording = _g("filenames that contain"); - if ($searchon eq 'contents') { - if ($opts->{exact}) { - $wording = _g("files named"); - } else { - $wording = _g("paths that end with"); - } + my $wording = _g("paths that end with"); + if ($mode eq 'filename') { + $wording = _g("files named"); + } elsif ($mode eq 'exactfilename') { + $wording = _g("filenames that contain"); } msg( sprintf( _g("You have searched for %s %s in %s, %s, and %s." ), $wording, $keyword_enc, $suite_wording, $section_wording, $arch_wording ) ); + if ($mode ne 'filename') { + msg( ''filename'}). + "\">"._g("Search within filenames").""); + } + if ($mode ne 'exactfilename') { + msg( ''exactfilename'}). + "\">"._g("Search exact filename").""); + } + if ($mode eq 'exactfilename' || $mode eq 'filename') { + msg( 'undef}). + "\">"._g("Search for paths ending with").""); + } + msg( _g("Search in other suite:")." ". join( ' ', map { '[$_}). "\">$_]" } @SUITES ) ); @@ -184,9 +190,11 @@ sub do_search_contents { scalar keys %results )."

"; $$page_content .= '
'; + ."\n"; foreach my $file (sort keys %results) { - $$page_content .= "'; + $$page_content .= "\n"; } - $$page_content .= '' if @results > 20; + $$page_content .= '\n" if @results > 20; $$page_content .= '
'._g('File').''._g('Packages') - .'
/$file"; + my $file_enc = encode_entities($file); + $file_enc =~ s#(\Q$keyword_enc\E)#$1#g; + $$page_content .= "
/$file_enc"; my @pkgs; foreach my $pkg (sort keys %{$results{$file}}) { my $arch_str = ''; @@ -203,9 +211,9 @@ sub do_search_contents { push @pkgs, "$suite})."\">$pkg$arch_str"; } $$page_content .= join( ", ", @pkgs); - $$page_content .= '
'._g('File').''._g('Packages').'
'._g('File').''._g('Packages')."
'; } } # sub do_search_contents