]> git.donarmstrong.com Git - debbugs.git/blobdiff - Debbugs/Packages.pm
* fix extraneous semicolon
[debbugs.git] / Debbugs / Packages.pm
index 6f12a3032e09b7b416d1320b770b16510957cd3f..f43e8b54e20cf9b00ad3948527ad7f7dbabeb74d 100644 (file)
@@ -139,6 +139,9 @@ arch(s), and verion(s) passed.
 In SCALAR context, only the corresponding source packages are
 returned, concatenated with ', ' if necessary.
 
+If no source can be found, returns undef in scalar context, or the
+empty list in list context.
+
 =over
 
 =item binary -- binary package name(s) as a SCALAR or ARRAYREF
@@ -266,9 +269,9 @@ sub binary_to_source{
            tie %_sourcetobinary, MLDBM => $config{source_binary_map}, O_RDONLY or
                die "Unable top open $gSourceBinaryMap for reading";
        }
-       for my $package (@package) {
-           if (exists $_sourcetobinary{$package}) {
-               push @source,[$package,$_] for keys %{$_sourcetobinary{$package}};
+       for my $maybe_sourcepkg (@binaries) {
+           if (exists $_sourcetobinary{$maybe_sourcepkg}) {
+               push @source,[$maybe_sourcepkg,$_] for keys %{$_sourcetobinary{$maybe_sourcepkg}};
            }
        }
        # if @source is still empty here, it's probably a non-existant
@@ -441,6 +444,10 @@ sub get_versions{
      }
      my %versions;
      for my $package (make_list($param{package})) {
+         my $source_only = 0;
+         if ($package =~ s/^src://) {
+              $source_only = 1;
+         }
          my $version = $versions->{$package};
          next unless defined $version;
          for my $dist (make_list($param{dist})) {
@@ -448,7 +455,7 @@ sub get_versions{
                             make_list($param{arch}):
                             (grep {not $param{no_source_arch} or
                                        $_ ne 'source'
-                                   } keys %{$version->{$dist}})) {
+                                   } $source_only?'source':keys %{$version->{$dist}})) {
                    next unless defined $version->{$dist}{$arch};
                    for my $ver (ref $version->{$dist}{$arch} ?
                                 keys %{$version->{$dist}{$arch}} :
@@ -608,7 +615,7 @@ sub make_source_versions {
                    }
                    my @srcinfo = binary_to_source(binary => $pkg,
                                                   version => $version,
-                                                  arch    => $arch);
+                                                  length($arch)?(arch    => $arch):());
                    if (not @srcinfo) {
                        # We don't have explicit information about the
                        # binary-to-source mapping for this version