]> git.donarmstrong.com Git - debbugs.git/commitdiff
parse the status before outputting it
authorDon Armstrong <don@donarmstrong.com>
Thu, 6 Jul 2017 01:20:11 +0000 (18:20 -0700)
committerDon Armstrong <don@donarmstrong.com>
Thu, 6 Jul 2017 01:20:11 +0000 (18:20 -0700)
bin/local-debbugs

index 4cfb7858fd4501d1f806d7d648d24286206a9fa2..0223da14ac7c3f4d0ca8f9bae8496e98fa3c2ddc 100755 (executable)
@@ -224,7 +224,7 @@ EOF
          package local_debbugs::server;
          use IO::File;
          use HTTP::Server::Simple;
-         use base qw(HTTP::Server::Simple::CGI);
+         use base qw(HTTP::Server::Simple::CGI HTTP::Server::Simple::CGI::Environment);
 
          sub net_server {
               return 'Net::Server::Fork';
@@ -280,10 +280,28 @@ EOF
               }
               elsif ($path =~ m{^/?cgi(?:-bin)?/((?:(?:bug|pkg)report|version)\.cgi)}) {
                    # dispatch to pkgreport.cgi
-                   print "HTTP/1.1 200 OK\n";
-                   exec("$options{cgi_bin}/$1") or
-                        die "Unable to execute $options{cgi_bin}/$1";
-              }
+                   #print "HTTP/1.1 200 OK\n";
+                   open(my $fh,'-|',"$options{cgi_bin}/$1") or
+                       die "Unable to execute $options{cgi_bin}/$1";
+                   my $status;
+                   my $cache = '';
+                   while (<$fh>) {
+                       if (/Status: (\d+\s+.+?)\n?$/) {
+                           $status = $1;
+                           print "HTTP/1.1 $status\n";
+                           print STDERR "'$status'\n";
+                           last;
+                       }
+                       $cache .= $_;
+                       if (/^$/) {
+                           print "HTTP/1.1 200 OK\n";
+                           last;
+                       }
+                   }
+                   print $cache;
+                   print <$fh>;
+                   close($fh) or die "Unable to close";
+               }
               elsif ($path =~ m{^/?css/bugs.css}) {
                    my $fh = IO::File->new($options{css},'r') or
                         die "Unable to open $options{css} for reading: $!";