]> git.donarmstrong.com Git - debbugs.git/commitdiff
* Add a getmaintainers_rev to Debbugs::CGI
authorDon Armstrong <don@volo>
Wed, 13 Dec 2006 07:43:22 +0000 (23:43 -0800)
committerDon Armstrong <don@volo>
Wed, 13 Dec 2006 07:43:22 +0000 (23:43 -0800)
 * Move the address parser to Debbugs::Common

Debbugs/CGI.pm

index 45b817c5a17c0f1c3b1e6e66fa8e3971f471d16b..e5f237581daacb066589bc2508b0f881f3160761 100644 (file)
@@ -29,7 +29,7 @@ use vars qw($VERSION $DEBUG %EXPORT_TAGS @EXPORT_OK @EXPORT);
 use base qw(Exporter);
 use Debbugs::URI;
 use HTML::Entities;
-use Debbugs::Common qw();
+use Debbugs::Common qw(getparsedaddrs);
 use Params::Validate qw(validate_with :types);
 use Debbugs::Config qw(:config);
 use Mail::Address;
@@ -51,7 +51,7 @@ BEGIN{
                     html   => [qw(html_escape htmlize_bugs htmlize_packagelinks),
                                qw(maybelink htmlize_addresslinks htmlize_maintlinks),
                               ],
-                    util   => [qw(getparsedaddrs cgi_parameters quitcgi),
+                    util   => [qw(cgi_parameters quitcgi),
                                qw(getmaintainers getpseudodesc splitpackages)
                               ],
                     #status => [qw(getbugstatus)],
@@ -463,22 +463,12 @@ sub htmlize_maintlinks {
 }
 
 
-
-my %_parsedaddrs;
-sub getparsedaddrs {
-    my $addr = shift;
-    return () unless defined $addr;
-    return wantarray?@{$_parsedaddrs{$addr}}:$_parsedaddrs{$addr}[0]
-        if exists $_parsedaddrs{$addr};
-    @{$_parsedaddrs{$addr}} = Mail::Address->parse($addr);
-    return wantarray?@{$_parsedaddrs{$addr}}:$_parsedaddrs{$addr}[0];
-}
-
-
 my $_maintainer;
+my $_maintainer_rev;
 sub getmaintainers {
     return $_maintainer if $_maintainer;
     my %maintainer;
+    my %maintainer_rev;
     for my $file (@config{qw(maintainer_file maintainer_file_override)}) {
         next unless defined $file;
         my $maintfile = new IO::File $file,'r' or
@@ -488,12 +478,22 @@ sub getmaintainers {
              ($a,$b)=($1,$2);
              $a =~ y/A-Z/a-z/;
              $maintainer{$a}= $b;
+             for my $maint (map {lc($_->address)} getparsedaddrs($b)) {
+                  push @{$maintainer_rev{$maint}},$a;
+             }
         }
         close($maintfile);
     }
     $_maintainer = \%maintainer;
+    $_maintainer_rev = \%maintainer_rev;
     return $_maintainer;
 }
+sub getmaintainers_reverse{
+     return $_maintainer_rev if $_maintainer_rev;
+     getmaintainers();
+     return $_maintainer_rev;
+}
+
 
 my $_pseudodesc;
 sub getpseudodesc {