]> git.deb.at Git - pkg/t-prot.git/blobdiff - t-prot
Imported Upstream version 2.11
[pkg/t-prot.git] / t-prot
diff --git a/t-prot b/t-prot
index c4b06b2b358a8fd035e52197dee813ca71054197..441cd90e074baca84affc7e7c4746136c4a121ff 100755 (executable)
--- a/t-prot
+++ b/t-prot
@@ -1,13 +1,13 @@
 #!/usr/bin/perl -w
-# $Id: t-prot,v 1.264 2009/12/19 22:18:47 jochen Exp $
+# $Id: t-prot,v 1.269 2010/01/05 12:05:03 jochen Exp $
 
 require 5.006;
 use strict;
 use Fcntl qw(O_EXCL O_WRONLY O_CREAT);
 use Getopt::Mixed qw(nextOption);
-use constant VER            => '2.8';
+use constant VER            => '2.11';
 use constant REV            => '';
-use constant REL            => q$Revision: 1.264 $=~m/(\d+(?:\.\d+)+)/;
+use constant REL            => q$Revision: 1.269 $=~m/(\d+(?:\.\d+)+)/;
 # MTA expecting mail on STDIN
 # (you might have to adjust this if using a different MTA)
 use constant SENDMAIL       => '/usr/sbin/sendmail -oi';
@@ -54,7 +54,7 @@ $ftr_ad         = undef;  # too hard on performance to be default
 $ftr_ml         = undef;  # too hard on performance to be default
 $ofile          = '-';    # use STDOUT if nothing is specified
 $spass_prefix   = 'SPAM: ';
-$check_ratio    = .75;    # 3/4 tofu is enough not to accept the message
+$check_ratio    = 0;      # off by default
 $msg_quote      = "Blocked by $0: This message has been rejected because of a full quote. Please see http://learn.to/quote/ and http://www.escape.de/users/tolot/mutt/ for more info. Have a nice day!\n";
 $msg_ratio      = "Blocked by $0: This message has been rejected because of excessive quoting. Please see http://learn.to/quote/ and http://www.escape.de/users/tolot/mutt/ for more info. Have a nice day!\n";
 # end of user adjusted vals
@@ -442,11 +442,6 @@ sub process_msg {
     my (@ads, @hdr, @bo1, @bo2, @ftr, @sig, @vrb, @att) = 
         ((), (), (), (), (), (), (), (), ());
 
-    # First, check msg length and stop processing if msg is too long:
-    if ((defined $maxlines) && (@$lines > $maxlines)) {
-        return;
-    }
-
     # Remove and store lines we might need later...
     # Remove headers:
     if (!$nohdr) {
@@ -554,9 +549,8 @@ sub process_msg {
                 if (index($$lines[$x], $indent)==0) { $y++; }
             }
         }
-        $y = $y/$z;
 
-        if ($y>=$check_ratio) {
+        if ($y/$z>=$check_ratio) {
             print $msg_ratio;
             exit EX_UNAVAILABLE;
         }
@@ -939,11 +933,12 @@ while (my ($opt, $val, $pretty) = nextOption()) {
     elsif ($opt eq 'c')     { $cr = 1; }
     elsif ($opt eq 'check') {
         $check = 1;
-        while ($val && $val =~ s/^([^,\s]+)(?:,(\S+))?$/$2/) {
+        while ($val && $val =~ /^([^,\s]+)(?:,(\S+))?$/) {
             my $foo = $1;
+            $val = $2;
 
-            if ($foo =~ /^ratio=(0?\.\d+)$/) {
-                $check_ratio = $1?$1:1;
+            if ($foo =~ /^ratio(?:=(0?\.\d+))?$/) {
+                $check_ratio = $1?$1:0.75;
             }
         }
     }
@@ -1071,6 +1066,14 @@ if (!open(IN, $ifile))
 my @message = <IN>;
 close IN;
 
+# First, check msg length and stop processing if msg is too long:
+if ((defined $maxlines) && (@message > $maxlines)) {
+    if ($ofile ne 'NONE') {
+        write_msg(($mda?'|'.SENDMAIL." $mda":">$ofile"), \@message);
+    }
+    exit(EX_DATAERR);
+}
+
 # this should be self-explanatory:
 process_msg(\@message);