Don't use CGI.pm. Use some short code from joeyh instead, and raw html.
package debbugs;
use strict;
-use CGI qw/:standard/;
use POSIX qw(strftime tzset);
#require '/usr/lib/debbugs/errorlib';
require '/etc/debbugs/text';
use vars(qw($gHTMLTail $gWebDomain));
+
+sub readparse {
+ # Parse query string. I could use CGI.pm here, but it is 6 thousand
+ # lines long and very expensive. I want light-weight.
+ my ($in, $key, $val, %ret);
+ if (defined $ENV{"QUERY_STRING"} && $ENV{"QUERY_STRING"} ne "") {
+ $in=$ENV{QUERY_STRING};
+ } elsif(defined $ENV{"REQUEST_METHOD"}
+ && $ENV{"REQUEST_METHOD"} eq "POST")
+ {
+ read(STDIN,$in,$ENV{CONTENT_LENGTH});
+ } else {
+ return;
+ }
+ foreach (split(/&/,$in)) {
+ s/\+/ /g;
+ ($key, $val) = split(/=/,$_,2);
+ $key=~s/%(..)/pack("c",hex($1))/ge;
+ $val=~s/%(..)/pack("c",hex($1))/ge;
+ $ret{$key}=$val;
+ }
+ return %ret;
+}
+
+my %param = readparse();
+
my $tail_html;
my %maintainer = getmaintainers();
-my $ref= param('bug') || die("No bug number");
-my $archive = (param('archive') || 'no') eq 'yes';
-my $msg = param('msg') || "";
-my $boring = (param('boring') || 'no') eq 'yes';
-my $reverse = (param('reverse') || 'no') eq 'yes';
-
-set_option("archive", $archive);
+my $ref = $param{'bug'} || quit("No bug number");
+my $msg = $param{'msg'} || "";
+my $boring = ($param{'boring'} || 'no') eq 'yes';
+my $reverse = ($param{'reverse'} || 'no') eq 'yes';
my %status = getbugstatus($ref) or &quit("Couldn't get bug status: $!");
&quit("$ref state $normstate at end") unless $normstate eq 'kill-end';
close(L);
-print header;
-print start_html(
- -TEXT => "#000000",
- -BGCOLOR=>"#FFFFFF",
- -LINK => "#0000FF",
- -VLINK => "#800080",
- -title => "$debbugs::gProject $debbugs::gBug report logs - $short");
+print "Content-Type: text/html\n\n";
-print h1("$debbugs::gProject $debbugs::gBug report logs - $short<br>\n"
- . htmlsanit($status{subject}));
+print "<HTML><HEAD><TITLE>\n" .
+ "$debbugs::gProject $debbugs::gBug report logs - $short\n" .
+ "</TITLE></HEAD>\n" .
+ '<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#800080">' .
+ "\n";
+print "<H1>" . "$debbugs::gProject $debbugs::gBug report logs - $short" .
+ "<BR>" . htmlsanit($status{subject}) . "</H1>\n";
print "$descriptivehead\n";
-print hr;
+print "<HR>";
print "$log";
print $tail_html;
-print end_html;
+print "</BODY></HTML>\n";
exit 0;
sub quit {
my $msg = shift;
- print header . start_html("Error");
+ print "Content-Type: text/html\n\n";
+ print "<HTML><HEAD><TITLE>Error</TITLE></HEAD><BODY>\n";
print "An error occurred. Dammit.\n";
print "Error was: $msg.\n";
- print end_html;
+ print "</BODY></HTML>\n";
exit 0;
}
"forwarded", "forwarded to upstream software authors");
if (@bugs == 0) {
- return hr . h2("No reports found!");
+ return "<HR><H2>No reports found!</H2></HR>\n";
}
foreach my $bug (sort {$a<=>$b} @bugs) {
foreach my $severity(@debbugs::gSeverityList) {
$severity = $debbugs::gDefaultSeverity if ($severity eq '');
next unless defined $section{${pending} . "_" . ${severity}};
- $result .= hr . h2("$debbugs::gSeverityDisplay{$severity} - $displayshowpending{$pending}");
+ $result .= "<HR><H2>$debbugs::gSeverityDisplay{$severity} - $displayshowpending{$pending}</H2>\n";
$result .= "(A list of <a href=\"http://www.debian.org/Bugs/db/si/$pending$severity\">all such bugs</a> is available).\n";
- $result .= ul($section{$pending . "_" . $severity});
+ $result .= "<UL>\n";
+ $result .= $section{$pending . "_" . $severity};
+ $result .= "</UL>\n";
$anydone = 1 if ($pending eq "done");
}
}
package debbugs;
use strict;
-use CGI qw/:standard/;
use POSIX qw(strftime tzset nice);
require '/debian/home/ajt/newajbug/common.pl';
nice(5);
+sub readparse {
+ my ($in, $key, $val, %ret);
+ if (defined $ENV{"QUERY_STRING"} && $ENV{"QUERY_STRING"} ne "") {
+ $in=$ENV{QUERY_STRING};
+ } elsif(defined $ENV{"REQUEST_METHOD"}
+ && $ENV{"REQUEST_METHOD"} eq "POST")
+ {
+ read(STDIN,$in,$ENV{CONTENT_LENGTH});
+ } else {
+ return;
+ }
+ foreach (split(/&/,$in)) {
+ s/\+/ /g;
+ ($key, $val) = split(/=/,$_,2);
+ $key=~s/%(..)/pack("c",hex($1))/ge;
+ $val=~s/%(..)/pack("c",hex($1))/ge;
+ $ret{$key}=$val;
+ }
+ return %ret;
+}
+
+my %param = readparse();
+
my ($pkg, $maint, $maintenc, $submitter, $severity, $status);
-if (defined ($pkg = param('pkg'))) {
-} elsif (defined ($maint = param('maint'))) {
-} elsif (defined ($maintenc = param('maintenc'))) {
-} elsif (defined ($submitter= param('submitter'))) {
-} elsif (defined ($severity = param('severity'))) {
- $status = param('status') || 'open';
+if (defined ($pkg = $param{'pkg'})) {
+} elsif (defined ($maint = $param{'maint'})) {
+} elsif (defined ($maintenc = $param{'maintenc'})) {
+} elsif (defined ($submitter= $param{'submitter'})) {
+} elsif (defined ($severity = $param{'severity'})) {
+ $status = $param{'status'} || 'open';
} else {
- $pkg = "ALL";
+ quit("You have to choose something to select by");
}
-my $repeatmerged = (param('repeatmerged') || "yes") eq "yes";
-my $archive = (param('archive') || "no") eq "yes";
+my $repeatmerged = ($param{'repeatmerged'} || "yes") eq "yes";
+my $archive = ($param{'archive'} || "no") eq "yes";
my $Archived = $archive ? "Archived" : "";
my $result = htmlizebugs(@bugs);
-print header;
-print start_html(
- -TEXT => "#000000",
- -BGCOLOR=>"#FFFFFF",
- -LINK => "#0000FF",
- -VLINK => "#800080",
- -title => "$debbugs::gProject $Archived $debbugs::gBug report logs: $tag");
+print "Content-Type: text/html\n\n";
-print h1("$debbugs::gProject $Archived $debbugs::gBug report logs: $tag");
+print "<HTML><HEAD><TITLE>\n" .
+ "$debbugs::gProject $Archived $debbugs::gBug report logs: $tag\n" .
+ "</TITLE></HEAD>\n" .
+ '<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#800080">' .
+ "\n";
+print "<H1>" . "$debbugs::gProject $Archived $debbugs::gBug report logs: $tag" .
+ "</H1>\n";
if (defined $pkg) {
if (defined $maintainer{$pkg}) {
print $result;
-print hr;
+print "<hr>\n";
print "$tail_html";
-print end_html;
+print "</body></html>\n";