From ad94296c148bb2ddb66f1d2ce312bdffb4ff4a91 Mon Sep 17 00:00:00 2001 From: gecko <> Date: Mon, 25 Oct 1999 05:18:14 -0800 Subject: [PATCH] [project @ 1999-10-25 06:18:13 by gecko] A few bugs fixes in the *report.cgi scripts --- cgi/bugreport.cgi | 8 ++------ cgi/common.pl | 39 ++++++++++++++++++++++++++++++++++----- cgi/pkgreport.cgi | 20 ++++++++++++++------ debian/changelog | 6 ++++++ scripts/rebuild.in | 29 ++++++++++++++++++++++++++--- 5 files changed, 82 insertions(+), 20 deletions(-) diff --git a/cgi/bugreport.cgi b/cgi/bugreport.cgi index 584f1dbc..647011f9 100755 --- a/cgi/bugreport.cgi +++ b/cgi/bugreport.cgi @@ -40,7 +40,7 @@ $tail_html =~ s/SUBSTITUTE_DTIME/$dtime/; $|=1; -$tpack = lc $status{package}; +$tpack = lc $status{'package'}; $tpack =~ s/[^-+._a-z0-9()].*$//; if ($status{severity} eq 'normal') { @@ -79,7 +79,7 @@ my ($short, $tmaint); $short = $ref; $short =~ s/^\d+/#$&/; $tmaint = defined($maintainer{$tpack}) ? $maintainer{$tpack} : '(unknown)'; $descriptivehead= $indexentry.$submitted.";\nMaintainer for $status{package} is\n". - ''.&sani($tmaint).'.'; + ''.&sani($tmaint).'.'; my $buglog = buglog($ref, $archive); open L, "<$buglog" || &quit("open log for $ref: $!"); @@ -210,8 +210,4 @@ print $tail_html; print end_html; -sub maintencoded { - return ""; -} - exit 0; diff --git a/cgi/common.pl b/cgi/common.pl index b46f9e2b..47bb36ff 100644 --- a/cgi/common.pl +++ b/cgi/common.pl @@ -9,6 +9,15 @@ sub quit { exit 0; } +sub abort { + my $msg = shift; + my $archive = shift; + print header . start_html("Sorry"); + print "Sorry bug #$msg doesn't seem to be in the $archive database.\n"; + print end_html; + exit 0; +} + sub htmlindexentry { my $ref = shift; my $archive = shift; @@ -125,7 +134,10 @@ sub allbugs { sub pkgbugs { my $pkg = shift; - open I, "<$debbugs::gSpoolDir/archive/index" || &quit("bugindex: $!"); + my $archive = shift; + if ( $archive ) { open I, "<$debbugs::gSpoolDir/index.archive" || &quit("bugindex: $!"); } + else { open I, "<$debbugs::gSpoolDir/index.db" || &quit("bugindex: $!"); } + while() { if (/^$pkg\s+(\d+)\s+(.+)/) { @@ -137,13 +149,30 @@ sub pkgbugs { } sub pkgbugsindex { - my $pkg = shift; + my $archive = shift; my @bugs = (); - open I, "<$debbugs::gSpoolDir/archive/index" || &quit("bugindex: $!"); + if ( $archive ) { open I, "<$debbugs::gSpoolDir/index.archive" || &quit("bugindex: $!"); } + else { open I, "<$debbugs::gSpoolDir/index.db" || &quit("bugindex: $!"); } while() { $descstr{ $1 } = 1 if (/^(\S+)/); } return %descstr; } +sub maintencoded { + my $input = $_; + my $encoded = ''; + + while ($input =~ m/\W/) + { $encoded.=$`.sprintf("-%02x_",unpack("C",$&)); + $input= $'; + } + $encoded.= $input; + $encoded =~ s/-2e_/\./g; + $encoded =~ s/^([^,]+)-20_-3c_(.*)-40_(.*)-3e_/$1,$2,$3,/; + $encoded =~ s/^(.*)-40_(.*)-20_-28_([^,]+)-29_$/,$1,$2,$3/; + $encoded =~ s/-20_/_/g; + $encoded =~ s/-([^_]+)_-/-$1/g; + return $input; +} sub getmaintainers { my %maintainer; @@ -167,9 +196,9 @@ sub getbugstatus { if ( $archive ) { my $archdir = $bugnum % 100; - open(S,"$gSpoolDir/archive/$archdir/$bugnum.status" ) || &quit("open $bugnum.status: $!"); + open(S,"$gSpoolDir/archive/$archdir/$bugnum.status" ) || &abort("$bugnum", "archive" ); } else - { open(S,"$gSpoolDir/db/$bugnum.status") || &quit("open $bugnum.status: $!"); } + { open(S,"$gSpoolDir/db/$bugnum.status") || &abort("$bugnum"); } my @lines = qw(originator date subject msgid package keywords done forwarded mergedwith severity); while() { diff --git a/cgi/pkgreport.cgi b/cgi/pkgreport.cgi index 5526b7e8..60d87188 100755 --- a/cgi/pkgreport.cgi +++ b/cgi/pkgreport.cgi @@ -12,8 +12,11 @@ require '/etc/debbugs/config'; require '/etc/debbugs/text'; my $pkg = param('pkg'); +my $archive = (param('archive') || 'no') eq 'yes'; +my $arc = 'yes'; $pkg = 'ALL' unless defined( $pkg ); +$arc = 'no' unless $archive; my $repeatmerged = (param('repeatmerged') || 'yes') eq 'yes'; my $this = ""; @@ -33,8 +36,13 @@ $tail_html =~ s/SUBSTITUTE_DTIME/$dtime/; print header; -print start_html("$debbugs::gProject Archived $debbugs::gBug report logs: package $pkg"); -print h1("$debbugs::gProject Archived $debbugs::gBug report logs: package $pkg"); +if( $archive ) +{ print start_html("$debbugs::gProject Archived $debbugs::gBug report logs: package $pkg"); + print h1("$debbugs::gProject Archived $debbugs::gBug report logs: package $pkg"); +} else +{ print start_html("$debbugs::gProject $debbugs::gBug report logs: package $pkg"); + print h1("$debbugs::gProject $debbugs::gBug report logs: package $pkg"); +} #if (defined $maintainer{$pkg}) { # print "

