]> git.donarmstrong.com Git - debbugs.git/commitdiff
Add maint_decode function to Debbugs::CGI
authorDon Armstrong <don@donarmstrong.com>
Wed, 20 Jun 2007 18:00:44 +0000 (19:00 +0100)
committerDon Armstrong <don@donarmstrong.com>
Wed, 20 Jun 2007 18:00:44 +0000 (19:00 +0100)
Debbugs/CGI.pm

index 3d1f2c4f1106f48d90a0223cf9fc2f0c1c07945c..13e4557ae062c718e1f095b21faf8c0749594989 100644 (file)
@@ -63,10 +63,11 @@ BEGIN{
                     util   => [qw(cgi_parameters quitcgi),
                                qw(getpseudodesc)
                               ],
+                    misc   => [qw(maint_decode)],
                     #status => [qw(getbugstatus)],
                    );
      @EXPORT_OK = ();
-     Exporter::export_ok_tags(qw(url html util));
+     Exporter::export_ok_tags(qw(url html util misc));
      $EXPORT_TAGS{all} = [@EXPORT_OK];
 }
 
@@ -554,6 +555,36 @@ sub bug_linklist{
 }
 
 
+=head1 misc
+
+=cut
+
+=head2 maint_decode
+
+     maint_decode
+
+Decodes the funky maintainer encoding.
+
+Don't ask me what in the world it does.
+
+=cut
+
+sub maint_decode {
+     my @input = @_;
+     return () unless @input;
+     my @output;
+     for my $input (@input) {
+         my $decoded = $input;
+         $decoded =~ s/-([^_]+)/-$1_-/g;
+         $decoded =~ s/_/-20_/g;
+         $decoded =~ s/^,(.*),(.*),([^,]+)$/$1-40_$2-20_-28_$3-29_/;
+         $decoded =~ s/^([^,]+),(.*),(.*),/$1-20_-3c_$2-40_$3-3e_/;
+         $decoded =~ s/\./-2e_/g;
+         $decoded =~ s/-([0-9a-f]{2})_/pack('H*',$1)/ge;
+         push @output,$decoded;
+     }
+     wantarray ? @output : $output[0];
+}
 
 
 1;