From: Gerfried Fuchs Date: Wed, 17 Feb 2010 19:54:44 +0000 (+0100) Subject: Imported Upstream version 2.8 X-Git-Tag: upstream/2.8^0 X-Git-Url: https://git.deb.at/w?a=commitdiff_plain;h=b14abd9a9b018a23bfd8b89e8c1d9fd16077dab3;p=pkg%2Ft-prot.git Imported Upstream version 2.8 --- diff --git a/ChangeLog b/ChangeLog index 0efeca9..fab8d70 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2009-12-19 22:18 Jochen Striepe + + * t-prot: Release as v2.8. + +2009-12-18 21:53 Jochen Striepe + + * t-prot, t-prot.1: Update documentation to reflect last change. + Avoid being tripped by endless (or non-existant) headers. + +2009-12-18 13:25 Jochen Striepe + + * t-prot: Change check order and remove duplicated code for + --max-lines. + 2009-08-24 20:32 Jochen Striepe * t-prot: Release as t-prot v2.7. diff --git a/contrib/t-prot-r1.261-gol.diff b/contrib/t-prot-r1.261-gol.diff deleted file mode 100644 index a73a077..0000000 --- a/contrib/t-prot-r1.261-gol.diff +++ /dev/null @@ -1,187 +0,0 @@ ---- t-prot 2009-08-24 22:32:11.000000000 +0200 -+++ t-prot-gol 2009-08-24 22:37:25.000000000 +0200 -@@ -4,7 +4,7 @@ - require 5.006; - use strict; - use Fcntl qw(O_EXCL O_WRONLY O_CREAT); --use Getopt::Mixed qw(nextOption); -+use Getopt::Long qw(:config gnu_getopt no_ignore_case); - use constant VER => '2.7'; - use constant REV => ''; - use constant REL => q$Revision: 1.261 $=~m/(\d+(?:\.\d+)+)/; -@@ -925,83 +925,82 @@ - (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 - -+# temp vals: -+my ($_t1, $_t2, $_t3, $_t4, $_t5, $_t6, $_t7, $_t8, $_t9, $_ta, $_tb) = undef; -+ - # 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 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; } -- elsif ($opt eq 'bigq') { -- if ($val !~ /^(?:(\d+)(?:,(\d+))?)?$/) { help(); } -- $bigqn = $1?$1:30; -- $bigqx = $2?$2:10; -- if ($bigqn<=0 || $bigqx<=0 || $bigqn<=$bigqx) { help(); } -- } -- elsif ($opt eq 'body') { $nohdr = 1; $hdrs = 1; } -- elsif ($opt eq 'c') { $cr = 1; } -- elsif ($opt eq 'check') { -- $check = 1; -- while ($val && $val =~ s/^([^,\s]+)(?:,(\S+))?$/$2/) { -- my $foo = $1; -+if (!Getopt::Long::GetOptions( -+ 'a' => \$ad, -+ 'A=s' => \$ads, -+ 'bigq:s' => \$_t1, -+ 'c' => \$cr, -+ 'check:s' => \$_t9, -+ 'debug|d' => \$sysl, -+ 'diff' => \$diff, -+ 'e' => \$elli, -+ 'ftr-ad' => \$ftr_ad, -+ 'ftr-ml' => \$ftr_ml, -+ 'groupwise' => \$gw, -+ 'help|h' => \$_t2, -+ 'i=s' => \$ifile, -+ 'k' => \$kamm, -+ 'kminl=i' => \$_t3, -+ 'kmaxl=i' => \$_t4, -+ 'kdiff=i' => \$_t5, -+ 'L=s' => \$footers, -+ 'l' => \$ml, -+ 'lax-security' => \$lax, -+ 'locale=s' => \$locale, -+ 'max-lines=i' => \$maxlines, -+ 'ms-smart' => \$ms_smart, -+ 'mua|M=s' => \$_t7, -+ 'm' => \$ms, -+ 'o=s' => \$ofile, -+ 'P=s' => \$boun, -+ 'p:s' => \$_t8, -+ 'pgp-short' => \$pgpshort, -+ 'pgp-move' => \$pgpmove, -+ 'pgp-move-vrf' => \$pgpmovevrf, -+ 'r' => \$hdrs, -+ 'S:i' => \$_t6, -+ 's' => \$sig, -+ 'sigsmax:i' => \$_ta, -+ 'spass' => \$spass, -+ 't' => \$trad, -+ 'version|v' => \$_tb, -+ 'w' => \$trsp -+ )) { -+ help(); -+} - -- if ($foo =~ /^ratio=(0?\.\d+)$/) { -- $check_ratio = $1?$1:1; -- } -- } -+# clean up temp vals: -+if (defined $_t1) { -+ if ($_t1 !~ /^(?:(\d+)(?:,(\d+))?)?$/) { help(); } -+ $bigqn = $1?$1:30; -+ $bigqx = $2?$2:10; -+ if ($bigqn<=0 || $bigqx<=0 || $bigqn<=$bigqx) { help(); } -+} -+if (defined $_t2) { help(); } -+if (defined $_t3) { $kminl = $_t3; $kamm = 1; } -+if (defined $_t4) { $kmaxl = $_t4; $kamm = 1; } -+if (defined $_t5) { $kdiff = $_t5; $kamm = 1; } -+if (defined $_t6) { $lsig = $_t6 ? $_t6 : $maxsig; } -+if (defined $_t7) { -+ $mua = lc($_t7); -+ # mutt still displays the message when ^C'ing pgp verification: -+ if ($mua eq 'mutt') { $SIG{'INT'} = 'sigint_handler'; } -+} -+if (defined $_t8) { $mda = $_t8 ? $_t8 : '1'; } -+if (defined $_t9) { -+ $check = 1; -+ while ($_t9 && $_t9 =~ s/^([^,\s]+)(?:,(\S+))?$/$2/) { -+ my $foo = $1; -+ if ($foo =~ /^ratio=(0?\.\d+)$/) { $check_ratio = $1?$1:1; } - } -- elsif ($opt eq 'd') { $sysl = 1; } -- elsif ($opt eq 'diff') { $diff = 1; } -- 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; } -- elsif ($opt eq 'kmaxl') { $kmaxl = $val; $kamm = 1; } -- elsif ($opt eq 'kdiff') { $kdiff = $val; $kamm = 1; } -- elsif ($opt eq 'L') { $footers = $val; } -- elsif ($opt eq 'l') { $ml = 1; } -- elsif ($opt eq 'lax-security') { $lax = 1; } -- elsif ($opt eq 'locale') { $locale = $val; } -- elsif ($opt eq 'm') { $ms = 1; } -- elsif ($opt eq 'max-lines') { $maxlines = $val; } -- elsif ($opt eq 'ms-smart') { $ms_smart = 1; $ms = 1; } -- elsif ($opt eq 'M') { -- $mua = lc($val); -- -- if ($mua eq 'mutt') { -- # mutt still displays the message when ^C'ing pgp verification: -- $SIG{'INT'} = 'sigint_handler'; -- } -- } -- elsif ($opt eq 'o') { $ofile = $val; } -- elsif ($opt eq 'P') { $boun = $val; } -- elsif ($opt eq 'p') { $mda = $val ? $val : '1'; } -- elsif ($opt eq 'pgp-short') { $pgpshort = 1; } -- elsif ($opt eq 'pgp-move') { $pgpmove = 1; } -- elsif ($opt eq 'pgp-move-vrf') { $pgpmovevrf = 1; } -- elsif ($opt eq 'r') { $hdrs = 1; } -- elsif ($opt eq 'S') { $lsig = $val ? $val : $maxsig; } -- elsif ($opt eq 's') { $sig = 1; } -- elsif ($opt eq 'sigsmax') { $sign = $val ? $val : undef; } -- elsif ($opt eq 'spass') { $spass = 1; } -- elsif ($opt eq 't') { $trad = 1; } -- elsif ($opt eq 'v') { version(); } -- elsif ($opt eq 'w') { $trsp = 1; } -- else { help(); } - } --Getopt::Mixed::cleanup(); --if (($ml && $footers eq '')|| # no -l without -L -- ($ad && $ads eq '')|| # no -a without -A -- ($nohdr && $pgpshort)|| # --body and --pgp-short are like oil and water -- ($ifile eq '')|| # no empty -i -- ($ofile eq '')) # no empty -o --{ help(); } -- -+if (defined $_ta) { $sign = $_ta ? $_ta : undef; } -+if (defined $_tb) { version(); } -+if ($ms_smart) { $ms = 1; } - - if ($mua eq 'mutt') { - if (defined $locale && $locale ne '' && $locale ne 'C' && $locale ne 'POSIX') { -@@ -1063,11 +1062,15 @@ - m/^([^%]*)/; - } - } -- --} --else { -- if ($ms_smart || $pgpshort || $pgpmove || $pgpmovevrf) { help(); } - } -+elsif ($ms_smart || $pgpshort || $pgpmove || $pgpmovevrf) { help(); } -+ -+if (($ml && $footers eq '')|| # no -l without -L -+ ($ad && $ads eq '')|| # no -a without -A -+ ($nohdr && $pgpshort)|| # --body and --pgp-short are like oil and water -+ ($ifile eq '')|| # no empty -i -+ ($ofile eq '')) # no empty -o -+{ help(); } - - - # Read message: diff --git a/contrib/t-prot-r1.264-gol.diff b/contrib/t-prot-r1.264-gol.diff new file mode 100644 index 0000000..a3a0e74 --- /dev/null +++ b/contrib/t-prot-r1.264-gol.diff @@ -0,0 +1,187 @@ +--- t-prot 2009-12-19 23:22:08.000000000 +0100 ++++ t-prot-gol 2009-12-19 23:22:13.000000000 +0100 +@@ -4,7 +4,7 @@ + require 5.006; + use strict; + use Fcntl qw(O_EXCL O_WRONLY O_CREAT); +-use Getopt::Mixed qw(nextOption); ++use Getopt::Long qw(:config gnu_getopt no_ignore_case); + use constant VER => '2.8'; + use constant REV => ''; + use constant REL => q$Revision: 1.264 $=~m/(\d+(?:\.\d+)+)/; +@@ -920,83 +920,82 @@ + (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 + ++# temp vals: ++my ($_t1, $_t2, $_t3, $_t4, $_t5, $_t6, $_t7, $_t8, $_t9, $_ta, $_tb) = undef; ++ + # 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 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; } +- elsif ($opt eq 'bigq') { +- if ($val !~ /^(?:(\d+)(?:,(\d+))?)?$/) { help(); } +- $bigqn = $1?$1:30; +- $bigqx = $2?$2:10; +- if ($bigqn<=0 || $bigqx<=0 || $bigqn<=$bigqx) { help(); } +- } +- elsif ($opt eq 'body') { $nohdr = 1; $hdrs = 1; } +- elsif ($opt eq 'c') { $cr = 1; } +- elsif ($opt eq 'check') { +- $check = 1; +- while ($val && $val =~ s/^([^,\s]+)(?:,(\S+))?$/$2/) { +- my $foo = $1; ++if (!Getopt::Long::GetOptions( ++ 'a' => \$ad, ++ 'A=s' => \$ads, ++ 'bigq:s' => \$_t1, ++ 'c' => \$cr, ++ 'check:s' => \$_t9, ++ 'debug|d' => \$sysl, ++ 'diff' => \$diff, ++ 'e' => \$elli, ++ 'ftr-ad' => \$ftr_ad, ++ 'ftr-ml' => \$ftr_ml, ++ 'groupwise' => \$gw, ++ 'help|h' => \$_t2, ++ 'i=s' => \$ifile, ++ 'k' => \$kamm, ++ 'kminl=i' => \$_t3, ++ 'kmaxl=i' => \$_t4, ++ 'kdiff=i' => \$_t5, ++ 'L=s' => \$footers, ++ 'l' => \$ml, ++ 'lax-security' => \$lax, ++ 'locale=s' => \$locale, ++ 'max-lines=i' => \$maxlines, ++ 'ms-smart' => \$ms_smart, ++ 'mua|M=s' => \$_t7, ++ 'm' => \$ms, ++ 'o=s' => \$ofile, ++ 'P=s' => \$boun, ++ 'p:s' => \$_t8, ++ 'pgp-short' => \$pgpshort, ++ 'pgp-move' => \$pgpmove, ++ 'pgp-move-vrf' => \$pgpmovevrf, ++ 'r' => \$hdrs, ++ 'S:i' => \$_t6, ++ 's' => \$sig, ++ 'sigsmax:i' => \$_ta, ++ 'spass' => \$spass, ++ 't' => \$trad, ++ 'version|v' => \$_tb, ++ 'w' => \$trsp ++ )) { ++ help(); ++} + +- if ($foo =~ /^ratio=(0?\.\d+)$/) { +- $check_ratio = $1?$1:1; +- } +- } ++# clean up temp vals: ++if (defined $_t1) { ++ if ($_t1 !~ /^(?:(\d+)(?:,(\d+))?)?$/) { help(); } ++ $bigqn = $1?$1:30; ++ $bigqx = $2?$2:10; ++ if ($bigqn<=0 || $bigqx<=0 || $bigqn<=$bigqx) { help(); } ++} ++if (defined $_t2) { help(); } ++if (defined $_t3) { $kminl = $_t3; $kamm = 1; } ++if (defined $_t4) { $kmaxl = $_t4; $kamm = 1; } ++if (defined $_t5) { $kdiff = $_t5; $kamm = 1; } ++if (defined $_t6) { $lsig = $_t6 ? $_t6 : $maxsig; } ++if (defined $_t7) { ++ $mua = lc($_t7); ++ # mutt still displays the message when ^C'ing pgp verification: ++ if ($mua eq 'mutt') { $SIG{'INT'} = 'sigint_handler'; } ++} ++if (defined $_t8) { $mda = $_t8 ? $_t8 : '1'; } ++if (defined $_t9) { ++ $check = 1; ++ while ($_t9 && $_t9 =~ s/^([^,\s]+)(?:,(\S+))?$/$2/) { ++ my $foo = $1; ++ if ($foo =~ /^ratio=(0?\.\d+)$/) { $check_ratio = $1?$1:1; } + } +- elsif ($opt eq 'd') { $sysl = 1; } +- elsif ($opt eq 'diff') { $diff = 1; } +- 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; } +- elsif ($opt eq 'kmaxl') { $kmaxl = $val; $kamm = 1; } +- elsif ($opt eq 'kdiff') { $kdiff = $val; $kamm = 1; } +- elsif ($opt eq 'L') { $footers = $val; } +- elsif ($opt eq 'l') { $ml = 1; } +- elsif ($opt eq 'lax-security') { $lax = 1; } +- elsif ($opt eq 'locale') { $locale = $val; } +- elsif ($opt eq 'm') { $ms = 1; } +- elsif ($opt eq 'max-lines') { $maxlines = $val; } +- elsif ($opt eq 'ms-smart') { $ms_smart = 1; $ms = 1; } +- elsif ($opt eq 'M') { +- $mua = lc($val); +- +- if ($mua eq 'mutt') { +- # mutt still displays the message when ^C'ing pgp verification: +- $SIG{'INT'} = 'sigint_handler'; +- } +- } +- elsif ($opt eq 'o') { $ofile = $val; } +- elsif ($opt eq 'P') { $boun = $val; } +- elsif ($opt eq 'p') { $mda = $val ? $val : '1'; } +- elsif ($opt eq 'pgp-short') { $pgpshort = 1; } +- elsif ($opt eq 'pgp-move') { $pgpmove = 1; } +- elsif ($opt eq 'pgp-move-vrf') { $pgpmovevrf = 1; } +- elsif ($opt eq 'r') { $hdrs = 1; } +- elsif ($opt eq 'S') { $lsig = $val ? $val : $maxsig; } +- elsif ($opt eq 's') { $sig = 1; } +- elsif ($opt eq 'sigsmax') { $sign = $val ? $val : undef; } +- elsif ($opt eq 'spass') { $spass = 1; } +- elsif ($opt eq 't') { $trad = 1; } +- elsif ($opt eq 'v') { version(); } +- elsif ($opt eq 'w') { $trsp = 1; } +- else { help(); } + } +-Getopt::Mixed::cleanup(); +-if (($ml && $footers eq '')|| # no -l without -L +- ($ad && $ads eq '')|| # no -a without -A +- ($nohdr && $pgpshort)|| # --body and --pgp-short are like oil and water +- ($ifile eq '')|| # no empty -i +- ($ofile eq '')) # no empty -o +-{ help(); } +- ++if (defined $_ta) { $sign = $_ta ? $_ta : undef; } ++if (defined $_tb) { version(); } ++if ($ms_smart) { $ms = 1; } + + if ($mua eq 'mutt') { + if (defined $locale && $locale ne '' && $locale ne 'C' && $locale ne 'POSIX') { +@@ -1058,11 +1057,15 @@ + m/^([^%]*)/; + } + } +- +-} +-else { +- if ($ms_smart || $pgpshort || $pgpmove || $pgpmovevrf) { help(); } + } ++elsif ($ms_smart || $pgpshort || $pgpmove || $pgpmovevrf) { help(); } ++ ++if (($ml && $footers eq '')|| # no -l without -L ++ ($ad && $ads eq '')|| # no -a without -A ++ ($nohdr && $pgpshort)|| # --body and --pgp-short are like oil and water ++ ($ifile eq '')|| # no empty -i ++ ($ofile eq '')) # no empty -o ++{ help(); } + + + # Read message: diff --git a/t-prot b/t-prot index bf3a0a1..c4b06b2 100755 --- a/t-prot +++ b/t-prot @@ -1,13 +1,13 @@ #!/usr/bin/perl -w -# $Id: t-prot,v 1.261 2009/08/24 20:32:11 jochen Exp $ +# $Id: t-prot,v 1.264 2009/12/19 22:18:47 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.7'; +use constant VER => '2.8'; use constant REV => ''; -use constant REL => q$Revision: 1.261 $=~m/(\d+(?:\.\d+)+)/; +use constant REL => q$Revision: 1.264 $=~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'; @@ -442,23 +442,18 @@ sub process_msg { my (@ads, @hdr, @bo1, @bo2, @ftr, @sig, @vrb, @att) = ((), (), (), (), (), (), (), (), ()); - # First, remove and store lines we might need later... + # 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) { for ($x=0; $x<$#$lines; $x++) { if (@$lines[$x] =~ /^$/) { last; }; } - - # check body length and stop processing silently if msg is too long: - if ((defined $maxlines) && (@$lines-$x > $maxlines)) { - return; - } - @hdr = @$lines[0..$x]; splice(@$lines, 0, $x+1); } - elsif ((defined $maxlines) && (@$lines > $maxlines)) { - # check body length and stop processing silently if msg is too long: - return; - } # remember the original body lines count my $linecount = scalar(@$lines); diff --git a/t-prot.1 b/t-prot.1 index a503ce0..468ed0a 100644 --- a/t-prot.1 +++ b/t-prot.1 @@ -1,4 +1,4 @@ -.\" $Id: t-prot.1,v 1.134 2009/08/24 01:44:27 jochen Exp $ +.\" $Id: t-prot.1,v 1.135 2009/12/18 21:53:17 jochen Exp $ .\" .TH T-PROT "1" "August 2009" "T-PROT" .SH NAME @@ -306,8 +306,9 @@ Requires .BR "\-m" . .TP .BR "\-\-max\-lines" =x -Maximum number of lines a message body may count. If the body is longer -than x lines, the message will not be processed but printed unmodified. +Maximum number of lines a message may count (with headers). If the message +is longer than x lines, the message will not be processed but printed +unmodified. .TP .BR "\-o" =FILE "output file":