X-Git-Url: https://git.deb.at/?a=blobdiff_plain;f=cgi-bin%2Fsearch_packages.pl;h=a7184dc7d5050a4c6a61365536672fdd6f343d27;hb=e297f56fb5ba59c24f4b3d325b8a43fc05c71f5d;hp=0c78978fdef0914ee3bc470d9837fdefa640bc6f;hpb=062e8d549a090da0d2aa21cf2bdcf068bf4010fc;p=deb%2Fpackages.git
diff --git a/cgi-bin/search_packages.pl b/cgi-bin/search_packages.pl
index 0c78978..a7184dc 100755
--- a/cgi-bin/search_packages.pl
+++ b/cgi-bin/search_packages.pl
@@ -159,8 +159,7 @@ unless (@Packages::CGI::fatal_errors) {
\&read_src_entry, \%opts ) };
} elsif ($searchon eq 'contents') {
require "./search_contents.pl";
- &contents(\$input);
- exit;
+ &contents($input);
} else {
push @results, @{ do_names_search( $keyword, \%packages,
$p_obj,
@@ -256,7 +255,7 @@ print_errors();
print_hints();
print_debug();
if (@results) {
- my (%pkgs, %subsect, %sect, %desc, %binaries, %provided_by);
+ my (%pkgs, %subsect, %sect, %archives, %desc, %binaries, %provided_by);
unless ($opts{searchon} eq 'sourcenames') {
foreach (@results) {
@@ -265,10 +264,18 @@ if (@results) {
my ($pkg) = $pkg_t =~ m/^(.+)/; # untaint
if ($arch ne 'virtual') {
+ my $real_archive;
+ if ($archive =~ /^(security|non-US)$/) {
+ $real_archive = $archive;
+ $archive = 'us';
+ }
+
$pkgs{$pkg}{$suite}{$archive}{$version}{$arch} = 1;
$subsect{$pkg}{$suite}{$archive}{$version} = $subsection;
$sect{$pkg}{$suite}{$archive}{$version} = $section
unless $section eq 'main';
+ $archives{$pkg}{$suite}{$archive}{$version} = $real_archive
+ if $real_archive;
$desc{$pkg}{$suite}{$archive}{$version} = $desc;
} else {
@@ -278,18 +285,22 @@ if (@results) {
my @pkgs = sort(keys %pkgs, keys %provided_by);
if ($opts{format} eq 'html') {
- my ($start, $end) = multipageheader( $input, scalar @pkgs, \%opts );
- my $count = 0;
+ #my ($start, $end) = multipageheader( $input, scalar @pkgs, \%opts );
+ print "
Found ".(scalar @pkgs)." matching packages,";
+ #my $count = 0;
foreach my $pkg (@pkgs) {
- $count++;
- next if $count < $start or $count > $end;
+ #$count++;
+ #next if $count < $start or $count > $end;
printf "
Package %s
\n", $pkg;
print "\n";
foreach my $suite (@SUITES) {
foreach my $archive (@ARCHIVES) {
+ next if $archive eq 'security';
+ next if $archive eq 'non-US';
my $path = $suite.(($archive ne 'us')?"/$archive":'');
if (exists $pkgs{$pkg}{$suite}{$archive}) {
+ my %archs_printed;
my @versions = version_sort keys %{$pkgs{$pkg}{$suite}{$archive}};
my $origin_str = "";
if ($sect{$pkg}{$suite}{$archive}{$versions[0]}) {
@@ -300,8 +311,16 @@ my @pkgs = sort(keys %pkgs, keys %provided_by);
$desc{$pkg}{$suite}{$archive}{$versions[0]}, $origin_str;
foreach my $v (@versions) {
- printf "
%s: %s\n",
- $v, join (" ", (sort keys %{$pkgs{$pkg}{$suite}{$archive}{$v}}) );
+ my $archive_str = "";
+ if ($archives{$pkg}{$suite}{$archive}{$v}) {
+ $archive_str .= " [$archives{$pkg}{$suite}{$archive}{$v}]";
+ }
+
+ my @archs_to_print = grep { !$archs_printed{$_} } sort keys %{$pkgs{$pkg}{$suite}{$archive}{$v}};
+ printf "
%s$archive_str: %s\n",
+ $v, join (" ", @archs_to_print )
+ if @archs_to_print;
+ $archs_printed{$_}++ foreach @archs_to_print;
}
if (my $provided_by = $provided_by{$pkg}{$suite}{$archive}) {
print '
also provided by: ',
@@ -324,21 +343,34 @@ my @pkgs = sort(keys %pkgs, keys %provided_by);
my ($pkg, $archive, $suite, $section, $subsection, $priority,
$version) = @$_;
+ my $real_archive = '';
+ if ($archive =~ /^(security|non-US)$/) {
+ $real_archive = $archive;
+ $archive = 'us';
+ }
+ if (($real_archive eq $archive) &&
+ $pkgs{$pkg}{$suite}{$archive} &&
+ (version_cmp( $pkgs{$pkg}{$suite}{$archive}, $version ) >= 0)) {
+ next;
+ }
$pkgs{$pkg}{$suite}{$archive} = $version;
$subsect{$pkg}{$suite}{$archive}{source} = $subsection;
$sect{$pkg}{$suite}{$archive}{source} = $section
unless $section eq 'main';
+ $archives{$pkg}{$suite}{$archive}{source} = $real_archive
+ if $real_archive;
$binaries{$pkg}{$suite}{$archive} = find_binaries( $pkg, $archive, $suite, \%src2bin );
}
if ($opts{format} eq 'html') {
- my ($start, $end) = multipageheader( $input, scalar keys %pkgs, \%opts );
- my $count = 0;
+ #my ($start, $end) = multipageheader( $input, scalar keys %pkgs, \%opts );
+ print "Found ".(scalar keys %pkgs)." matching packages,";
+ #my $count = 0;
foreach my $pkg (sort keys %pkgs) {
- $count++;
- next if ($count < $start) or ($count > $end);
+ #$count++;
+ #next if ($count < $start) or ($count > $end);
printf "
Source package %s
\n", $pkg;
print "\n";
foreach my $suite (@SUITES) {
@@ -348,6 +380,9 @@ my @pkgs = sort(keys %pkgs, keys %provided_by);
if ($sect{$pkg}{$suite}{$archive}{source}) {
$origin_str .= " [$sect{$pkg}{$suite}{$archive}{source}]";
}
+ if ($archives{$pkg}{$suite}{$archive}{source}) {
+ $origin_str .= " [$archives{$pkg}{$suite}{$archive}{source}]";
+ }
printf( "- %s (%s): %s %s",
$suite.(($archive ne 'us')?"/$archive":''), $pkg, $suite.(($archive ne 'us')?"/$archive":''), $subsect{$pkg}{$suite}{$archive}{source},
$pkgs{$pkg}{$suite}{$archive}, $origin_str );
@@ -368,7 +403,7 @@ my @pkgs = sort(keys %pkgs, keys %provided_by);
}
}
}
- printindexline( $input, scalar keys %pkgs, \%opts );
+ #printindexline( $input, scalar keys %pkgs, \%opts );
}
#print_results(\@results, \%opts) if @results;;
my $tet1 = new Benchmark;