X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Debbugs%2FPackages.pm;h=b129c8e1a1b7d6e51d8c841e80a10bfb87ce313d;hb=95b4163168ff88583edafcda834501f61fe22222;hp=30ca114c2007fdbaca719492c54ccb20a50ebcc8;hpb=46331f78300d42fa531aef1856fa523bcd5c493a;p=debbugs.git diff --git a/Debbugs/Packages.pm b/Debbugs/Packages.pm index 30ca114..b129c8e 100644 --- a/Debbugs/Packages.pm +++ b/Debbugs/Packages.pm @@ -122,10 +122,15 @@ sub getsrcpkgs { =item binarytosource Returns a reference to the source package name and version pair -corresponding to a given binary package name, version, and architecture. If -undef is passed as the architecture, returns a list of references to all -possible pairs of source package names and versions for all architectures, -with any duplicates removed. +corresponding to a given binary package name, version, and architecture. + +If undef is passed as the architecture, returns a list of references +to all possible pairs of source package names and versions for all +architectures, with any duplicates removed. + +If the binary version is not passed either, returns a list of possible +source package names for all architectures at all versions, with any +duplicates removed. =cut @@ -146,7 +151,18 @@ sub binarytosource { my $binary = $_binarytosource{$binname}; return () unless defined $binary; my %binary = %{$binary}; - if (exists $binary{$binver}) { + if (not defined $binver) { + my %uniq; + for my $ver (keys %binary) { + for my $ar (keys %{$binary{$binver}}) { + my $src = $binary{$binver}{$ar}; + next unless defined $src; + $uniq{$src->[0]} = 1; + } + } + return keys %uniq; + } + elsif (exists $binary{$binver}) { if (defined $binarch) { my $src = $binary{$binver}{$binarch}; return () unless defined $src; # not on this arch