diff options
Diffstat (limited to 'processmail')
-rwxr-xr-x | processmail | 89 |
1 files changed, 41 insertions, 48 deletions
diff --git a/processmail b/processmail index 0191fe78b..3da6448e1 100755 --- a/processmail +++ b/processmail @@ -19,6 +19,9 @@ # # Contributor(s): Terry Weissman <terry@mozilla.org> + +# To recreate the shadow database, run "processmail regenerate" . + use diagnostics; use strict; @@ -29,8 +32,6 @@ $| = 1; umask(0); $::lockcount = 0; -my $regenerate = 0; -my $nametoexclude = ""; sub Lock { if ($::lockcount <= 0) { @@ -181,7 +182,7 @@ sub fixaddresses { my @result; my %seen; foreach my $i (@$list) { - if ($i ne $nametoexclude && $i ne "" && !defined $::nomail{$i} && !defined $seen{$i}) { + if ($i ne "" && !defined $::nomail{$i} && !defined $seen{$i}) { push @result, $i; $seen{$i} = 1; } @@ -199,8 +200,40 @@ sub Log { Unlock(); } -sub ProcessOneBug { - my $i = $_[0]; + +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) { my $old = "shadow/$i"; my $new = "shadow/$i.tmp.$$"; my $diffs = "shadow/$i.diffs.$$"; @@ -224,7 +257,7 @@ sub ProcessOneBug { my $tolist = fixaddresses([$::bug{'assigned_to'}, $::bug{'reporter'}, $::bug{'qa_contact'}]); my $cclist = fixaddresses($::bug{'cclist'}); - my $logstr = "Bug $i $verb"; + my $logstr = "Bug $i changed"; if ($tolist ne "" || $cclist ne "") { my %substs; @@ -242,12 +275,11 @@ sub ProcessOneBug { my $msg = PerformSubsts(Param("changedmail"), \%substs); if (!$regenerate) { - open(SENDMAIL, "|/usr/sbin/sendmail -t") || + open(SENDMAIL, "|/usr/lib/sendmail -t") || die "Can't open sendmail"; print SENDMAIL $msg; close SENDMAIL; - $logstr = "$logstr; mail sent to $tolist, $cclist"; - print "<B>Email sent to:</B> $tolist $cclist <B>Excluding:</B> $nametoexclude\n"; + $logstr = "$logstr; mail sent to $tolist $cclist"; } } unlink($diffs); @@ -260,43 +292,4 @@ sub ProcessOneBug { } } -# 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; |