) {
+ $_ =~ $regex or next;
+ print "DEBUG: Matched line $.
" if $debug > 2;
+ push @lines, $.;
+ }
+ close DESC;
+
+ my $obj = tie my %packages, 'DB_File', "$DBDIR/packages_small.db", O_RDONLY, 0666, $DB_BTREE
+ or die "couldn't tie DB $DBDIR/packages_small.db: $!";
+ my $obj = tie my %did2pkg, 'DB_File', "$DBDIR/descriptions_packages.db", O_RDONLY, 0666, $DB_BTREE
+ or die "couldn't tie DB $DBDIR/descriptions_packages.db: $!";
+
+ my %tmp_results;
+ foreach my $l (@lines) {
+ my $result = $did2pkg{$l};
+ foreach (split /\000/o, $result) {
+ my @data = split /\s/, $_, 3;
+ next unless $archs{$data[2]};
+ $tmp_results{$data[0]}++;
}
}
+ foreach my $pkg (keys %tmp_results) {
+ read_entry( \%packages, $pkg, \@results );
+ }
}
my $st1 = new Benchmark;
@@ -234,6 +335,10 @@ if ($format eq 'html') {
}
}
+if ($too_much_hits) {
+print "Your search was too wide so we will only display exact matches. At least $too_much_hits results have been omitted and will not be displayed. Please consider using a longer keyword or more keywords.
";
+}
+
if (!@results) {
if ($format eq 'html') {
my $keyword_esc = uri_escape( $keyword );
@@ -278,11 +383,12 @@ my (%pkgs, %sect, %part, %desc, %binaries);
unless ($search_on_sources) {
foreach (@results) {
- my ($pkg_t, $suite, $arch, $section, $priority, $version, $desc) = @$_;
+ my ($pkg_t, $suite, $arch, $section, $subsection,
+ $priority, $version, $desc) = @$_;
my ($package) = $pkg_t =~ m/^(.+)/; # untaint
$pkgs{$package}{$suite}{$version}{$arch} = 1;
- $sect{$package}{$suite}{$version} = 'subsection';
+ $sect{$package}{$suite}{$version} = $subsection;
$part{$package}{$suite}{$version} = $section unless $section eq 'main';
$desc{$package}{$suite}{$version} = $desc;
@@ -346,14 +452,14 @@ unless ($search_on_sources) {
}
} else {
foreach (@results) {
- my ($package, $suite, $section, $version, $binaries);
+ my ($package, $suite, $section, $subsection, $priority,
+ $version, $binaries) = @$_;
$pkgs{$package}{$suite} = $version;
- $sect{$package}{$suite}{source} = 'subsection';
+ $sect{$package}{$suite}{source} = $subsection;
$part{$package}{$suite}{source} = $section unless $section eq 'main';
$binaries{$package}{$suite} = [ sort split( /\s*,\s*/, $binaries ) ];
-
}
if ($format eq 'html') {
@@ -376,12 +482,12 @@ unless ($search_on_sources) {
print "
Binary packages: ";
my @bp_links;
foreach my $bp (@{$binaries{$pkg}{$ver}}) {
- my $sect = find_section($bp, $ver, $part{$pkg}{$ver}{source}||'main') || '';
- $sect =~ s,^(non-free|contrib)/,,;
- $sect =~ s,^non-US.*$,non-US,,;
+ my $sect = 'section';
+
my $bp_link;
if ($sect) {
- $bp_link = sprintf "%s", $ver, $sect, uri_escape( $bp ), $bp;
+ $bp_link = sprintf( "%s",
+ $ver, $sect, uri_escape( $bp ), $bp );
} else {
$bp_link = $bp;
}
@@ -432,7 +538,9 @@ sub printindexline {
my $index_line;
if ($no_results > $results_per_page) {
- $index_line = prevlink($input,\%params)." | ".indexline( $input, \%params, $no_results)." | ".nextlink($input,\%params, $no_results);
+ $index_line = prevlink($input,\%params)." | ".
+ indexline( $input, \%params, $no_results)." | ".
+ nextlink($input,\%params, $no_results);
print "$index_line
";
}