) {
+ $_ =~ $regex or next;
+ print "DEBUG: Matched line $.
" if $debug > 2;
+ push @lines, $.;
+ }
+ close DESC;
+
+ tie my %packages, 'DB_File', "$DBDIR/$lookup", O_RDONLY, 0666, $DB_BTREE
+ or die "couldn't tie DB $DBDIR/$lookup: $!";
+ tie my %did2pkg, 'DB_File', "$DBDIR/$mapping", O_RDONLY, 0666, $DB_BTREE
+ or die "couldn't tie DB $DBDIR/$mapping: $!";
+
+ 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 );
}
+ return \@results;
+}
+
+if ($searchon eq 'names') {
+ push @results, @{ do_names_search( $keyword, 'packages_small.db',
+ 'package_postfixes.db',
+ \&read_entry, \%opts ) };
+} elsif ($searchon eq 'sourcenames') {
+ push @results, @{ do_names_search( $keyword, 'sources_small.db',
+ 'source_postfixes.db',
+ \&read_src_entry, \%opts ) };
+} else {
+ push @results, @{ do_names_search( $keyword, 'packages_small.db',
+ 'package_postfixes.db',
+ \&read_entry, \%opts ) };
+ push @results, @{ do_fulltext_search( $keyword, 'descriptions.txt',
+ 'descriptions_packages.db',
+ 'packages_small.db',
+ \&read_entry, \%opts ) };
}
my $st1 = new Benchmark;
@@ -244,6 +351,10 @@ if ($format eq 'html') {
}
}
+if ($too_many_hits) {
+print "Your search was too wide so we will only display exact matches. At least $too_many_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 );
@@ -334,7 +445,7 @@ unless ($search_on_sources) {
$rdf->addns( debpkg => 'http://packages.debian.org/xml/01-debian-packages-rdf' );
my @triples;
foreach my $pkg (sort keys %pkgs) {
- foreach my $ver (@DISTS) {
+ foreach my $ver (@SUITES) {
if (exists $pkgs{$pkg}{$ver}) {
my @versions = version_sort keys %{$pkgs{$pkg}{$ver}};
foreach my $version (@versions) {
@@ -357,14 +468,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') {
@@ -387,12 +498,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;
}
@@ -443,7 +554,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
";
}
@@ -502,5 +615,11 @@ print <
END
+my $pete = new Benchmark;
+my $petd = timediff($pete, $pet0);
+print "Total page evaluation took ".timestr($petd)."
"
+ if $debug_allowed;
print $input->end_html;
}
+
+# vim: ts=8 sw=4