summaryrefslogtreecommitdiffstats
path: root/processmail
diff options
context:
space:
mode:
authorbryce-mozilla%nextbus.com <>1999-05-12 14:22:34 +0200
committerbryce-mozilla%nextbus.com <>1999-05-12 14:22:34 +0200
commitf9e320695616f29fb1f11b7a5f3f9cee2040d7ee (patch)
treebd415b305dd19f0edfe87e5f58d26184bd54c980 /processmail
parent41d9abb76b2c0234a12cdff8a22357a14a362cde (diff)
downloadbugzilla-f9e320695616f29fb1f11b7a5f3f9cee2040d7ee.tar.gz
bugzilla-f9e320695616f29fb1f11b7a5f3f9cee2040d7ee.tar.xz
"nospam" feature. BugZilla will no longer email the person submitting
the change (after all, they are right there viewing things interactively). To make this clear to everyone, print out the exact email list as each bug is processed.
Diffstat (limited to 'processmail')
-rwxr-xr-xprocessmail89
1 files changed, 50 insertions, 39 deletions
diff --git a/processmail b/processmail
index 3da6448e1..48eba9193 100755
--- a/processmail
+++ b/processmail
@@ -17,8 +17,8 @@
# Corporation. Portions created by Netscape are Copyright (C) 1998
# Netscape Communications Corporation. All Rights Reserved.
#
-# Contributor(s): Terry Weissman <terry@mozilla.org>
-
+# Contributor(s): Terry Weissman <terry@mozilla.org>,
+# Bryce Nesbitt <bryce-mozilla@nextbus.com>
# To recreate the shadow database, run "processmail regenerate" .
@@ -32,6 +32,8 @@ $| = 1;
umask(0);
$::lockcount = 0;
+my $regenerate = 0;
+my $nametoexclude = "";
sub Lock {
if ($::lockcount <= 0) {
@@ -182,7 +184,7 @@ sub fixaddresses {
my @result;
my %seen;
foreach my $i (@$list) {
- if ($i ne "" && !defined $::nomail{$i} && !defined $seen{$i}) {
+ if ($i ne $nametoexclude && $i ne "" && !defined $::nomail{$i} && !defined $seen{$i}) {
push @result, $i;
$seen{$i} = 1;
}
@@ -200,40 +202,8 @@ sub Log {
Unlock();
}
-
-ConnectToDatabase();
-
-
-Lock();
-
-# foreach i [split [read_file -nonewline "okmail"] "\n"] {
-# set okmail($i) 1
-# }
-
-
-
-if (open(FID, "<data/nomail")) {
- while (<FID>) {
- $::nomail{trim($_)} = 1;
- }
- close FID;
-}
-
-
-my $regenerate = 0;
-
-if ($ARGV[0] eq "regenerate") {
- $regenerate = 1;
- shift @ARGV;
- SendSQL("select bug_id from bugs order by bug_id");
- my @row;
- while (@row = FetchSQLData()) {
- push @ARGV, $row[0];
- }
- print "$#ARGV bugs to be regenerated.\n";
-}
-
-foreach my $i (@ARGV) {
+sub ProcessOneBug {
+ my $i = $_[0];
my $old = "shadow/$i";
my $new = "shadow/$i.tmp.$$";
my $diffs = "shadow/$i.diffs.$$";
@@ -257,7 +227,7 @@ foreach my $i (@ARGV) {
my $tolist = fixaddresses([$::bug{'assigned_to'}, $::bug{'reporter'},
$::bug{'qa_contact'}]);
my $cclist = fixaddresses($::bug{'cclist'});
- my $logstr = "Bug $i changed";
+ my $logstr = "Bug $i $verb";
if ($tolist ne "" || $cclist ne "") {
my %substs;
@@ -275,11 +245,13 @@ foreach my $i (@ARGV) {
my $msg = PerformSubsts(Param("changedmail"), \%substs);
if (!$regenerate) {
+ # Note: fixaddresses may result in a Cc: only. This seems harmless.
open(SENDMAIL, "|/usr/lib/sendmail -t") ||
die "Can't open sendmail";
print SENDMAIL $msg;
close SENDMAIL;
- $logstr = "$logstr; mail sent to $tolist $cclist";
+ $logstr = "$logstr; mail sent to $tolist, $cclist";
+ print "<B>Email sent to:</B> $tolist $cclist <B>Excluding:</B> $nametoexclude\n";
}
}
unlink($diffs);
@@ -292,4 +264,43 @@ foreach my $i (@ARGV) {
}
}
+# Code starts here
+
+ConnectToDatabase();
+Lock();
+
+if (open(FID, "<data/nomail")) {
+ while (<FID>) {
+ $::nomail{trim($_)} = 1;
+ }
+ close FID;
+}
+
+if (($#ARGV < 0) || ($#ARGV > 1)) {
+ print "Usage error: processmail {bugid} {nametoexclude}\nOr: processmail regenerate\n";
+ exit;
+}
+
+# To recreate the shadow database, run "processmail regenerate" .
+if ($ARGV[0] eq "regenerate") {
+ $regenerate = 1;
+ shift @ARGV;
+ SendSQL("select bug_id from bugs order by bug_id");
+ my @regenerate_list;
+ while (my @row = FetchSQLData()) {
+ push @regenerate_list, $row[0];
+ }
+ foreach my $i (@regenerate_list) {
+ ProcessOneBug($i);
+ }
+ print("\n");
+ exit;
+}
+
+if ($#ARGV == 1) {
+ $nametoexclude = $ARGV[1];
+}
+
+ProcessOneBug($ARGV[0]);
+
exit;