- msg( sprintf( _g("You have searched for %s <em>%s</em> in %s, %s, and %s." ),
- $wording, $keyword_enc,
- $suite_wording, $section_wording, $arch_wording ) );
-
- 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' ),
- print_title => 1,
- print_search_field => 'packages',
- search_field_values => {
- keywords => $keyword_enc,
- searchon => 'contents',
- arch => $archs_enc,
- suite => $suites_enc,
- section => $sections_enc,
- exact => $opts->{exact},
- debug => $opts->{debug},
- },
- );
-
- $$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 @all_archs = keys %archs;
- debug( "all_archs = @all_archs", 1 ) if DEBUG;
-
- $$page_content .= "<p>".sprintf( _g( 'Found %s results' ),
- scalar @results )."</p>";
- $$page_content .= '<div
- id="pcontentsres"><table><colgroup><col><col></colgroup><tr><th>'._g('File').'</th><th>'._g('Packages')
- .'</th></tr>';
- foreach my $file (sort keys %results) {
- $$page_content .= "<tr><td class=\"file\">/$file</td><td>";
- my @pkgs;
+ my @all_archs = keys %archs;
+ @all_archs = @ARCHITECTURES unless @all_archs;
+ $page_content->{suite} = $suite;
+ $page_content->{archive} = $archive;
+ $page_content->{all_architectures} = \@all_archs;
+ $page_content->{all_suites} = \@SUITES;
+ $page_content->{mode} = $mode;
+ $page_content->{search_architectures} = $opts->{arch};
+ $page_content->{search_keywords} = $opts->{keywords};
+ $page_content->{sections} = $opts->{section};
+ $page_content->{too_many_hits} = $Packages::Search::too_many_hits;
+
+ debug( "all_archs = @all_archs", 1 ) if DEBUG;
+
+ if (keys %results) {
+ my $sort_func = sub { $_[0] cmp $_[1] };
+ $sort_func = sub { (sort keys %{$results{$_[0]}})[0]
+ cmp
+ (sort keys %{$results{$_[1]}})[0]
+ } if $opts->{sort_by} eq 'pkg';
+
+ $page_content->{results} = [];
+ foreach my $file (sort {&$sort_func($a,$b)} keys %results) {
+ my %result;
+ $result{file} = "/$file";
+ $result{packages} = [];