X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=scripts%2Frebuild.in;h=6c98f2545dba5f87bc325b2df921ba4a5d6b6f2e;hb=f63ec4dd931f010b7c7ba054d216cd5c3bbd6d4a;hp=f2378fe69b6340d4bdd6a82c260ac5836628d0df;hpb=ad94296c148bb2ddb66f1d2ce312bdffb4ff4a91;p=debbugs.git diff --git a/scripts/rebuild.in b/scripts/rebuild.in index f2378fe..6c98f25 100755 --- a/scripts/rebuild.in +++ b/scripts/rebuild.in @@ -1,78 +1,60 @@ #!/usr/bin/perl -w -# $Id: rebuild.in,v 1.2 1999/10/25 06:18:14 gecko Exp $ +# $Id: rebuild.in,v 1.13 2003/08/23 15:12:57 cjwatson Exp $ -# Load modules and set envirnment +# Load modules and set environment use File::Copy; -require('/etc/debbugs/config'); -require('/usr/lib/debbugs/errorlib'); -$ENV{'PATH'}= '/usr/lib/debbugs'.$ENV{'PATH'}; -chdir("$gSpoolDir") || die "chdir spool: $!\n"; +$config_path = '/etc/debbugs'; +$lib_path = '/usr/lib/debbugs'; -sub readreport { - my $lref = shift; - my $path = shift; - - open(S,"$path/$lref.status") || die "unable to open $path/$lref: $!\n"; - chop($s_originator= ); - chop($s_date= ); - chop($s_subject= ); - chop($s_msgid= ); - chop($s_package= ); - chop($s_keywords= ); - chop($s_done= ); - chop($s_forwarded= ); - chop($s_mergedwith= ); - chop($s_severity= ); - close(S); - return 1; -} +require("$config_path/config"); +require("$lib_path/errorlib"); +use vars qw($gSpoolDir); + +$ENV{'PATH'} = $lib_path.':'.$ENV{'PATH'}; + +chdir("$gSpoolDir") || die "chdir spool: $!\n"; #global variables $debug = 0; -defined($startdate= time) || &quit("failed to get time: $!"); - -@ARGV==0 or &quit( "no archive given on the commandline" ); -$archive= shift(@ARGV); -open IDXFILE, "> index.$archive" or &quit( "trying to reset index file: $!" ); +@ARGV==0 and &quit( "no archive given on the commandline" ); +my $archive = shift(@ARGV); +my $index = "index.$archive"; +$index = 'index.db' if $archive eq 'db-h'; +open IDXFILE, "> $index" or &quit( "trying to reset index file: $!" ); -if ( $archive eq 'db' ) +#get list of bugs (ie, status files) +my @files; +for ($subdir=0; $subdir<100; $subdir++ ) { - 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; - } + my $path = sprintf( "$archive/%.2d", $subdir ); + opendir(DIR,$path) || next; + my @list= grep(m/^\d+\.summary$/,readdir(DIR)); + closedir DIR; + grep(s/\.summary$//,@list); + push @files, @list; } -else -{ -#get list of bugs (ie, status files) -for ($subdir=0; $subdir<100; $subdir++ ) +@files = sort { $a <=> $b } @files; + +#process each bug (ie, status file) +for my $ref (@files) { - my $path = sprintf( "$archive/%.2d", $subdir ); - opendir(DIR,$path) || next; - @list= grep(m/^\d+\.status$/,readdir(DIR)); - closedir DIR; - grep(s/\.status$//,@list); - @list= sort { $a <=> $b } @list; + print STDERR "$ref considering\n" if $debug; + my $data = readbug($ref, $archive); + $data->{severity} =~ y/A-Z/a-z/; - #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; - } -} + (my $pkglist = $data->{package}) =~ s/[,\s]+/,/g; + $pkglist =~ s/^,+//; + $pkglist =~ s/,+$//; + my $whendone = 'open'; + $whendone = 'forwarded' if length $data->{forwarded}; + $whendone = 'done' if length $data->{done}; + + printf IDXFILE "%s %d %d %s [%s] %s %s\n", + $pkglist, $ref, $data->{date}, $whendone, $data->{originator}, + $data->{severity}, $data->{keywords}; } + close IDXFILE;