diff options
author | bryce-mozilla%nextbus.com <> | 1999-05-12 14:22:34 +0200 |
---|---|---|
committer | bryce-mozilla%nextbus.com <> | 1999-05-12 14:22:34 +0200 |
commit | f9e320695616f29fb1f11b7a5f3f9cee2040d7ee (patch) | |
tree | bd415b305dd19f0edfe87e5f58d26184bd54c980 /processmail | |
parent | 41d9abb76b2c0234a12cdff8a22357a14a362cde (diff) | |
download | bugzilla-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-x | processmail | 89 |
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; |