192 lines
6.5 KiB
Plaintext
192 lines
6.5 KiB
Plaintext
$NetBSD: patch-ae,v 1.5 2011/01/29 19:39:14 spz Exp $
|
|
|
|
bring up to perl 5.12 standard (this is old code)
|
|
|
|
avoid the wrapper + -c trap
|
|
|
|
--- digest.orig 2000-01-07 11:04:34.000000000 +0000
|
|
+++ digest
|
|
@@ -72,8 +72,8 @@ sub receive_message {
|
|
sub should_be_sent {
|
|
# fudge factors for headers and footers
|
|
$sum = 600 + length($HEADER) + length($HEADERS) + length($TRAILER);
|
|
- $lines = 25 + ($HEADER =~ s/\n/\n/g) + ($HEADERS =~ s/\n/\n/g) +
|
|
- ($TRAILER =~ s/\n/\n/g);
|
|
+ $lines = 25 + ($HEADER =~ s/\n/\n/gm) + ($HEADERS =~ s/\n/\n/gm) +
|
|
+ ($TRAILER =~ s/\n/\n/gm);
|
|
##print "start: lines = $lines\n";
|
|
$i = shift;
|
|
while (1) {
|
|
@@ -87,17 +87,17 @@ sub should_be_sent {
|
|
|
|
# only count From/Date/Subject header fields to get a
|
|
# more accurate size and line count.
|
|
- $head =~ s/\n\s+/ /g;
|
|
- $head =~ /^(From:\s+.*)/i && ($sum += length($1)+1, $lines++);
|
|
- $head =~ /^(Subject:\s+.*)/i && ($sum += length($1)+1, $lines++);
|
|
- $head =~ /^(Date:\s+.*)/i && ($sum += length($1)+1, $lines++);
|
|
+ $head =~ s/\n\s+/ /gm;
|
|
+ $head =~ /^(From:\s+.*)/im && ($sum += length($1)+1, $lines++);
|
|
+ $head =~ /^(Subject:\s+.*)/im && ($sum += length($1)+1, $lines++);
|
|
+ $head =~ /^(Date:\s+.*)/im && ($sum += length($1)+1, $lines++);
|
|
$sum++, $lines++;
|
|
|
|
# count the body of the message
|
|
undef $/;
|
|
$body = <COUNT>;
|
|
$sum += length($body);
|
|
- $lines += ($body =~ s/\n/\n/g); # count newlines
|
|
+ $lines += ($body =~ s/\n/\n/gm); # count newlines
|
|
|
|
$/ = "\n";
|
|
close(COUNT);
|
|
@@ -175,35 +175,35 @@ sub send_digest {
|
|
print STDERR "producing $V{'NAME'} V$VOLUME #$NUMBER\n";
|
|
foreach (@files) {
|
|
$message = "$V{'INCOMING'}/$_";
|
|
- open(message) || &abort("$message: $!\n");
|
|
+ open(MESSAGE, $message) || &abort("$message: $!\n");
|
|
print STDERR "\tprocessing $message\n";
|
|
push(@processed,$message);
|
|
|
|
$/ = '';
|
|
- $head = <message>;
|
|
- $head =~ s/\n\s+/ /g;
|
|
+ $head = <MESSAGE>;
|
|
+ $head =~ s/\n\s+/ /gm;
|
|
$body = "";
|
|
- $subj = ($head =~ /^Subject:\s+(.*)/i)? $1: "[none]";
|
|
- ($from) = $head =~ /^From:\s+(.*)/i;
|
|
- ($date) = $head =~ /^Date:\s+(.*)/i;
|
|
+ $subj = ($head =~ /^Subject:\s+(.*)/im)? $1: "[none]";
|
|
+ ($from) = $head =~ /^From:\s+(.*)/im;
|
|
+ ($date) = $head =~ /^Date:\s+(.*)/im;
|
|
|
|
undef $/;
|
|
- $body = <message>;
|
|
- close(message);
|
|
+ $body = <MESSAGE>;
|
|
+ close(MESSAGE);
|
|
|
|
# trim message fronter and footers inserted by resend in
|
|
# non digest version of list
|
|
if ($RMHEADER) {
|
|
- $body =~ s/$RMHEADER/\n/;
|
|
+ $body =~ s/$RMHEADER/\n/m;
|
|
}
|
|
if ($RMTRAILER) {
|
|
- $body =~ s/$RMTRAILER/\n/;
|
|
+ $body =~ s/$RMTRAILER/\n/m;
|
|
}
|
|
|
|
# escape ^From <user> <weekday> <month> <day> <hr:min:sec> ...
|
|
$body =~
|
|
- s/^From (\S+\s+\w{3}\s+\w{3}\s+\d+\s+\d+:\d+:\d+)/>From $1/g;
|
|
- $body =~ s/^-/- -/g; # escape encapsulation boundaries in message
|
|
+ s/^From (\S+\s+\w{3}\s+\w{3}\s+\d+\s+\d+:\d+:\d+)/>From $1/gm;
|
|
+ $body =~ s/^-/- -/gm; # escape encapsulation boundaries in message
|
|
# trim trailing \n's
|
|
$len = length($body) - 1;
|
|
$len-- while (substr($body,$len,1) eq "\n");
|
|
@@ -291,7 +291,9 @@ EOF
|
|
} else {
|
|
$sender = $V{'ERRORS-TO'};
|
|
$mailcmd = eval qq/"$mailer"/;
|
|
+ print STDERR "$mailcmd $V{'REALLY-TO'} < $DIGEST\n";
|
|
system("$mailcmd $V{'REALLY-TO'} < $DIGEST");
|
|
+ chmod 0664, $DIGEST;
|
|
unlink(@processed);
|
|
}
|
|
|
|
@@ -302,7 +304,6 @@ EOF
|
|
}
|
|
|
|
sub init {
|
|
- $* = 1;
|
|
$HOME = $ENV{"HOME"} || (getpwuid($>))[7];
|
|
chdir($HOME);
|
|
&getopt("drRmpc:Cl:z") ||
|
|
@@ -322,12 +323,15 @@ sub readconfig {
|
|
&abort("-C used without -l");
|
|
} else {
|
|
# Read and execute the .cf file
|
|
- $cf = $opt_c || $ENV{"MAJORDOMO_CF"} ||
|
|
- "/etc/majordomo.cf";
|
|
+ $cf = $ENV{"MAJORDOMO_CF"} || $opt_c || "/etc/majordomo.cf";
|
|
require "$cf";
|
|
|
|
chdir($homedir);
|
|
|
|
+ # All these should be in the standard PERL library
|
|
+ unshift(@INC, $bindir);
|
|
+ unshift(@INC, $homedir);
|
|
+
|
|
$opt_l =~ tr/A-Z/a-z/;
|
|
|
|
require "config_parse.pl";
|
|
@@ -360,9 +364,9 @@ $bounce_mailer = "$sendmail_command -f\$
|
|
&get_config($listdir, $config_opts{$opt_l,"digest_rm_fronter"});
|
|
$RMHEADER = $config_opts{$config_opts{$opt_l,"digest_rm_fronter"},
|
|
"message_fronter"};
|
|
- $RMHEADER =~ s/([^A-Za-z0-9 \001])/\\\1/g;
|
|
- $RMHEADER =~ s/\\\$(SENDER|VERSION|LIST)/\[\^\\n\]\*/g;
|
|
- $RMHEADER =~ s/\001/\\n/g;
|
|
+ $RMHEADER =~ s/([^A-Za-z0-9 \001])/\\\1/gm;
|
|
+ $RMHEADER =~ s/\\\$(SENDER|VERSION|LIST)/\[\^\\n\]\*/gm;
|
|
+ $RMHEADER =~ s/\001/\\n/gm;
|
|
}
|
|
if ($config_opts{$opt_l,"digest_rm_footer"}) {
|
|
if ($config_opts{$opt_l,"digest_rm_footer"} ne
|
|
@@ -371,16 +375,16 @@ $bounce_mailer = "$sendmail_command -f\$
|
|
}
|
|
$RMTRAILER = $config_opts{$config_opts{$opt_l,"digest_rm_footer"},
|
|
"message_footer"};
|
|
- $RMTRAILER =~ s/([^A-Za-z0-9 \001])/\\\1/g;
|
|
- $RMTRAILER =~ s/\\\$(SENDER|VERSION|LIST)/\[\^\\n\]\*/g;
|
|
- $RMTRAILER =~ s/\001/\\n/g;
|
|
+ $RMTRAILER =~ s/([^A-Za-z0-9 \001])/\\\1/gm;
|
|
+ $RMTRAILER =~ s/\\\$(SENDER|VERSION|LIST)/\[\^\\n\]\*/gm;
|
|
+ $RMTRAILER =~ s/\001/\\n/gm;
|
|
}
|
|
|
|
# map config opts to internal variables and $V array
|
|
$HEADER = $config_opts{$opt_l,"message_fronter"};
|
|
- $HEADER =~ s/\001/\n/g;
|
|
+ $HEADER =~ s/\001/\n/gm;
|
|
$TRAILER = $config_opts{$opt_l,"message_footer"};
|
|
- $TRAILER =~ s/\001/\n/g;
|
|
+ $TRAILER =~ s/\001/\n/gm;
|
|
$VOLUME = $config_opts{$opt_l,"digest_volume"};
|
|
$NUMBER = $config_opts{$opt_l,"digest_issue"};
|
|
$Precedence = $config_opts{$opt_l,"precedence"};
|
|
@@ -406,7 +410,7 @@ $bounce_mailer = "$sendmail_command -f\$
|
|
$from = $V{'FROM'};
|
|
$HEADERS = &config'substitute_values (
|
|
$config_opts{$opt_l,"message_headers"}, $opt_l);
|
|
- $HEADERS =~ s/\001/\n/g;
|
|
+ $HEADERS =~ s/\001/\n/gm;
|
|
}
|
|
} # list is defined
|
|
} else { # not using -C
|
|
@@ -441,13 +445,13 @@ $bounce_mailer = "$sendmail_command -fma
|
|
&abort("$program_name: can't get lock '$lockfile'\n");
|
|
$lock_set = 1;
|
|
|
|
- open(header,$V{'HEADER'}) || &abort("$V{'HEADER'}: $!\n");
|
|
- $HEADER = join("",<header>);
|
|
- close(header);
|
|
-
|
|
- open(trailer,$V{'TRAILER'}) || &abort("$V{'TRAILER'}: $!\n");
|
|
- $TRAILER = join("",<trailer>);
|
|
- close(trailer);
|
|
+ open(HEADER,$V{'HEADER'}) || &abort("$V{'HEADER'}: $!\n");
|
|
+ $HEADER = join("",<HEADER>);
|
|
+ close(HEADER);
|
|
+
|
|
+ open(TRAILER,$V{'TRAILER'}) || &abort("$V{'TRAILER'}: $!\n");
|
|
+ $TRAILER = join("",<TRAILER>);
|
|
+ close(TRAILER);
|
|
|
|
open(VOL_FILE,$V{'VOL_FILE'}) || &abort("$V{'VOL_FILE'}: $!\n");
|
|
$VOLUME = join("",<VOL_FILE>);
|