From 6af10f3657d5ef5e0d15fe4a48590655fe136b7b Mon Sep 17 00:00:00 2001
From: Frank Lichtenheld
Date: Thu, 2 Mar 2006 00:29:27 +0000
Subject: [PATCH] - Further fixes to the arch handling - Give some hints for
related searches
---
lib/Packages/CGI.pm | 2 +-
lib/Packages/DoSearchContents.pm | 56 +++++++++++++++++++-------------
2 files changed, 35 insertions(+), 23 deletions(-)
diff --git a/lib/Packages/CGI.pm b/lib/Packages/CGI.pm
index b8607c9..0dded21 100644
--- a/lib/Packages/CGI.pm
+++ b/lib/Packages/CGI.pm
@@ -435,7 +435,7 @@ sub make_search_url {
push @path, $Packages::Config::SEARCH_URL
if $Packages::Config::SEARCH_URL;
foreach my $p (qw(lang source suite archive section subsection
- exact mode searchon format debug)) {
+ arch exact mode searchon format debug)) {
my $val = $url_params{$p};
$val = $query_params{$p} if exists $query_params{$p};
$val = $override->{$p} if exists $override->{$p};
diff --git a/lib/Packages/DoSearchContents.pm b/lib/Packages/DoSearchContents.pm
index b86f239..3079f92 100644
--- a/lib/Packages/DoSearchContents.pm
+++ b/lib/Packages/DoSearchContents.pm
@@ -17,7 +17,7 @@ use Packages::Search qw( :all );
use Packages::CGI;
use Packages::DB;
use Packages::Config qw( $DBDIR $SEARCH_URL $SEARCH_PAGE
- @SUITES @ARCHIVES $ROOT );
+ @SUITES @ARCHIVES @ARCHITECTURES $ROOT );
sub do_search_contents {
my ($params, $opts, $html_header, $menu, $page_content) = @_;
@@ -126,14 +126,14 @@ sub do_search_contents {
$wording, $keyword_enc,
$suite_wording, $section_wording, $arch_wording ) );
+ msg( _g("Search in other suite:")." ".
+ join( ' ', map { '[$_}).
+ "\">$_]" } @SUITES ) );
+
if ($Packages::Search::too_many_hits) {
error( _g( "Your search was too wide so we will only display only the first about 100 matches. Please consider using a longer keyword or more keywords." ) );
}
- if (!@Packages::CGI::fatal_errors && !@results) {
- error( _g( "Nothing found" ) );
- }
-
%$html_header = ( title => _g( 'Package Contents Search Results' ),
lang => $opts->{lang},
title_tag => _g( 'Debian Package Contents Search Results' ),
@@ -151,25 +151,37 @@ sub do_search_contents {
);
$$page_content = '';
- if (@results) {
- my (%results,%archs);
- foreach my $result (sort { $a->[0] cmp $b->[0] } @results) {
- my $file = shift @$result;
- my %pkgs;
- foreach (@$result) {
- my ($pkg, $arch) = split /:/, $_;
- next unless $opts->{h_archs}{$arch};
- $pkgs{$pkg}{$arch}++;
- $archs{$arch}++ unless $arch eq 'all';
- }
- next unless keys %pkgs;
- $results{$file} = \%pkgs;
+ my (%results,%archs);
+ foreach my $result (sort { $a->[0] cmp $b->[0] } @results) {
+ my $file = shift @$result;
+ my %pkgs;
+ foreach (@$result) {
+ my ($pkg, $arch) = split /:/, $_;
+ next unless $opts->{h_archs}{$arch};
+ $pkgs{$pkg}{$arch}++;
+ $archs{$arch}++ unless $arch eq 'all';
}
- my @all_archs = keys %archs;
- debug( "all_archs = @all_archs", 1 ) if DEBUG;
+ next unless keys %pkgs;
+ $results{$file} = \%pkgs;
+ }
+ my @all_archs = keys %archs;
+ @all_archs = @ARCHITECTURES unless @all_archs;
+ debug( "all_archs = @all_archs", 1 ) if DEBUG;
+ msg(_g("Limit search to a specific architecture:")." ".
+ join( ' ', map { '[$_}).
+ "\">$_]" } @all_archs ) )
+ unless (@{$opts->{arch}} == 1) || (@all_archs == 1);
+ msg(sprintf(_g('Search in all architectures'),
+ make_search_url('',"keywords=$keyword_esc",{arch=>undef})))
+ if @{$opts->{arch}} == 1;
+
+ if (!@Packages::CGI::fatal_errors && !keys(%results)) {
+ error( _g( "Nothing found" ) );
+ }
+ if (keys %results) {
$$page_content .= "".sprintf( _g( 'Found %s results' ),
- scalar @results )."
";
+ scalar keys %results )."
";
$$page_content .= ''._g('File').' | '._g('Packages')
.' |
';
@@ -188,7 +200,7 @@ sub do_search_contents {
join(' ', grep { !$results{$file}{$pkg}{$_} } @all_archs).']';
}
}
- push @pkgs, "$pkg$arch_str";
+ push @pkgs, "$suite})."\">$pkg$arch_str";
}
$$page_content .= join( ", ", @pkgs);
$$page_content .= '';
--
2.39.2