Maintainer for $pkg is Note that with multi-binary packages there may be other reports\n"; print "filed under the different binary package names.

\n"; if ( $pkg ne 'ALL' ) -{ %strings = pkgbugs($pkg); +{ %strings = pkgbugs($pkg, $archive); foreach my $bug ( keys %strings ) - { $this .= "
  • ". $strings{ $bug } ."\n"; } + { $this .= "
  • ". $strings{ $bug } ."\n"; } } else -{ %strings = pkgbugsindex(); +{ %strings = pkgbugsindex( $archive ); my @bugs = (); foreach my $bug ( keys %strings ) { push @bugs, $bug; } @bugs = sort { $a cmp $b } @bugs; foreach my $bug ( @bugs ) - { $this .= "
  • ". $bug . "\n"; } + { $this .= "
  • ". $bug . "\n"; } } if ( length( $this ) ) diff --git a/debian/changelog b/debian/changelog index 1f6c40f5..c304dcad 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +debbugs (2.3-2) unstable; urgency=low + + * Tweeks to the [pkg|bug]report.cgi scripts + + -- Darren Benham Tue, 24 Oct 1999 23:16:14 -0700 + debbugs (2.3-1) unstable; urgency=low * Fixed the send message bug that resulted in the same words (subject) diff --git a/scripts/rebuild.in b/scripts/rebuild.in index 88e71a1c..f2378fe6 100755 --- a/scripts/rebuild.in +++ b/scripts/rebuild.in @@ -1,5 +1,5 @@ #!/usr/bin/perl -w -# $Id: rebuild.in,v 1.1 1999/09/20 05:40:07 gecko Exp $ +# $Id: rebuild.in,v 1.2 1999/10/25 06:18:14 gecko Exp $ # Load modules and set envirnment use File::Copy; @@ -31,12 +31,34 @@ sub readreport { $debug = 0; defined($startdate= time) || &quit("failed to get time: $!"); -open IDXFILE, ">archive/index" or &quit( "trying to reset index file: $!" ); +@ARGV==0 or &quit( "no archive given on the commandline" ); +$archive= shift(@ARGV); +open IDXFILE, "> index.$archive" or &quit( "trying to reset index file: $!" ); + + +if ( $archive eq 'db' ) +{ + opendir(DIR,'db') || next; + @list= grep(m/^\d+\.status$/,readdir(DIR)); + closedir DIR; + grep(s/\.status$//,@list); + @list= sort { $a <=> $b } @list; + + #process each bug (ie, status file) + while ( defined( $list[0] )) + { my $ref = shift @list; + print STDERR "$ref considering\n" if $debug; + readreport($ref, $path); + printf IDXFILE "%s %d %s\n", $s_package, $ref, $s_subject; + } +} +else +{ #get list of bugs (ie, status files) for ($subdir=0; $subdir<100; $subdir++ ) { - my $path = sprintf( "archive/%.2d", $subdir ); + my $path = sprintf( "$archive/%.2d", $subdir ); opendir(DIR,$path) || next; @list= grep(m/^\d+\.status$/,readdir(DIR)); closedir DIR; @@ -52,4 +74,5 @@ for ($subdir=0; $subdir<100; $subdir++ ) } } +} close IDXFILE; -- 2.39.5