X-Git-Url: https://git.deb.at/w?p=pkg%2Ft-prot.git;a=blobdiff_plain;f=t-prot;fp=t-prot;hb=8dcc3a169e9d9c0186282e0ff4f002262e468ff4;hpb=d291c240515f15a9bb267aa00a60cd4b6e2a4634 diff --git a/t-prot b/t-prot index 29d23e1..f461425 100755 --- a/t-prot +++ b/t-prot @@ -1,13 +1,13 @@ #!/usr/bin/perl -w -# $Id: t-prot,v 1.312 2010/10/31 11:18:15 jochen Exp $ +# $Id: t-prot,v 1.319 2013/10/29 11:39:43 jochen Exp $ require 5.006; use strict; use Fcntl qw(O_EXCL O_WRONLY O_CREAT); use Getopt::Long qw(:config gnu_getopt no_ignore_case); -use constant VER => '2.101'; +use constant VER => '3.0'; use constant REV => ''; -use constant REL => q$Revision: 1.312 $=~m/(\d+(?:\.\d+)+)/; +use constant REL => q$Revision: 1.319 $=~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'; @@ -33,6 +33,7 @@ use vars qw( $mutt_attachment $mutt_contenttype $mutt_pgpsigned $mutt_beginsigned $mutt_pgpclearsigned $mutt_pgpclearsigstart $mutt_pgpencrypted $mutt_pgpoutstart $mutt_pgpoutend $mutt_pgpcryptend $mutt_pgpcryptstart + $mutt_ssloutstart $mutt_ssloutend ); @@ -74,6 +75,8 @@ $mutt_pgpclearsigned = '[-- END PGP SIGNED MESSAGE --]'; $mutt_pgpencrypted = '[-- End of PGP/MIME encrypted data --]'; $mutt_pgpoutstart = '[-- PGP output follows (current time:'; $mutt_pgpoutend = '[-- End of PGP output --]'; +$mutt_ssloutstart = '[-- OpenSSL output follows'; +$mutt_ssloutend = '[-- End of OpenSSL output --]'; # set the defaults to the C locale $gpg_WARNING = 'WARNING: '; @@ -412,8 +415,8 @@ sub pgp { for (my $x=0; $x=scalar(@$lines)) { exit(EX_DATAERR); } - if ($bar =~ m!^text/plain!) { + if ($bar =~ m!^text/plain!i) { my $z; for ($z=1; $x+$z<@$lines; $z++) { if (index($$lines[$x+$z], '--'.$foo)==0) { @@ -605,20 +607,41 @@ sub process_msg { # Protect verbatims: $verb = 0; for ($x=0; $x$2 || $x+$2-$1+1>$#$lines) { next; } $vrb[$x] = 1; for (my $i=0; $i<$2-$1+1; $i++) { $vrb[++$x] = 1; } - } elsif ($diff && $$lines[$x] =~ /^([0-9]+),([0-9]+)c([0-9]+),([0-9]+)$/) { + } elsif ($diff && + $$lines[$x] =~ /^([0-9]+),([0-9]+)c([0-9]+),([0-9]+)$/o) { if ($1!=$3 || $1>$2 || $3>$4 || $x+$2-$1+$4-$3+3>$#$lines) { next; } $vrb[$x] = 1; for (my $i=0; $i<$2-$1+$4-$3+3; $i++) { $vrb[++$x] = 1; } + } elsif ($diff && + $$lines[$x] =~ /^--- ./o && + $$lines[$x+1] =~ /^\+\+\+ ./o && + $$lines[$x+2] =~ /^@@ -[0-9]+,([0-9]+) \+[0-9]+,([0-9]+) @@/o + ) { + # Detect and protect unified diffs. + # Proceed only as far as the diff should go. + my $minus = $1; + my $plus = $2; + $vrb[$x++] = 1; + $vrb[$x++] = 1; + $vrb[$x++] = 1; + for (my $cminus = 0, my $cplus = 0; + $cminus<=$minus && $cplus<=$plus && $x<$#$lines; + $x++) { + $vrb[$x] = 1; + if ($$lines[$x] !~ /^\+/) { $cminus++; }; + if ($$lines[$x] !~ /^-/) { $cplus++; }; + } + $x-=1; } else { $vrb[$x] = $verb; } } @@ -659,7 +682,7 @@ sub process_msg { (?:\e[^\a]+\a)? (?:\Q$mutt_contenttype\E) (?:text/plain|application/pgp) - !ox))) || + !oxi))) || ($$lines[$x] =~ /^ (?:\e[^\a]+\a)? (?:\Q$mutt_pgpsigned\E | @@ -793,18 +816,17 @@ sub process_msg { # bloat this array if you want more internationalization: my @tofu = ('Original Message', 'Original-Nachricht', - 'Ursprüngliche Nachricht', - 'Ursprüngliche Nachricht', - 'Ursprungliche Nachricht', + 'Urspr.ngliche Nachricht', 'Mensagem original', 'Ursprungligt meddelande', 'Oorspronkelijk bericht', 'Message d\'origine', + 'Origin message', 'Forwarded message', 'Weitergeleitete Nachricht / Forwarded Message', '[A-Za-z ]+ <(\w[\w.+-]*@(?:[\w.+-]+\.)+[A-Za-z]{2,})> schrieb:'); my $k = 0; # any text above? - my $tmp = 0; # flagged if inside PGP output + my $tmp = 0; # flagged if inside PGP or SSL output DONE: for ($x=0; $x