X-Git-Url: https://git.deb.at/w?a=blobdiff_plain;f=t-prot;h=bf3a0a199a20cb4d18beb5089fc1ce766665ce13;hb=137a894c83a7b3587044c2048418753c47f18d53;hp=5141512af69382c96f70b10560b16ed89b34ce51;hpb=42c403b15ef2b758888431308c61b467310d9f16;p=pkg%2Ft-prot.git diff --git a/t-prot b/t-prot index 5141512..bf3a0a1 100755 --- a/t-prot +++ b/t-prot @@ -1,13 +1,13 @@ #!/usr/bin/perl -w -# $Id: t-prot,v 1.253 2007/03/09 15:06:04 jochen Exp $ +# $Id: t-prot,v 1.261 2009/08/24 20:32:11 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.4'; +use constant VER => '2.7'; use constant REV => ''; -use constant REL => q$Revision: 1.253 $=~m/(\d+(?:\.\d+)+)/; +use constant REL => q$Revision: 1.261 $=~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'; @@ -23,7 +23,7 @@ use constant EX_BOUNCE => EX_UNAVAILABLE; use vars qw( $ad $ads $bigqn $bigqx $boun $check $check_ratio $cr $diff $elli $footers $ftr_ad $ftr_ml $hdrs $indent $kamm $kdiff $kminl $kmaxl - $lax $lsig $maxsig $maxlines $mda $ml $ms $ms_smart $msg_quote + $lax $lsig $maxsig $maxlines $mda $ml $gw $ms $ms_smart $msg_quote $msg_ratio $mua $nohdr $ofile $pgpshort $pgpmove $pgpmovevrf $sig $sigint $sign $spass $spass_prefix $sysl $trad $trsp @@ -101,13 +101,14 @@ sub help { -e force ellipsis for excessive punctuation --ftr-ad enable aggressive ad footer matching; requires -A --ftr-ml enable aggressive mailing list footer matching; req. -L + --groupwise delete Novell Groupwise style TOFU -h, --help show this short help and exit -i=INFILE file to be read; '-' for STDIN (default) -k try to fix \"Kammquotes\" --kminl=n min. line length for wrapped line; requires -k --kmaxl=n max. line length for wrapped line; requires -k --kdiff=n max. length difference between wrapped lines; req. -k - -L=DIRECTORY mailling list footer directory, treat mailing list + -L=DIRECTORY mailing list footer directory, treat mailing list footers as signature -l delete mailing list footer; requires -L --lax-security use unsafe writing method; USE ON YOUR OWN RISK! @@ -177,12 +178,12 @@ sub remove_footers { for (my $z=0; $z<=$#l; $z++) { chomp($l[$z]); } if (defined $V) { - WIPE: for (my $z=scalar(@$L)-scalar(@l); $z>=0; $z--) - { + WIPE: for (my $z=scalar(@$L)-scalar(@l); $z>=0; $z--) { if (scalar(@l)+$z<=scalar(@$L)) { my $y = 0; for(my $x=1; $x<=scalar(@l); $x++) { - if (index($$L[scalar(@$L)-$x-$z], $l[scalar(@l)-$x])!=0) { + if (index($$L[scalar(@$L)-$x-$z], + $l[scalar(@l)-$x])!=0) { $y = 1; } } @@ -254,11 +255,12 @@ sub decomb { (index($$L[$x+1], $indent)!=0) && ($$L[$x+1] !~ /^$/) && ($$L[$x+1] !~ /^[\s^]/) && - ($$L[$x] !~ /-$/) && + ($$L[$x] !~ /-$/) && ($$L[$x+1] !~ /^\Q[...]\E\s*$/) && ($mua ne 'mutt' || $$L[$x+1] !~ /^(?:\e[^\a]+\a)?\[-- /) && (length($$L[$x])+index($$L[$x+1], ' ')>$max || - (index($$L[$x+1], ' ')<0 && length($$L[$x])+length($$L[$x+1])>$max)) && + (index($$L[$x+1], ' ')<0 && + length($$L[$x])+length($$L[$x+1])>$max)) && (length($$L[$x])+length($$L[$x+1])<$kmaxl) && (length($$L[$x])+length($$L[$x+1])>$kminl) && (length($$L[$x])-length($$L[$x+1])>$kdiff) && @@ -695,12 +697,13 @@ sub process_msg { if ($kamm) { decomb($lines, \@vrb); } # Now care about TOFU. - # One common mispractice is M$ style TOFU: - if ($ms) { + # One common mispractice is M$ and Groupwise style TOFU: + if ($ms||$gw) { # bloat this array if you want more internationalization: my @tofu = ('Original Message', 'Original-Nachricht', 'Ursprüngliche Nachricht', + 'Ursprüngliche Nachricht', 'Ursprungliche Nachricht', 'Mensagem original', 'Ursprungligt meddelande', @@ -714,7 +717,10 @@ sub process_msg { DONE: for ($x=0; $x>>[^\<]+<[^\>]+> \d\d?\/\d\d?\/\d\d? \d\d?:\d\d [AP]M >>>/ || + $$lines[$x] =~ /^>>> On [A-Z][a-z][a-z]?, [A-Z][a-z][a-z]? \d\d?, \d\d\d\d at [ \d]\d:\d\d [AP]M, in message/))) { $x++; $trad = 0; $bigqn = 0; @@ -914,16 +920,17 @@ my $locale = $ENV{'LC_ALL'}?$ENV{'LC_ALL'}: # command line switches ($ad, $ads, $bigqn, $bigqx, $check, $cr, $sysl, $diff, $elli, $footers, $lax, - $ml, $ms, $ms_smart, $mda, $mua, $hdrs, $kamm, $lsig, $nohdr, $sig, $sigint, - $spass, $trad, $trsp) = + $ml, $gw, $ms, $ms_smart, $mda, $mua, $hdrs, $kamm, $lsig, $nohdr, $sig, + $sigint, $spass, $trad, $trsp) = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); my $ifile = '-'; # use STDIN if nothing specified # get command line params: Getopt::Mixed::init('a A=s c d e h i=s k L=s l m M=s o=s P=s p:s r S:i'. - ' s t v w bigq:s body check:s debug>d diff ftr-ad ftr-ml help>h'. - ' kminl=i kmaxl=i kdiff=i lax-security locale=s max-lines=i ms-smart'. - ' mua>M pgp-short pgp-move pgp-move-vrf sigsmax:i spass version>v'); + ' s t v w bigq:s body check:s debug>d diff ftr-ad ftr-ml groupwise'. + ' help>h kminl=i kmaxl=i kdiff=i lax-security locale=s max-lines=i'. + ' ms-smart mua>M pgp-short pgp-move pgp-move-vrf sigsmax:i spass'. + ' version>v'); while (my ($opt, $val, $pretty) = nextOption()) { if ($opt eq 'a') { $ad = 1; } elsif ($opt eq 'A') { $ads = $val; } @@ -950,6 +957,7 @@ while (my ($opt, $val, $pretty) = nextOption()) { elsif ($opt eq 'e') { $elli = 1; } elsif ($opt eq 'ftr-ad') { $ftr_ad = 1; $ad = 1; } elsif ($opt eq 'ftr-ml') { $ftr_ml = 1; $ml = 1; } + elsif ($opt eq 'groupwise') { $gw = 1; } elsif ($opt eq 'i') { $ifile = $val; } elsif ($opt eq 'k') { $kamm = 1; } elsif ($opt eq 'kminl') { $kminl = $val; $kamm = 1; }