#!/usr/bin/perl
-# $Id: process.in,v 1.17 2000/10/08 10:06:32 doogie Exp $
+# $Id: process.in,v 1.18 2000/10/09 00:32:23 ajt Exp $
#
# Usage: process nn
# Temps: incoming/Pnn
&appendlog;
&finish;
} else { $s_package= $pheader{'package'}; }
+ $s_keywords= '';
if (defined($pheader{'keywords'})) {
$s_keywords= $pfullheader{'keywords'};
+ } elsif (defined($pheader{'tags'})) {
+ $s_keywords= $pfullheader{'tags'};
+ }
+ if (length($s_keywords)) {
+ my @kws;
+ my %gkws = map { (%_, 1) } @gTags;
+ foreach my $kw (sort split(/[,\s]+/, lc($s_keywords))) {
+ push @kws, $kw if (defined $gkws{$kw});
+ }
+ $s_keywords = join(" ", @kws);
}
$s_severity= '';
if (defined($pheader{'severity'}) || defined($pheader{'priority'}))
Resent-Sender: $gMaintainerEmail
X-$gProject-PR-Message: report $ref
X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
$fwd
END
} elsif ($codeletter eq 'B') {
Resent-Sender: $gMaintainerEmail
X-$gProject-PR-Message: report $ref
X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
$fwd
END
} elsif (@resentccs) {
Resent-Sender: $gMaintainerEmail
X-$gProject-PR-Message: report $ref
X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
$fwd
END
}
#!/usr/bin/perl -w
-# $Id: service.in,v 1.20 2000/10/07 17:27:13 joy Exp $
+# $Id: service.in,v 1.21 2000/10/09 00:32:23 ajt Exp $
#
# Usage: service <code>.nn
# Temps: incoming/P<code>.nn
$s_severity= $newseverity;
} while (&getnextbug);
}
+ } elsif (m/^tags\s+\#?(\d+)\s+(([=+-])\s+)?(\S.*)?$/) {
+ $ok++;
+ $ref= $1; $addsubcode= $3; $tags= $4;
+ $addsub = "add";
+ $addsub = "sub" if ($addsubcode eq "-");
+ $addsub = "add" if ($addsubcode eq "+");
+ $addsub = "set" if ($addsubcode eq "=");
+ my @okaytags = ();
+ my @badtags = ();
+ foreach my $t (split /[\s,]+/, $tags) {
+ if (!grep($_ eq $t, @gTags)) {
+ push @badtags, $t;
+ } else {
+ push @okaytags, $t;
+ }
+ }
+ if (@badtags) {
+ &transcript("Unknown tag/s: ".join(', ', @badtags).".\n".
+ "Recognised are: ".join(' ', @gTags).".\n\n");
+ }
+ if (&setbug) {
+ if ($addsub eq "set") {
+ $action= "Tags set to: " . join(", ", @okaytags);
+ } elsif ($addsub eq "add") {
+ $action= "Tags added: " . join(", ", @okaytags);
+ } elsif ($addsub eq "sub") {
+ $action= "Tags removed: " . join(", ", @okaytags);
+ }
+ do {
+ &addmaintainers($s_package);
+ $s_keywords = '' if ($addsub eq "set");
+ if ($addsub eq "sub") {
+ foreach my $t (@badtags) {
+ $s_keywords = join ' ', grep $_ ne $t,
+ split ' ', $s_keywords;
+ }
+ }
+ foreach my $t (@okaytags) {
+ $s_keywords = join ' ', grep $_ ne $t,
+ split ' ', $s_keywords;
+ $s_keywords = "$t $s_keywords" unless($addsub eq "sub");
+ }
+ $s_keywords =~ s/\s*$//;
+ } while (&getnextbug);
+ }
} elsif (m/^retitle\s+\#?(\d+)\s+(\S.*\S)\s*$/i) {
$ok++;
$ref= $1; $newtitle= $2;
$ok++;
@tomerge= sort { $a <=> $b } split(/\s+/,$1);
@newmergelist= ();
+ my %tags = ();
&getmerge;
while (defined($ref= shift(@tomerge))) {
&transcript("D| checking merge $ref\n") if $dl;
next if grep($_ eq $ref,@newmergelist);
if (!&getbug) { ¬foundbug; @newmergelist=(); last }
&foundbug;
- &transcript("D| adding $ref ($s_mergewith)\n") if $dl;
+ &transcript("D| adding $ref ($s_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; }
if (length($mismatch)) {
&transcript("Mismatch - only $gBugs in same state can be merged:\n".
$mismatch."\n");
&getbug || die "huh ? $gBug $ref disappeared during merge";
&addmaintainers($s_package);
$s_mergedwith= join(' ',grep($_ ne $ref,@newmergelist));
+ $s_keywords= join(' ', keys %tags);
&savebug;
}
&transcript("$action\n\n");