]> git.donarmstrong.com Git - debbugs.git/blobdiff - Debbugs/Common.pm
merge master
[debbugs.git] / Debbugs / Common.pm
index abc98dc6efe6f5d65191ae3f012004c4ff8891f1..b5842d1f6bcf9734655c3be575cff1099f18a713 100644 (file)
@@ -40,6 +40,7 @@ BEGIN{
      @EXPORT = ();
      %EXPORT_TAGS = (util   => [qw(getbugcomponent getbuglocation getlocationpath get_hashname),
                                qw(appendfile overwritefile buglog getparsedaddrs getmaintainers),
+                                qw(getsourcemaintainers getsourcemaintainers_reverse),
                                qw(bug_status),
                                qw(getmaintainers_reverse),
                                qw(getpseudodesc),
@@ -299,6 +300,36 @@ sub getmaintainers_reverse{
      return $_maintainer_rev;
 }
 
+=head2 getsourcemaintainers
+
+     my $maintainer = getsourcemaintainers()->{debbugs}
+
+Returns a hashref of src_package => maintainer pairs.
+
+=cut
+
+our $_source_maintainer = undef;
+our $_source_maintainer_rev = undef;
+sub getsourcemaintainers {
+    return $_source_maintainer if defined $_source_maintainer;
+    package_maintainer(rehash => 1);
+    return $_source_maintainer;
+}
+
+=head2 getsourcemaintainers_reverse
+
+     my @src_packages = @{getsourcemaintainers_reverse->{'don@debian.org'}||[]};
+
+Returns a hashref of maintainer => [qw(list of source packages)] pairs.
+
+=cut
+
+sub getsourcemaintainers_reverse{
+     return $_source_maintainer_rev if defined $_source_maintainer_rev;
+     package_maintainer(rehash => 1);
+     return $_source_maintainer_rev;
+}
+
 =head2 package_maintainer
 
      my @s = package_maintainer(source => [qw(foo bar baz)],
@@ -324,8 +355,6 @@ files; defaults to 0
 
 =cut
 
-our $_source_maintainer = undef;
-our $_source_maintainer_rev = undef;
 sub package_maintainer {
     my %param = validate_with(params => \@_,
                              spec   => {source => {type => SCALAR|ARRAYREF,
@@ -435,11 +464,8 @@ sub __add_to_hash {
     binmode($fh,':encoding(UTF-8)');
     while (<$fh>) {
        chomp;
-        my @elements = split /\t/;
-        next unless @elements >=2;
-        # we do this because the source maintainer file contains the
-        # archive location, which we don't care about
-        my ($key,$value)=($elements[0],$elements[-1]);
+        next unless m/^(\S+)\s+(\S.*\S)\s*$/;
+        my ($key,$value)=($1,$2);
        $key = lc $key;
        $forward->{$key}= $value;
        if (defined $reverse) {