#!/usr/bin/perl
-# $Id: db2html.in,v 1.13 2002/12/11 02:15:15 cjwatson Exp $
+# $Id: db2html.in,v 1.14 2003/05/03 20:01:20 doogie Exp $
# usage: db2html [-diff] [-stampfile=<stampfile>] [-lastrun=<days>] <wwwbase>
#load the necessary libraries/configuration
"sent to <code>request@$gEmailDomain</code> (all of which".
"produce replies).\n";
$indexlink= "Messages not matched to a specific $gBug report - $week";
- $s_subject= '';
+ $data->{subject}= '';
$indexentry= '';
undef $tpack;
undef $tmaint;
$indexpart= 'unmatched';
} else
{
- my $hash = get_hashname($ref);
- open(S,"db-h/$hash/$ref.status") || &quit("open db-h/$hash/$ref.status: $!");
- chomp($s_originator= <S>);
- chomp($s_date= <S>);
- chomp($s_subject= <S>);
- chomp($s_msgid= <S>);
- chomp($s_package= <S>);
- chomp($s_keywords= <S>);
- chomp($s_done= <S>);
- chomp($s_forwarded= <S>);
- chomp($s_mergedwith= <S>);
- chomp($s_severity= <S>);
- $_= $s_package; y/A-Z/a-z/; $_= $` if m/[^-+._a-z0-9()]/;
+ $data=readbug($ref);
+ $_= $data->{package}; y/A-Z/a-z/; $_= $` if m/[^-+._a-z0-9()]/;
$tpack= $_;
- if ($s_severity eq '' || $s_severity eq 'normal')
+ if ($data->{severity} eq '' || $data->{severity} eq 'normal')
{ $showseverity= '';
$addseverity= $gDefaultSeverity;
- } elsif (grep($s_severity eq $_, @strongseverities))
- { $showseverity= "<strong>Severity: $s_severity</strong>;\n";
- $addseverity= $s_severity;
+ } elsif (grep($data->{severity} eq $_, @strongseverities))
+ { $showseverity= "<strong>Severity: $data->{severity}</strong>;\n";
+ $addseverity= $data->{severity};
} else
- { $showseverity= "Severity: <em>$s_severity</em>;\n";
- $addseverity= $s_severity;
+ { $showseverity= "Severity: <em>$data->{severity}</em>;\n";
+ $addseverity= $data->{severity};
}
- $days= int(($startdate - $s_date)/86400); close(S);
- $indexlink= "#$ref: ".&sani($s_subject);
+ $days= int(($startdate - $data->{date})/86400); close(S);
+ $indexlink= "#$ref: ".&sani($data->{subject});
$indexentry= '';
$packfile= length($tpack) ? "pa/l$tpack.html" : "pa/none.html";
$indexentry .= "Package: <A href=\"../$packfile\"><strong>".
- &sani($s_package)."</strong></A>;\n"
- if length($s_package);
+ &sani($data->{package})."</strong></A>;\n"
+ if length($data->{package});
$indexentry .= $showseverity;
- $indexentry .= "Reported by: ".&sani($s_originator);
- $indexentry .= ";\nKeywords: ".&sani($s_keywords)
- if length($s_keywords);
+ $indexentry .= "Reported by: ".&sani($data->{originator});
+ $indexentry .= ";\nKeywords: ".&sani($data->{keywords})
+ if length($data->{keywords});
$linkto= $ref; $linkto =~ s,^..,$&/$&,;
- @merged= split(/ /,$s_mergedwith);
+ @merged= split(/ /,$data->{mergedwith});
if (@merged)
{ $mseparator= ";\nmerged with ";
for $m (@merged)
}
}
$daysold=$submitted='';
- if (length($s_done))
- { $indexentry .= ";\n<strong>Done:</strong> ".&sani($s_done);
+ if (length($data->{done}))
+ { $indexentry .= ";\n<strong>Done:</strong> ".&sani($data->{done});
$indexpart= "done$addseverity";
- } elsif (length($s_forwarded))
- { $indexentry .= ";\n<strong>Forwarded</strong> to ".&sani($s_forwarded);
+ } elsif (length($data->{forwarded}))
+ { $indexentry .= ";\n<strong>Forwarded</strong> to ".&sani($data->{forwarded});
$indexpart= "forwarded$addseverity";
} else
{ $cmonths= int($days/30);
($pad>0 ? ' 'x$pad : '').
sprintf("<A href=\"../%s.html\">%d</A>",$linkto,$ref).
&sani(sprintf(" %-1.1s %-10.10s %-35.35s %-.25s\n",
- $s_severity,
- $s_package,
- (length($s_keywords) ? $s_keywords.'/' : '').
- $s_subject, $s_originator));
+ $data->{severity},
+ $data->{package},
+ (length($data->{keywords}) ? $data->{keywords}.'/' : '').
+ $data->{subject}, $data->{originator}));
$shortindex.= $thissient;
- $sient{"$ref $s_package"}= $thissient;
+ $sient{"$ref $data->{package}"}= $thissient;
if ($days >= 7)
{ $font= $days <= 30 ? '' :
$days <= 60 ? 'em' :
if ($preserveonly) { $submitted= 'THIS IS A BUG IN THE BUG PROCESSOR'; }
else
{ $submitted= `TZ=GMT LANG=C \\
- date -d '1 Jan 1970 00:00:00 + $s_date seconds' \\
+ date -d '1 Jan 1970 00:00:00 + $data->{date} seconds' \\
'+ %a, %d %b %Y %T %Z'`;
$? and die $?;
}
eval("\$iiindex$indexpart = \$indexadd.\$iiindex$indexpart; 1;") ||
&quit("eval add to \$iiindex$indexpart failed: $@");
if (defined($tmaint))
- { $countpermaint{$tmaint} += length($s_done) ? 0 : length($s_forwarded) ? 0 : 1;
+ { $countpermaint{$tmaint} += length($data->{done}) ? 0 : length($data->{forwarded}) ? 0 : 1;
eval("\$permaint${indexpart}{\$tmaint} .= \$indexadd; 1;") ||
&quit("eval add to \$permaint${indexpart}{\$tmaint} failed: $@");
}
if (defined($tpack))
- { $countperpack{$tpack} += length($s_done) ? 0 : length($s_forwarded) ? 0 : 1;
+ { $countperpack{$tpack} += length($data->{done}) ? 0 : length($data->{forwarded}) ? 0 : 1;
eval("\$perpack${indexpart}{\$tpack} .= \$indexadd; 1;") ||
&quit("eval add to \$perpack${indexpart}{\$tpack} failed: $@");
}
"$short</title>\n".
"<link rev=\"made\" href=\"mailto:$gMaintainerEmail\">\n".
"</head>$gHTMLStart<h1>$gProject $gBug report logs - $short<br>\n".
- &sani($s_subject)."</h1>".
+ &sani($data->{subject})."</h1>".
"$descriptivehead\n".
"\n<hr>\n".
$log.
# -*- perl -*-
-# $Id: errorlib.in,v 1.18 2003/02/16 15:20:26 cjwatson Exp $
+# $Id: errorlib.in,v 1.19 2003/05/03 20:01:20 doogie Exp $
sub F_SETLK { 6; } sub F_WRLCK{ 1; }
$flockstruct= 'sslll'; # And there ought to be something for this too.
}
sub lockreadbugmerge {
- local ($lref) = @_;
- if (!&lockreadbug($lref)) { return 0; }
- if (!length($s_mergedwith)) { return 1; }
+ local ($lref, $location) = @_;
+ local $data;
+ if (!($data = &lockreadbug($lref, $location))) { return ( 0, undef ); }
+ if (!length($data{mergedwith})) { return ( 1, $data ); }
&unfilelock;
&filelock('lock/merge');
- if (!&lockreadbug($lref)) { &unfilelock; return 0; }
- return 2;
+ if (!&lockreadbug($lref, $location)) { &unfilelock; return ( 0, undef ); }
+ return ( 2, $data );
}
-sub lockreadbug {
- local ($lref) = @_;
- &filelock("lock/$lref");
+sub readbug {
+ local ($lref, $location) = @_;
my $hash = get_hashname($lref);
- if (!open(S,"db-h/$hash/$lref.status")) { &unfilelock; return 0; }
- chop($s_originator= <S>);
- chop($s_date= <S>);
- chop($s_subject= <S>);
- chop($s_msgid= <S>);
- chop($s_package= <S>);
- chop($s_keywords= <S>);
- chop($s_done= <S>);
- chop($s_forwarded= <S>);
- chop($s_mergedwith= <S>);
- chop($s_severity= <S>);
- chop($s_versions= <S>);
- chop($s_fixed_versions= <S>);
+ if ($location eq 'archive') {
+ $path = 'archive';
+ } else {
+ $path = 'db-h';
+ }
+ if (!open(S,"$path/$hash/$lref.status")) { &unfilelock; return undef; }
+ my %data;
+ chop($data{originator}= <S>);
+ chop($data{date}= <S>);
+ chop($data{subject}= <S>);
+ chop($data{msgid}= <S>);
+ chop($data{package}= <S>);
+ chop($data{keywords}= <S>);
+ chop($data{done}= <S>);
+ chop($data{forwarded}= <S>);
+ chop($data{mergedwith}= <S>);
+ chop($data{severity}= <S>);
+ chop($data{versions}= <S>);
+ chop($data{fixed_versions}= <S>);
close(S);
- $s_severity = 'normal' if $s_severity eq '';
- return 1;
+ $data{severity} = 'normal' if $data{severity} eq '';
+ return \%data;
+}
+
+sub lockreadbug {
+ local ($lref, $location) = @_;
+ &filelock("lock/$lref");
+ return readbug($lref, $location);
+}
+
+sub writebug {
+ local ($ref, $data, $location) = @_;
+ my $hash = get_hashname($ref);
+ my $change;
+ if ($location eq 'archive') {
+ $path = 'archive';
+ } else {
+ $path = 'db-h';
+ }
+ open(S,">$path/$hash/$ref.status.new") || &quit("opening $path/$hash/$ref.status.new: $!");
+ print(S
+ "$data->{originator}\n".
+ "$data->{date}\n".
+ "$data->{subject}\n".
+ "$data->{msgid}\n".
+ "$data->{package}\n".
+ "$data->{keywords}\n".
+ "$data->{done}\n".
+ "$data->{forwarded}\n".
+ "$data->{mergedwith}\n".
+ "$data->{severity}\n".
+ "$data->{versions}\n".
+ "$data->{fixed_versions}\n") || &quit("writing $path/$hash/$ref.status.new: $!");
+ close(S) || &quit("closing $path/$hash/$ref.status.new: $!");
+ if (-e "$path/$hash/$ref.status") {
+ $change = 'change';
+ } else {
+ $change = 'new';
+ }
+ rename("$path/$hash/$ref.status.new","$path/$hash/$ref.status") ||
+ &quit("installing new $path/$hash/$ref.status: $!");
+ &bughook($change,$ref,
+ "$data->{originator}\n".
+ "$data->{date}\n".
+ "$data->{subject}\n".
+ "$data->{msgid}\n".
+ "$data->{package}\n".
+ "$data->{keywords}\n".
+ "$data->{done}\n".
+ "$data->{forwarded}\n".
+ "$data->{mergedwith}\n".
+ "$data->{severity}\n".
+ "$data->{versions}\n".
+ "$data->{fixed_versions}\n");
+ &unfilelock;
}
sub filelock {
#!/usr/bin/perl
-# $Id: expire.in,v 1.14 2002/11/17 22:45:16 cjwatson Exp $
+# $Id: expire.in,v 1.15 2003/05/03 20:01:20 doogie Exp $
# Load modules and set envirnment
use File::Copy;
#process each bug (ie, status file)
while (length($ref=shift(@list))) {
print STDERR "$ref considering\n" if $debug;
- $bfound= &lockreadbugmerge($ref);
+ ($bfound, $data)= &lockreadbugmerge($ref);
print STDERR "$ref read $bfound\n" if $debug;
$bfound || next;
- print "$ref read ok (done $s_done)\n" if $debug;
- (&unlockreadbugmerge($bfound), next) unless length($s_done);
+ print "$ref read ok (done $data->{done})\n" if $debug;
+ (&unlockreadbugmerge($bfound), next) unless length($data->{done});
print "$ref read done\n" if $debug;
@aref= ($ref);
- if (length($s_mergedwith)) { push(@aref,split / /,$s_mergedwith); }
+ if (length($data->{mergedwith})) { push(@aref,split / /,$data->{mergedwith}); }
print "$ref aref @aref\n" if $debug;
$oktoremove= 1;
for $mref (@aref) {
print "$ref $mref check\n" if $debug;
if ($mref != $ref) {
print "$ref $mref reading\n" if $debug;
- &lockreadbug($mref) || die "huh ?";
+ $newdata = &lockreadbug($mref) || die "huh $mref ?";
print "$ref $mref read ok\n" if $debug;
$bfound++;
+ } else {
+ $newdata = $data;
}
print "$ref $mref read/not\n" if $debug;
$expectmerge= join(' ',grep($_ != $mref, sort { $a <=> $b } @aref));
- $s_mergedwith eq $expectmerge ||
- die "$ref -> $mref: ($s_mergedwith) vs. ($expectmerge) (@aref)";
+ $newdata->{mergedwith} eq $expectmerge ||
+ die "$ref -> $mref: ($newdata->{mergedwith}) vs. ($expectmerge) (@aref)";
print "$ref $mref merge-ok\n" if $debug;
- length($s_done) || die "$ref -> $mref";
+ length($newdata->{done}) || die "$ref -> $mref";
print "$ref $mref done-ok\n" if $debug;
$days= -M "db-h/".get_hashname($mref)."/$mref.log";
print "ref $mref days $days\n" if $debug;
link( "db-h/$dir/$mref.status", "archive/$dir/$mref.status" ) || copy( "db-h/$dir/$mref.status", "archive/$dir/$mref.status" );
link( "db-h/$dir/$mref.report", "archive/$dir/$mref.report" ) || copy( "db-h/$dir/$mref.report", "archive/$dir/$mref.report" );
if ( open( IDXFILE, ">>archive/index" ) ) {
- printf IDXFILE "%s %d %s\n", $s_package, $mref, $s_subject;
+ printf IDXFILE "%s %d %s\n", $data->{package}, $mref, $data->{subject};
close IDXFILE;
} else { print "Unable to write to index file\n"; }
#!/usr/bin/perl
-# $Id: process.in,v 1.65 2003/04/24 02:24:55 cjwatson Exp $
+# $Id: process.in,v 1.66 2003/05/03 20:01:20 doogie Exp $
#
# Usage: process nn
# Temps: incoming/Pnn
if ($tryref >= 0)
{
- $bfound= &lockreadbugmerge($tryref);
+ ($bfound, $data)= &lockreadbugmerge($tryref);
if ($bfound) {
$ref= $tryref;
} else {
Subject: Unknown problem report $gBug#$tryref ($subject)
Message-ID: <handler.x.$nn.unknown\@$gEmailDomain>
In-Reply-To: $header{'message-id'}
-References: $header{'message-id'} $s_msgid
+References: $header{'message-id'} $data->{msgid}
Precedence: bulk
X-$gProject-PR-Message: error
$markedby= $header{'from'} eq $replyto ? $replyto :
"$header{'from'} (reply to $replyto)";
if ($codeletter eq 'F') {
- (&appendlog,&finish) if length($s_forwarded);
+ (&appendlog,&finish) if length($data->{forwarded});
$receivedat= "forwarded\@$gEmailDomain";
$markaswhat= 'forwarded';
$set_forwarded= $header{'to'};
$generalcc='';
}
} else {
- (&appendlog,&finish) if length($s_done);
+ (&appendlog,&finish) if length($data->{done});
$receivedat= "done\@$gEmailDomain";
$markaswhat= 'done';
$set_done= $header{'from'};
($subject)
Message-ID: <header.x.$nn.warnignore\@$gEmailDomain>
In-Reply-To: $header{'message-id'}
-References: $header{'message-id'} $s_msgid
+References: $header{'message-id'} $data->{msgid}
Precedence: bulk
X-$gProject-PR-Message: error
if (length($noticeccval)) { $noticecc= "Cc: $noticeccval\n"; }
if (length($generalcc)) { $noticecc.= "Bcc: $generalcc\n"; }
- @process= ($ref,split(/ /,$s_mergedwith));
+ @process= ($ref,split(/ /,$data->{mergedwith}));
$orgref= $ref;
for $ref (@process) {
if ($ref != $orgref) {
&unfilelock;
- &lockreadbug($ref) || die "huh ? $ref from $orgref out of @process";
+ $data = &lockreadbug($ref)
+ || die "huh ? $ref from $orgref out of @process";
}
- $s_done= $set_done if defined($set_done);
- $s_forwarded= $set_forwarded if defined($set_forwarded);
- my $hash = get_hashname($ref);
- &overwrite("db-h/$hash/$ref.status",
- "$s_originator\n$s_date\n$s_subject\n$s_msgid\n".
- "$s_package\n$s_keywords\n$s_done\n$s_forwarded\n$s_mergedwith\n$s_severity\n");
- &bughook('change',$ref,
- "$s_originator\n$s_date\n$s_subject\n$s_msgid\n".
- "$s_package\n$s_keywords\n$s_done\n$s_forwarded\n$s_mergedwith\n$s_severity\n");
+ $data->{done}= $set_done if defined($set_done);
+ $data->{forwarded}= $set_forwarded if defined($set_forwarded);
+ writebug($ref, $data);
+ my $hash = get_hashname($ref);
open(O,"db-h/$hash/$ref.report") || &quit("read original report: $!");
$x= join('',<O>); close(O);
if ($codeletter eq 'F') {
&sendmessage(<<END."---------------------------------------\n".join( "\n", @msg ), '');
From: $gMaintainerEmail ($gProject $gBug Tracking System)
To: $replyto
-${noticecc}Subject: $gBug#$ref: marked as forwarded ($s_subject)
+${noticecc}Subject: $gBug#$ref: marked as forwarded ($data->{subject})
Message-ID: <header.$ref.$nn.ackfwdd\@$gEmailDomain>
In-Reply-To: $header{'message-id'}
-References: $header{'message-id'} $s_msgid
+References: $header{'message-id'} $data->{msgid}
Precedence: bulk
X-$gProject-PR-Message: forwarded $ref
-X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
+X-$gProject-PR-Package: $data->{package}
+X-$gProject-PR-Keywords: $data->{keywords}
Your message dated $header{'date'}
with message-id $header{'message-id'}
has caused the $gProject $gBug report #$ref,
-regarding $s_subject
+regarding $data->{subject}
to be marked as having been forwarded to the upstream software
-author(s) $s_forwarded.
+author(s) $data->{forwarded}.
(NB: If you are a system administrator and have no idea what I am
talking about this indicates a serious mail system misconfiguration
&sendmessage(<<END."--------------------------------------\n".$x."---------------------------------------\n".join( "\n", @msg ), '');
From: $gMaintainerEmail ($gProject $gBug Tracking System)
To: $replyto
-${noticecc}Subject: $gBug#$ref: marked as done ($s_subject)
+${noticecc}Subject: $gBug#$ref: marked as done ($data->{subject})
Message-ID: <handler.$ref.$nn.ackdone\@$gEmailDomain>
In-Reply-To: $header{'message-id'}
-References: $header{'message-id'} $s_msgid
+References: $header{'message-id'} $data->{msgid}
Precedence: bulk
X-$gProject-PR-Message: closed $ref
-X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
+X-$gProject-PR-Package: $data->{package}
+X-$gProject-PR-Keywords: $data->{keywords}
Your message dated $header{'date'}
with message-id $header{'message-id'}
(administrator, $gProject $gBugs database)
END
- &htmllog("Notification","sent",$s_originator,
+ &htmllog("Notification","sent",$data->{originator},
"$gBug acknowledged by developer.");
&sendmessage(<<END.join("\n",@msg),'');
From: $gMaintainerEmail ($gProject $gBug Tracking System)
-To: $s_originator
+To: $data->{originator}
Subject: $gBug#$ref acknowledged by developer
($header{'subject'})
Message-ID: <handler.$ref.$nn.notifdone\@$gEmailDomain>
-In-Reply-To: $s_msgid
-References: $header{'message-id'} $s_msgid
+In-Reply-To: $data->{msgid}
+References: $header{'message-id'} $data->{msgid}
X-$gProject-PR-Message: they-closed $ref
-X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
+X-$gProject-PR-Package: $data->{package}
+X-$gProject-PR-Keywords: $data->{keywords}
Reply-To: $ref\@$gEmailDomain
This is an automatic notification regarding your $gBug report
-#$ref: $s_subject,
-which was filed against the $s_package package.
+#$ref: $data->{subject},
+which was filed against the $data->{package} package.
It has been closed by one of the developers, namely
$markedby.
($subject)
Message-ID: <handler.x.$nn.nonumnosub\@$gEmailDomain>
In-Reply-To: $header{'message-id'}
-References: $header{'message-id'} $s_msgid
+References: $header{'message-id'} $data->{msgid}
Precedence: bulk
X-$gProject-PR-Message: error
($subject)
Message-ID: <handler.x.$nn.nonumnosub\@$gEmailDomain>
In-Reply-To: $header{'message-id'}
-References: $header{'message-id'} $s_msgid
+References: $header{'message-id'} $data->{msgid}
Precedence: bulk
X-$gProject-PR-Message: error
&appendlog;
&finish;
} else {
- $s_package= $pheader{'package'};
+ $data->{package}= $pheader{'package'};
}
- $s_versions= '';
+ $data->{versions}= '';
if (defined($pheader{'version'})) {
- $s_versions = $pheader{'version'};
- $s_versions =~ s/\s+/ /;
+ $data->{versions} = $pheader{'version'};
+ $data->{versions} =~ s/\s+/ /;
# BUG: need to bounce unknown versions back to submitter here
}
- $s_fixed_versions= '';
+ $data->{fixed_versions}= '';
if (defined($pheader{'fixed-in-version'})) {
- $s_fixed_versions = $pheader{'fixed-in-version'};
- $s_fixed_versions =~ s/\s+/ /;
+ $data->{fixed_versions} = $pheader{'fixed-in-version'};
+ $data->{fixed_versions} =~ s/\s+/ /;
}
- $s_keywords= '';
+ $data->{keywords}= '';
if (defined($pheader{'keywords'})) {
- $s_keywords= $pheader{'keywords'};
+ $data->{keywords}= $pheader{'keywords'};
} elsif (defined($pheader{'tags'})) {
- $s_keywords= $pheader{'tags'};
+ $data->{keywords}= $pheader{'tags'};
}
- if (length($s_keywords)) {
+ if (length($data->{keywords})) {
my @kws;
my %gkws = map { ($_, 1) } @gTags;
- foreach my $kw (sort split(/[,\s]+/, lc($s_keywords))) {
+ foreach my $kw (sort split(/[,\s]+/, lc($data->{keywords}))) {
push @kws, $kw if (defined $gkws{$kw});
}
- $s_keywords = join(" ", @kws);
+ $data->{keywords} = join(" ", @kws);
}
- $s_severity= '';
+ $data->{severity}= '';
if (defined($pheader{'severity'}) || defined($pheader{'priority'})) {
- $s_severity= $pheader{'severity'};
- $s_severity= $pheader{'priority'} unless ($s_severity);
- $s_severity =~ s/^\s*(.+)\s*$/$1/;
+ $data->{severity}= $pheader{'severity'};
+ $data->{severity}= $pheader{'priority'} unless ($data->{severity});
+ $data->{severity} =~ s/^\s*(.+)\s*$/$1/;
- if (!grep($_ eq $s_severity, @severities, "$gDefaultSeverity")) {
+ if (!grep($_ eq $data->{severity}, @severities, "$gDefaultSeverity")) {
$brokenness.= <<END;
Your message specified a Severity: in the pseudo-header, but
-the severity value $s_severity was not recognised.
+the severity value $data->{severity} was not recognised.
The default severity $gDefaultSeverity is being used instead.
The recognised values are: $gShowSeverities.
END
# if we use @gSeverityList array in the above line, perl -c gives:
# In string, @gSeverityList now must be written as \@gSeverityList at
# process line 452, near "$gDefaultSeverity is being used instead.
- $s_severity= '';
+ $data->{severity}= '';
}
}
&filelock("nextnumber.lock");
&unfilelock;
my $hash = get_hashname($ref);
&overwrite("db-h/$hash/$ref.log",'');
- &overwrite("db-h/$hash/$ref.status",
- "$replyto\n$intdate\n$subject\n$header{'message-id'}\n".
- "$s_package\n$s_keywords\n\n\n\n$s_severity\n$s_versions\n".
- "$s_fixed_versions\n");
- &bughook('new',$ref,
- "$replyto\n$intdate\n$subject\n$header{'message-id'}\n".
- "$s_package\n$s_keywords\n\n\n\n$s_severity\n$s_versions\n".
- "$s_fixed_versions\n");
+ $data->{originator} = $replyto;
+ $data->{date} = $intdate;
+ $data->{subject} = $subject;
+ $data->{msgid} = $header{'message-id'};
+ writebug($ref, $data);
&overwrite("db-h/$hash/$ref.report",
join("\n",@msg)."\n");
}
}
if ($codeletter eq 'U') {
- &htmllog("Message", "sent on", $s_originator, "$gBug#$ref.");
- &sendmessage(<<END,$s_originator,@resentccs);
+ &htmllog("Message", "sent on", $data->{originator}, "$gBug#$ref.");
+ &sendmessage(<<END,$data->{originator},@resentccs);
Subject: $gBug#$ref: $newsubject
Reply-To: $replyto, $ref-quiet\@$gEmailDomain
-${orgsender}Resent-To: $s_originator
+${orgsender}Resent-To: $data->{originator}
${resentcc}Resent-Date: $tdate
Resent-Message-ID: <handler.$ref.$nn\@$gEmailDomain>
Resent-Sender: $gMaintainerEmail
X-$gProject-PR-Message: report $ref
-X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
+X-$gProject-PR-Package: $data->{package}
+X-$gProject-PR-Keywords: $data->{keywords}
$fwd
END
} elsif ($codeletter eq 'B') {
&htmllog($newref ? "Report" : "Information", "forwarded",
join(', ',"$gSubmitList\@$gListDomain",@resentccs),
"<code>$gBug#$ref</code>".
- (length($s_package)? "; Package <code>".&sani($s_package)."</code>" : '').
+ (length($data->{package})? "; Package <code>".&sani($data->{package})."</code>" : '').
".");
&sendmessage(<<END,"$gSubmitList\@$gListDomain",@resentccs);
Subject: $gBug#$ref: $newsubject
Resent-Message-ID: <handler.$ref.$nn\@$gEmailDomain>
Resent-Sender: $gMaintainerEmail
X-$gProject-PR-Message: report $ref
-X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
+X-$gProject-PR-Package: $data->{package}
+X-$gProject-PR-Keywords: $data->{keywords}
$fwd
END
} elsif (@resentccs) {
&htmllog($newref ? "Report" : "Information", "forwarded",
$resentccval,
"<code>$gBug#$ref</code>".
- (length($s_package)? "; Package <code>".&sani($s_package)."</code>" : '').
+ (length($data->{package})? "; Package <code>".&sani($data->{package})."</code>" : '').
".");
&sendmessage(<<END,@resentccs);
Subject: $gBug#$ref: $newsubject
Resent-Message-ID: <handler.$ref.$nn\@$gEmailDomain>
Resent-Sender: $gMaintainerEmail
X-$gProject-PR-Message: report $ref
-X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
+X-$gProject-PR-Package: $data->{package}
+X-$gProject-PR-Keywords: $data->{keywords}
$fwd
END
}
References: $header{'message-id'}
Precedence: bulk
X-$gProject-PR-Message: ack-quiet $ref
-X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
+X-$gProject-PR-Package: $data->{package}
+X-$gProject-PR-Keywords: $data->{keywords}
Reply-To: $ref-quiet\@$gEmailDomain
Thank you for the problem report you have sent regarding $gProject.
References: $header{'message-id'}
Precedence: bulk
X-$gProject-PR-Message: ack-maintonly $ref
-X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
+X-$gProject-PR-Package: $data->{package}
+X-$gProject-PR-Keywords: $data->{keywords}
Reply-To: $ref-maintonly\@$gEmailDomain
Thank you for the problem report you have sent regarding $gProject.
References: $header{'message-id'}
Precedence: bulk
X-$gProject-PR-Message: ack $ref
-X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
+X-$gProject-PR-Package: $data->{package}
+X-$gProject-PR-Keywords: $data->{keywords}
Reply-To: $ref\@$gEmailDomain
Thank you for the problem report you have sent regarding $gProject.
References: $header{'message-id'}
Precedence: bulk
X-$gProject-PR-Message: ack-info-quiet $ref
-X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
+X-$gProject-PR-Package: $data->{package}
+X-$gProject-PR-Keywords: $data->{keywords}
Reply-To: $ref-quiet\@$gEmailDomain
Thank you for the additional information you have supplied regarding
References: $header{'message-id'}
Precedence: bulk
X-$gProject-PR-Message: ack-info-maintonly $ref
-X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
+X-$gProject-PR-Package: $data->{package}
+X-$gProject-PR-Keywords: $data->{keywords}
Reply-To: $ref-maintonly\@$gEmailDomain
Thank you for the additional information you have supplied regarding
References: $header{'message-id'}
Precedence: bulk
X-$gProject-PR-Message: ack-info $ref
-X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
+X-$gProject-PR-Package: $data->{package}
+X-$gProject-PR-Keywords: $data->{keywords}
Disabled-Doogie-Reply-To: $ref\@$gEmailDomain
Thank you for the additional information you have supplied regarding
sub checkmaintainers {
return if $maintainerschecked++;
- return if !length($s_package);
+ return if !length($data->{package});
open(MAINT,"$gMaintainerFile") || die &quit("maintainers open: $!");
while (<MAINT>) {
m/^\n$/ && next;
}
close(SOURCES);
$anymaintfound=0; $anymaintnotfound=0;
- for $p (split(m/[ \t?,()]+/,$s_package)) {
+ for $p (split(m/[ \t?,()]+/,$data->{package})) {
$p =~ y/A-Z/a-z/;
if (defined $gSubscriptionDomain) {
if (defined($pkgsrc{$p})) {
#!/usr/bin/perl -w
-# $Id: rebuild.in,v 1.5 2002/11/17 22:45:16 cjwatson Exp $
+# $Id: rebuild.in,v 1.6 2003/05/03 20:01:20 doogie Exp $
# Load modules and set envirnment
use File::Copy;
$ENV{'PATH'} = $lib_path.':'.$ENV{'PATH'};
chdir("$gSpoolDir") || die "chdir spool: $!\n";
+my $data;
sub readreport {
my $lref = shift;
my $path = shift;
- open(S,"$path/$lref.status") || die "unable to open $path/$lref: $!\n";
- chop($s_originator= <S>);
- chop($s_date= <S>);
- chop($s_subject= <S>);
- chop($s_msgid= <S>);
- chop($s_package= <S>);
- chop($s_keywords= <S>);
- chop($s_done= <S>);
- chop($s_forwarded= <S>);
- chop($s_mergedwith= <S>);
- chop($s_severity= <S>);
- close(S);
+ $data = readbug($lref);
return 1;
}
{ 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;
+ printf IDXFILE "%s %d %s\n", $data->{package}, $ref, $data->{subject};
}
}
else
{ 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;
+ printf IDXFILE "%s %d %s\n", $data->{package}, $ref, $data->{subject};
}
}
#!/usr/bin/perl
-# $Id: service.in,v 1.72 2003/03/27 23:29:19 cjwatson Exp $
+# $Id: service.in,v 1.73 2003/05/03 20:01:20 doogie Exp $
# ^ more or less ^
#
# Usage: service <code>.nn
$ref= $1;
if (&setbug) {
&transcript("'close' is deprecated; see http://$gWebDomain/Developer$gHTMLSuffix#closing.\n");
- if (length($s_done)) {
+ if (length($data->{done})) {
&transcript("$gBug is already closed, cannot re-close.\n\n");
&nochangebug;
} else {
- $action= "$gBug closed, send any further explanations to $s_originator";
+ $action= "$gBug closed, send any further explanations to $data->{originator}";
do {
- &addmaintainers($s_package);
+ &addmaintainers($data->{package});
if ( length( $gDoneList ) > 0 && length( $gListDomain ) >
0 ) { &addccaddress("$gDoneList\@$gListDomain"); }
- $s_done= $replyto;
+ $data->{done}= $replyto;
$message= <<END;
From: $gMaintainerEmail ($gProject $gBug Tracking System)
-To: $s_originator
+To: $data->{originator}
Subject: $gBug#$ref acknowledged by developer
($header{'subject'})
-References: $header{'message-id'} $s_msgid
-In-Reply-To: $s_msgid
+References: $header{'message-id'} $data->{msgid}
+In-Reply-To: $data->{msgid}
Message-ID: <handler.$ref.$nn.notifdonectrl.$midix\@$gEmailDomain>
Reply-To: $ref\@$gEmailDomain
This is an automatic notification regarding your $gBug report
-#$ref: $s_subject,
-which was filed against the $s_package package.
+#$ref: $data->{subject},
+which was filed against the $data->{package} package.
It has been marked as closed by one of the developers, namely
$replyto.
(administrator, $gProject $gBugs database)
END
- &sendmailmessage($message,$s_originator);
+ &sendmailmessage($message,$data->{originator});
} while (&getnextbug);
}
}
$ref= $1; $newpackage= $2;
$newpackage =~ y/A-Z/a-z/;
if (&setbug) {
- if (length($s_package)) {
- $action= "$gBug reassigned from package \`$s_package'".
+ if (length($data->{package})) {
+ $action= "$gBug reassigned from package \`$data->{package}'".
" to \`$newpackage'.";
} else {
$action= "$gBug assigned to package \`$newpackage'.";
}
do {
- &addmaintainers($s_package);
+ &addmaintainers($data->{package});
&addmaintainers($newpackage);
- $s_package= $newpackage;
+ $data->{package}= $newpackage;
} while (&getnextbug);
}
} elsif (m/^reopen\s+\#?(-?\d+)$/i ? ($noriginator='', 1) :
$ok++;
$ref= $1;
if (&setbug) {
- if (!length($s_done)) {
+ if (!length($data->{done})) {
&transcript("$gBug is already open, cannot reopen.\n\n");
&nochangebug;
} else {
$noriginator eq '' ? "$gBug reopened, originator not changed." :
"$gBug reopened, originator set to $noriginator.";
do {
- &addmaintainers($s_package);
- $s_originator= $noriginator eq '' ? $s_originator : $noriginator;
- $s_done= '';
+ &addmaintainers($data->{package});
+ $data->{originator}= $noriginator eq '' ? $data->{originator} : $noriginator;
+ $data->{done}= '';
} while (&getnextbug);
}
}
}
if (&getbug) {
&foundbug;
- &addmaintainers($s_package);
- $oldsubmitter= $s_originator;
- $s_originator= $newsubmitter;
+ &addmaintainers($data->{package});
+ $oldsubmitter= $data->{originator};
+ $data->{originator}= $newsubmitter;
$action= "Changed $gBug submitter from $oldsubmitter to $newsubmitter.";
&savebug;
&transcript("$action\n");
- if (length($s_done)) {
+ if (length($data->{done})) {
&transcript("(By the way, that $gBug is currently marked as done.)\n");
}
&transcript("\n");
To: $oldsubmitter
Subject: $gBug#$ref submitter address changed
($header{'subject'})
-References: $header{'message-id'} $s_msgid
-In-Reply-To: $s_msgid
+References: $header{'message-id'} $data->{msgid}
+In-Reply-To: $data->{msgid}
Message-ID: <handler.$ref.$nn.newsubmitter.$midix\@$gEmailDomain>
Reply-To: $ref\@$gEmailDomain
The submitter address recorded for your $gBug report
-#$ref: $s_subject
+#$ref: $data->{subject}
has been changed.
The new submitter address for this report is
$ok++;
$ref= $1; $whereto= $2;
if (&setbug) {
- if (length($s_forwarded)) {
- $action= "Forwarded-to-address changed from $s_forwarded to $whereto.";
+ if (length($data->{forwarded})) {
+ $action= "Forwarded-to-address changed from $data->{forwarded} to $whereto.";
} else {
$action= "Noted your statement that $gBug has been forwarded to $whereto.";
}
- if (length($s_done)) {
+ if (length($data->{done})) {
$extramessage= "(By the way, this $gBug is currently marked as done.)\n";
}
do {
- &addmaintainers($s_package);
+ &addmaintainers($data->{package});
if (length($gFowardList)>0 && length($gListDomain)>0 ) {
&addccaddress("$gFowardList\@$gListDomain");
}
- $s_forwarded= $whereto;
+ $data->{forwarded}= $whereto;
} while (&getnextbug);
}
} elsif (m/^notforwarded\s+\#?(-?\d+)$/i) {
$ok++;
$ref= $1;
if (&setbug) {
- if (!length($s_forwarded)) {
+ if (!length($data->{forwarded})) {
&transcript("$gBug is not marked as having been forwarded.\n\n");
&nochangebug;
} else {
- $action= "Removed annotation that $gBug had been forwarded to $s_forwarded.";
+ $action= "Removed annotation that $gBug had been forwarded to $data->{forwarded}.";
do {
- &addmaintainers($s_package);
- $s_forwarded= '';
+ &addmaintainers($data->{package});
+ $data->{forwarded}= '';
} while (&getnextbug);
}
}
&transcript("Severity level \`$newseverity' is obsolete. " .
"$gObsoleteSeverities{$newseverity}\n\n");
} elsif (&setbug) {
- $printseverity= $s_severity;
+ $printseverity= $data->{severity};
$printseverity= "$gDefaultSeverity" if $printseverity eq '';
$action= "Severity set to \`$newseverity'.";
do {
- &addmaintainers($s_package);
- $s_severity= $newseverity;
+ &addmaintainers($data->{package});
+ $data->{severity}= $newseverity;
} while (&getnextbug);
}
} elsif (m/^tags?\s+\#?(-?\d+)\s+(([=+-])\s*)?(\S.*)?$/i) {
"Recognized are: ".join(' ', @gTags).".\n\n");
}
if (&setbug) {
- if ($s_keywords eq '') {
+ if ($data->{keywords} eq '') {
&transcript("There were no tags set.\n");
} else {
- &transcript("Tags were: $s_keywords\n");
+ &transcript("Tags were: $data->{keywords}\n");
}
if ($addsub eq "set") {
$action= "Tags set to: " . join(", ", @okaytags);
$action= "Tags removed: " . join(", ", @okaytags);
}
do {
- &addmaintainers($s_package);
- $s_keywords = '' if ($addsub eq "set");
+ &addmaintainers($data->{package});
+ $data->{keywords} = '' if ($addsub eq "set");
if ($addsub eq "sub") {
foreach my $t (@badtags) {
- $s_keywords = join ' ', grep $_ ne $t,
- split ' ', $s_keywords;
+ $data->{keywords} = join ' ', grep $_ ne $t,
+ split ' ', $data->{keywords};
}
}
foreach my $t (@okaytags) {
- $s_keywords = join ' ', grep $_ ne $t,
- split ' ', $s_keywords;
- $s_keywords = "$t $s_keywords" unless($addsub eq "sub");
+ $data->{keywords} = join ' ', grep $_ ne $t,
+ split ' ', $data->{keywords};
+ $data->{keywords} = "$t $data->{keywords}" unless($addsub eq "sub");
}
- $s_keywords =~ s/\s*$//;
+ $data->{keywords} =~ s/\s*$//;
} while (&getnextbug);
}
} elsif (m/^retitle\s+\#?(-?\d+)\s+(\S.*\S)\s*$/i) {
}
if (&getbug) {
&foundbug;
- &addmaintainers($s_package);
- $s_subject= $newtitle;
+ &addmaintainers($data->{package});
+ $data->{subject}= $newtitle;
$action= "Changed $gBug title.";
&savebug;
&transcript("$action\n");
- if (length($s_done)) {
+ if (length($data->{done})) {
&transcript("(By the way, that $gBug is currently marked as done.)\n");
}
&transcript("\n");
$ok++;
$ref= $1;
if (&setbug) {
- if (!length($s_mergedwith)) {
+ if (!length($data->{mergedwith})) {
&transcript("$gBug is not marked as being merged with any others.\n\n");
&nochangebug;
} else {
$mergelowstate eq 'locked' || die "$mergelowstate ?";
$action= "Disconnected #$ref from all other report(s).";
- @newmergelist= split(/ /,$s_mergedwith);
+ @newmergelist= split(/ /,$data->{mergedwith});
$discref= $ref;
do {
- &addmaintainers($s_package);
- $s_mergedwith= ($ref == $discref) ? ''
+ &addmaintainers($data->{package});
+ $data->{mergedwith}= ($ref == $discref) ? ''
: join(' ',grep($_ ne $ref,@newmergelist));
} while (&getnextbug);
}
next if grep($_ eq $ref,@newmergelist);
if (!&getbug) { ¬foundbug; @newmergelist=(); last }
&foundbug;
- &transcript("D| adding $ref ($s_mergedwith)\n") if $dl;
+ &transcript("D| adding $ref ($data->{mergedwith})\n") if $dl;
$mismatch= '';
- &checkmatch('package','m_package',$s_package);
- &checkmatch('forwarded addr','m_forwarded',$s_forwarded);
- $s_severity = '$gDefaultSeverity' if $s_severity eq '';
- &checkmatch('severity','m_severity',$s_severity);
- &checkmatch('done mark','m_done',length($s_done) ? 'done' : 'open');
- foreach my $t (split /\s+/, $s_keywords) { $tags{$t} = 1; }
+ &checkmatch('package','m_package',$data->{package});
+ &checkmatch('forwarded addr','m_forwarded',$data->{forwarded});
+ $data->{severity} = '$gDefaultSeverity' if $data->{severity} eq '';
+ &checkmatch('severity','m_severity',$data->{severity});
+ &checkmatch('done mark','m_done',length($data->{done}) ? 'done' : 'open');
+ foreach my $t (split /\s+/, $data->{keywords}) { $tags{$t} = 1; }
if (length($mismatch)) {
&transcript("Mismatch - only $gBugs in same state can be merged:\n".
$mismatch."\n");
&cancelbug; @newmergelist=(); last;
}
push(@newmergelist,$ref);
- push(@tomerge,split(/ /,$s_mergedwith));
+ push(@tomerge,split(/ /,$data->{mergedwith}));
&cancelbug;
}
if (@newmergelist) {
$action= "Merged @newmergelist.";
for $ref (@newmergelist) {
&getbug || die "huh ? $gBug $ref disappeared during merge";
- &addmaintainers($s_package);
- $s_mergedwith= join(' ',grep($_ ne $ref,@newmergelist));
- $s_keywords= join(' ', keys %tags);
+ &addmaintainers($data->{package});
+ $data->{mergedwith}= join(' ',grep($_ ne $ref,@newmergelist));
+ $data->{keywords}= join(' ', keys %tags);
&savebug;
}
&transcript("$action\n\n");
$ref = $origref;
if (&setbug) {
- if (length($s_mergedwith)) {
+ if (length($data->{mergedwith})) {
&transcript("$gBug is marked as being merged with others.\n\n");
&nochangebug;
} else {
copy("db-h/$ohash/$origref.log", "db-h/$hash/$ref.log");
copy("db-h/$ohash/$origref.status", "db-h/$hash/$ref.status");
copy("db-h/$ohash/$origref.report", "db-h/$hash/$ref.report");
- &bughook('new', $ref, "$s_originator\n$s_date\n$s_subject\n$s_msgid\n$s_package\n$s_keywords\n$s_done\n$s_forwarded\n$s_mergedwith\n$s_severity\n");
+ &bughook('new', $ref, "$data->{originator}\n$data->{date}\n$data->{subject}\n$data->{msgid}\n$data->{package}\n$data->{keywords}\n$data->{done}\n$data->{forwarded}\n$data->{mergedwith}\n$data->{severity}\n");
$ref++;
}
&dlex("setbug => 0s");
return 0;
}
- @thisbugmergelist= split(/ /,$s_mergedwith);
+ @thisbugmergelist= split(/ /,$data->{mergedwith});
if (!@thisbugmergelist) {
&foundbug;
$manybugs= 0;
# endmerge
sub notfoundbug { &transcript("$gBug number $ref not found.\n\n"); }
-sub foundbug { &transcript("$gBug#$ref: $s_subject\n"); }
+sub foundbug { &transcript("$gBug#$ref: $data->{subject}\n"); }
sub getmerge {
&dlen("getmerge");
sub getbug {
&dlen("getbug $ref");
$lowstate eq 'idle' || die "$state ?";
- if (&lockreadbug($ref)) {
+ if (($data = &lockreadbug($ref))) {
$sref= $ref;
$lowstate= "open";
&dlex("getbug => 1");
"\3\n".
"\7\n",@{escapelog(@log)},"\n\3\n") || &quit("writing db-h/$hash/$ref.log: $!");
close(L) || &quit("closing db-h/$hash/$ref.log: $!");
- open(S,">db-h/$hash/$ref.status.new") || &quit("opening db-h/$hash/$ref.status.new: $!");
- print(S
- "$s_originator\n".
- "$s_date\n".
- "$s_subject\n".
- "$s_msgid\n".
- "$s_package\n".
- "$s_keywords\n".
- "$s_done\n".
- "$s_forwarded\n".
- "$s_mergedwith\n".
- "$s_severity\n".
- "$s_versions\n".
- "$s_fixed_versions\n") || &quit("writing db-h/$hash/$ref.status.new: $!");
- close(S) || &quit("closing db-h/$hash/$ref.status.new: $!");
- rename("db-h/$hash/$ref.status.new","db-h/$hash/$ref.status") ||
- &quit("installing new db-h/$hash/$ref.status: $!");
- &bughook('change',$ref,
- "$s_originator\n".
- "$s_date\n".
- "$s_subject\n".
- "$s_msgid\n".
- "$s_package\n".
- "$s_keywords\n".
- "$s_done\n".
- "$s_forwarded\n".
- "$s_mergedwith\n".
- "$s_severity\n".
- "$s_versions\n".
- "$s_fixed_versions\n");
- &unfilelock;
+ writebug($ref, $data);
$lowstate= "idle";
&dlex("savebug");
}
#!/usr/bin/perl
-# $Id: summary.in,v 1.7 2003/01/08 12:47:56 cjwatson Exp $
+# $Id: summary.in,v 1.8 2003/05/03 20:01:20 doogie Exp $
$config_path = '/etc/debbugs';
$lib_path = '/usr/lib/debbugs';
$amonths=-1;
while (length($f=shift(@list))) {
- if (!lockreadbug($f)) { next; }
- $_= $s_package; y/A-Z/a-z/; $_= $` if m/[^-+._a-z0-9]/;
- $s_maintainer=
+ if (!($data = lockreadbug($f))) { next; }
+ $_= $data->{package}; y/A-Z/a-z/; $_= $` if m/[^-+._a-z0-9]/;
+ $data->{maintainer}=
defined($maintainer{$_}) ? $maintainer{$_} :
length($_) ? "(unknown -- \`$_')" :
"(unknown)";
if ($mode eq 'undone' || $mode eq 'veryold') {
&unfilelock;
- next if length($s_done) || length($s_forwarded);
- $cmonths= int(($startdate - $s_date)/2592000); # 3600*24*30 (30 days)
+ next if length($data->{done}) || length($data->{forwarded});
+ $cmonths= int(($startdate - $data->{date})/2592000); # 3600*24*30 (30 days)
next if $mode eq 'veryold' && $cmonths < 2;
if ($cmonths != $amonths) {
$msg= $cmonths == 0 ? "Submitted in the last month" :
print "\n$msg:\n$head\n";
$amonths= $cmonths;
}
- printf("%6d %-10.10s %-30.30s %-.31s\n", $f, $s_package,
- (length($s_keywords) ? $s_keywords.'/' : '').$s_subject,
- $s_maintainer) || &quit("output undone: $!");
+ printf("%6d %-10.10s %-30.30s %-.31s\n", $f, $data->{package},
+ (length($data->{keywords}) ? $data->{keywords}.'/' : '').$data->{subject},
+ $data->{maintainer}) || &quit("output undone: $!");
} elsif ($mode eq 'bymaint') {
&unfilelock;
- next if length($s_done) || length($s_forwarded);
+ next if length($data->{done}) || length($data->{forwarded});
$string{$f}=
- sprintf(" %-10.10s %6d %-.59s\n", $s_package, $f, $s_subject);
- $s_maintainer= "(unknown)" if $s_maintainer =~ m/^\(unknown \-\-/;
- $maintainercnt{$s_maintainer}++;
- $maintainerlist{$s_maintainer}.= " $f";
+ sprintf(" %-10.10s %6d %-.59s\n", $data->{package}, $f, $data->{subject});
+ $data->{maintainer}= "(unknown)" if $data->{maintainer} =~ m/^\(unknown \-\-/;
+ $maintainercnt{$data->{maintainer}}++;
+ $maintainerlist{$data->{maintainer}}.= " $f";
} else {
&quit("badmode $mode");
}