From f9e320695616f29fb1f11b7a5f3f9cee2040d7ee Mon Sep 17 00:00:00 2001 From: "bryce-mozilla%nextbus.com" <> Date: Wed, 12 May 1999 12:22:34 +0000 Subject: "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. --- processmail | 89 ++++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 50 insertions(+), 39 deletions(-) (limited to 'processmail') 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 - +# Contributor(s): Terry Weissman , +# Bryce Nesbitt # 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, ") { - $::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 "Email sent to: $tolist $cclist Excluding: $nametoexclude\n"; } } unlink($diffs); @@ -292,4 +264,43 @@ foreach my $i (@ARGV) { } } +# Code starts here + +ConnectToDatabase(); +Lock(); + +if (open(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; -- cgit v1.2.3-24-g4f1b