]> git.deb.at Git - deb/packages.git/blobdiff - lib/Packages/Search.pm
Begin implementing virtual package support.
[deb/packages.git] / lib / Packages / Search.pm
index b545dbc5fa544c77bb07a59e1a247903c29e3fa6..b616f6f213de0b23392632af6b1be19ae4158810 100644 (file)
@@ -57,7 +57,7 @@ our @ISA = qw( Exporter );
 our @EXPORT_OK = qw( nextlink prevlink indexline
                      resperpagelink
                     read_entry read_entry_all read_entry_simple
-                    read_src_entry find_binaries
+                    read_src_entry read_src_entry_all find_binaries
                     do_names_search do_fulltext_search
                     printindexline multipageheader );
 our %EXPORT_TAGS = ( all => [ @EXPORT_OK ] );
@@ -346,8 +346,9 @@ sub read_entry_all {
        my @data = split ( /\s/o, $_, 8 );
        debug( "Considering entry ".join( ':', @data), 2);
        if ($opts->{h_archives}{$data[0]} && $opts->{h_suites}{$data[1]}
-           && ($opts->{h_archs}{$data[2]} || $data[2] eq 'all')
-           && $opts->{h_sections}{$data[3]}) {
+           && ($opts->{h_archs}{$data[2]} || $data[2] eq 'all'
+               || $data[2] eq 'virtual')
+           && ($opts->{h_sections}{$data[3]} || $data[3] eq '-')) {
            debug( "Using entry ".join( ':', @data), 2);
            push @$results, [ $key, @data ];
        } else {
@@ -379,8 +380,8 @@ sub read_entry_simple {
     }
     return \@data_fuzzy;
 }
-sub read_src_entry {
-    my ($hash, $key, $results, $opts) = @_;
+sub read_src_entry_all {
+    my ($hash, $key, $results, $non_results, $opts) = @_;
     my $result = $hash->{$key} || '';
     foreach (split /\000/o, $result) {
        my @data = split ( /\s/o, $_, 6 );
@@ -390,9 +391,16 @@ sub read_src_entry {
            && $opts->{h_sections}{$data[2]}) {
            debug( "Using entry ".join( ':', @data), 2);
            push @$results, [ $key, @data ];
+       } else {
+           push @$non_results, [ $key, @data ];
        }
     }
 }
+sub read_src_entry {
+    my ($hash, $key, $results, $opts) = @_;
+    my @non_results;
+    read_src_entry_all( $hash, $key, $results, \@non_results, $opts );
+}
 sub do_names_search {
     my ($keyword, $packages, $postfixes, $read_entry, $opts) = @_;
     my @results;
@@ -482,9 +490,11 @@ sub find_binaries {
     foreach (split /\000/o, $bins) {
        my @data = split /\s/, $_, 5;
 
+       debug( "find_binaries: considering @data", 3 );
        if (($data[0] eq $archive)
            && ($data[1] eq $suite)) {
            $bins{$data[2]}++;
+           debug( "find_binaries: using @data", 3 );
        }
     }