diff options
author | Martin Blapp <mbr@FreeBSD.org> | 2004-10-12 09:54:23 +0000 |
---|---|---|
committer | Martin Blapp <mbr@FreeBSD.org> | 2004-10-12 09:54:23 +0000 |
commit | ab00c6329ed3fb7a490df2fbc99f3af8f6e9d20e (patch) | |
tree | 35be988a1bf4282476ab3a0b96acffcb801225e7 /mail | |
parent | 89e9beac74c82e38fd07db9ea30a82d821240c91 (diff) | |
download | ports-ab00c6329ed3fb7a490df2fbc99f3af8f6e9d20e.tar.gz ports-ab00c6329ed3fb7a490df2fbc99f3af8f6e9d20e.zip |
Notes
Diffstat (limited to 'mail')
-rw-r--r-- | mail/p5-MIME-Tools/Makefile | 5 | ||||
-rw-r--r-- | mail/p5-MIME-Tools/distinfo | 4 | ||||
-rw-r--r-- | mail/p5-MIME-Tools/files/patch-7or8bit.diff | 20 | ||||
-rw-r--r-- | mail/p5-MIME-Tools/files/patch-Benchmark | 88 | ||||
-rw-r--r-- | mail/p5-MIME-Tools/files/patch-Decoder-qpdecode-pdf | 41 | ||||
-rw-r--r-- | mail/p5-MIME-Tools/files/patch-Decoder-qpencode | 128 | ||||
-rw-r--r-- | mail/p5-MIME-Tools/files/patch-Filer.pm-whitespace | 23 | ||||
-rw-r--r-- | mail/p5-MIME-Tools/files/patch-ParamVal.pm | 114 | ||||
-rw-r--r-- | mail/p5-MIME-Tools/files/patch-Parser-BinHex | 260 | ||||
-rw-r--r-- | mail/p5-MIME-Tools/files/patch-Parser-MaxParts | 81 | ||||
-rw-r--r-- | mail/p5-MIME-Tools/files/patch-Parser.pm | 75 | ||||
-rw-r--r-- | mail/p5-MIME-Tools/files/patch-ParserUndef | 43 | ||||
-rw-r--r-- | mail/p5-MIME-Tools/files/patch-Words.pm | 11 |
13 files changed, 3 insertions, 890 deletions
diff --git a/mail/p5-MIME-Tools/Makefile b/mail/p5-MIME-Tools/Makefile index 40b8d9a019e2..1005cdeb5c5c 100644 --- a/mail/p5-MIME-Tools/Makefile +++ b/mail/p5-MIME-Tools/Makefile @@ -6,9 +6,7 @@ # PORTNAME= p5-MIME-Tools -PORTVERSION= 5.411a -PORTREVISION= 6 -PORTEPOCH= 2 +PORTVERSION= 5.414 CATEGORIES= mail perl5 MASTER_SITES= ${MASTER_SITE_PERL_CPAN} MASTER_SITE_SUBDIR= MIME @@ -24,7 +22,6 @@ BUILD_DEPENDS= ${SITE_PERL}/Mail/Header.pm:${PORTSDIR}/mail/p5-Mail-Tools \ RUN_DEPENDS= ${BUILD_DEPENDS} PERL_CONFIGURE= YES -WRKSRC= ${WRKDIR}/MIME-tools-5.411 MAN3= MIME::Body.3 \ MIME::Decoder.3 \ diff --git a/mail/p5-MIME-Tools/distinfo b/mail/p5-MIME-Tools/distinfo index 37c853b6dc89..62d11a28cf2f 100644 --- a/mail/p5-MIME-Tools/distinfo +++ b/mail/p5-MIME-Tools/distinfo @@ -1,2 +1,2 @@ -MD5 (MIME-tools-5.411a.tar.gz) = e7cb1f8e146171103640e3a5516afb1a -SIZE (MIME-tools-5.411a.tar.gz) = 467432 +MD5 (MIME-tools-5.414.tar.gz) = 6e1f4e669407a19b480093a60c66745b +SIZE (MIME-tools-5.414.tar.gz) = 350594 diff --git a/mail/p5-MIME-Tools/files/patch-7or8bit.diff b/mail/p5-MIME-Tools/files/patch-7or8bit.diff deleted file mode 100644 index 5e61d272e03c..000000000000 --- a/mail/p5-MIME-Tools/files/patch-7or8bit.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- lib/MIME/Head.pm.orig Sat Nov 4 20:54:46 2000 -+++ lib/MIME/Head.pm Wed Aug 25 11:12:25 2004 -@@ -685,11 +685,16 @@ - This is the default value -- that is, "Content-Transfer-Encoding: 7BIT" - is assumed if the Content-Transfer-Encoding header field is not present. - -+I do one other form of fixup: "7_bit", "7-bit", and "7 bit" are -+corrected to "7bit"; likewise for "8bit". -+ - =cut - - sub mime_encoding { - my $self = shift; -- lc($self->mime_attr('content-transfer-encoding') || '7bit'); -+ my $enc = lc($self->mime_attr('content-transfer-encoding') || '7bit'); -+ $enc =~ s{^([78])[ _-]bit\Z}{$1bit}; -+ $enc; - } - - #------------------------------ diff --git a/mail/p5-MIME-Tools/files/patch-Benchmark b/mail/p5-MIME-Tools/files/patch-Benchmark deleted file mode 100644 index d01ac4a4add7..000000000000 --- a/mail/p5-MIME-Tools/files/patch-Benchmark +++ /dev/null @@ -1,88 +0,0 @@ ---- lib/MIME/Parser.pm.orig Wed Aug 25 11:19:44 2004 -+++ lib/MIME/Parser.pm Wed Aug 25 11:23:39 2004 -@@ -582,10 +582,7 @@ - my ($self, $in, $rdr, $out) = @_; - - ### Parse: -- my $bm = benchmark { -- $rdr->read_chunk($in, $out); -- }; -- $self->debug("t bound: $bm"); -+ $rdr->read_chunk($in, $out); - 1; - } - -@@ -828,11 +825,8 @@ - - ### Decode and save the body (using the decoder): - my $DECODED = $body->open("w") || die "$ME: body not opened: $!\n"; -- my $bm = benchmark { -- eval { $decoder->decode($ENCODED, $DECODED); }; -- $@ and $self->error($@); -- }; -- $self->debug("t decode: $bm"); -+ eval { $decoder->decode($ENCODED, $DECODED); }; -+ $@ and $self->error($@); - $DECODED->close; - - ### Success! Remember where we put stuff: -@@ -1134,11 +1128,8 @@ - my $entity; - local $/ = "\n"; ### just to be safe - -- my $bm = benchmark { -- $self->init_parse; -- ($entity) = $self->process_part($in, undef); ### parse! -- }; -- $self->debug("t parse: $bm"); -+ $self->init_parse; -+ ($entity) = $self->process_part($in, undef); ### parse! - - $entity; - } ---- lib/MIME/Tools.pm.orig Wed Aug 25 10:47:32 2004 -+++ lib/MIME/Tools.pm Wed Aug 25 10:50:41 2004 -@@ -24,7 +24,7 @@ - 'config' => [qw(%CONFIG)], - 'msgs' => [qw(usage debug whine error)], - 'msgtypes'=> [qw($M_DEBUG $M_WARNING $M_ERROR)], -- 'utils' => [qw(benchmark catfile shellquote textual_type tmpopen )], -+ 'utils' => [qw(catfile shellquote textual_type tmpopen )], - ); - Exporter::export_ok_tags('config', 'msgs', 'msgtypes', 'utils'); - -@@ -153,26 +153,6 @@ - - #------------------------------ - # --# benchmark CODE --# --# Private benchmarking utility. --# --sub benchmark(&) { -- my ($code) = @_; -- if (1) { -- my $t0 = new Benchmark; -- &$code; -- my $t1 = new Benchmark; -- return timestr(timediff($t1, $t0)); -- } -- else { -- &$code; -- return ""; -- } --} -- --#------------------------------ --# - # catfile DIR, FILE - # - # Directory/file concatenation. -@@ -1394,7 +1374,6 @@ - Newlines in the void - - Started using Benchmark for benchmarking. -- - - =item Version 5.205 (2000/06/06) - diff --git a/mail/p5-MIME-Tools/files/patch-Decoder-qpdecode-pdf b/mail/p5-MIME-Tools/files/patch-Decoder-qpdecode-pdf deleted file mode 100644 index a111e989f194..000000000000 --- a/mail/p5-MIME-Tools/files/patch-Decoder-qpdecode-pdf +++ /dev/null @@ -1,41 +0,0 @@ ---- lib/MIME/Decoder/QuotedPrint.pm.orig Tue Aug 31 17:02:43 2004 -+++ lib/MIME/Decoder/QuotedPrint.pm Tue Aug 31 17:02:38 2004 -@@ -85,9 +85,37 @@ - # - sub decode_it { - my ($self, $in, $out) = @_; -+ my $init = 0; -+ my $badpdf = 0; - - while (defined($_ = $in->getline)) { -- $out->print(decode_qp($_)); -+ # -+ # Dirty hack to fix QP-Encoded PDFs from MS-Outlook. -+ # -+ # Check if we have a PDF file and if it has been encoded -+ # on Windows. Unix encoded files are fine. If we have -+ # one encoded CR after the PDF init string but are missing -+ # an encoded CR before the newline this means the PDF is broken. -+ # -+ if (!$init) { -+ $init = 1; -+ if ($_ =~ /^%PDF-[0-9\.]+=0D/ && $_ !~ /(?!=0D)\n$/) { -+ $badpdf = 1; -+ } -+ } -+ # -+ # Decode everything with decode_qp() except corrupted PDFs. -+ # -+ if ($badpdf) { -+ my $output = $_; -+ $output =~ s/[ \t]+?(\r?\n)/$1/g; -+ $output =~ s/=\r?\n//g; -+ $output =~ s/(^$|[^\r])\n\Z/$1\r\n/; -+ $output =~ s/=([\da-fA-F]{2})/pack("C", hex($1))/ge; -+ $out->print($output); -+ } else { -+ $out->print(decode_qp($_)); -+ } - } - 1; - } diff --git a/mail/p5-MIME-Tools/files/patch-Decoder-qpencode b/mail/p5-MIME-Tools/files/patch-Decoder-qpencode deleted file mode 100644 index d410c8acd2e7..000000000000 --- a/mail/p5-MIME-Tools/files/patch-Decoder-qpencode +++ /dev/null @@ -1,128 +0,0 @@ ---- lib/MIME/Decoder/QuotedPrint.pm.orig Wed Aug 25 11:46:45 2004 -+++ lib/MIME/Decoder/QuotedPrint.pm Wed Aug 25 11:48:27 2004 -@@ -54,7 +54,7 @@ - - use vars qw(@ISA $VERSION); - use MIME::Decoder; --use MIME::QuotedPrint 2.03; -+use MIME::QuotedPrint 3.03; - - @ISA = qw(MIME::Decoder); - -@@ -63,7 +63,7 @@ - - #------------------------------ - # --# encode_qp_really STRING -+# encode_qp_really STRING TEXTUAL_TYPE_FLAG - # - # Encode QP, and then follow guideline 8 from RFC 2049 (thanks to Denis - # N. Antonioli) whereby we make things a little safer for the transport -@@ -71,7 +71,7 @@ - # grow beyond 76 characters! - # - sub encode_qp_really { -- my $enc = encode_qp($_[0]); -+ my $enc = encode_qp(shift, undef, not shift); - if (length($enc) < 74) { - $enc =~ s/^\.$/=2E/g; # force encoding of /^\.$/ - $enc =~ s/^From /=46rom /g; # force encoding of /^From / -@@ -97,10 +97,10 @@ - # encode_it IN, OUT - # - sub encode_it { -- my ($self, $in, $out) = @_; -+ my ($self, $in, $out, $textual_type) = @_; - - while (defined($_ = $in->getline)) { -- $out->print(encode_qp_really($_)); -+ $out->print(encode_qp_really($_, $textual_type)); - } - 1; - } ---- lib/MIME/Decoder.pm.orig Wed Aug 25 11:49:42 2004 -+++ lib/MIME/Decoder.pm Wed Aug 25 11:50:26 2004 -@@ -248,14 +248,14 @@ - =cut - - sub encode { -- my ($self, $in, $out) = @_; -+ my ($self, $in, $out, $textual_type) = @_; - - ### Coerce old-style filehandles to legit objects, and do it! - $in = wraphandle($in); - $out = wraphandle($out); - - ### Invoke back-end method to do the work: -- $self->encode_it($in, $out) || -+ $self->encode_it($in, $out, $self->encoding eq 'quoted-printable' ? ($textual_type) : ()) || - die "$ME: ".$self->encoding." encoding failed\n"; - } - ---- lib/MIME/Entity.pm.orig Wed Aug 25 11:50:54 2004 -+++ lib/MIME/Entity.pm Wed Aug 25 11:51:25 2004 -@@ -1853,7 +1853,7 @@ - - ### Output the body: - my $IO = $self->open("r") || die "open body: $!"; -- $decoder->encode($IO, $out) || return error "encoding failed"; -+ $decoder->encode($IO, $out, textual_type($self->head->mime_type) ? 1 : 0) || die "encoding failed\n"; - $IO->close; - 1; - } ---- lib/MIME/Decoder/QuotedPrint.pm.orig Thu Aug 26 12:28:37 2004 -+++ lib/MIME/Decoder/QuotedPrint.pm Thu Aug 26 12:28:26 2004 -@@ -73,7 +73,7 @@ - sub encode_qp_really { - my $enc = encode_qp(shift, undef, not shift); - if (length($enc) < 74) { -- $enc =~ s/^\.$/=2E/g; # force encoding of /^\.$/ -+ $enc =~ s/^\.\n/=2E\n/g; # force encoding of /^\.$/ - $enc =~ s/^From /=46rom /g; # force encoding of /^From / - } - $enc; ---- t/Misc.t.orig Sun May 21 07:15:26 2000 -+++ t/Misc.t Thu Aug 26 12:34:27 2004 -@@ -6,7 +6,7 @@ - - # Create checker: - my $T = typical ExtUtils::TBone; --$T->begin(7); -+$T->begin(12); - - #------------------------------ - # Bug 971008 from Michael W. Normandin <michael.normandin@csfb.com>: -@@ -67,13 +67,29 @@ - # $res =~ s/\./=2E/go; - # $res =~ s/From /=46rom /go; - # at the start of encode_qp_really in MIME::Decoder::QuotedPrint? -+# -+# Textual mode. -+{ -+ use MIME::Decoder::QuotedPrint; -+ my $pair; -+ foreach $pair (["From me", "=46rom me=\n"], -+ [".", ".=\n"], # soft line-break -+ [".\n", "=2E\n"], # line-break -+ [" From you", " From you=\n"]) { -+ my $out = MIME::Decoder::QuotedPrint::encode_qp_really($pair->[0], 1); -+ $T->ok_eq($out, $pair->[1], -+ "bug 970725-DNA: QP use of RFC2049 guideline 8"); -+ } -+} -+# Binary mode - { - use MIME::Decoder::QuotedPrint; - my $pair; -- foreach $pair (["From me", "=46rom me"], -- [".", "=2E"], -- [" From you", " From you"]) { -- my $out = MIME::Decoder::QuotedPrint::encode_qp_really($pair->[0]); -+ foreach $pair (["From me", "=46rom me=\n"], -+ [".", ".=\n"], # soft line-break -+ [".\n", ".=0A=\n"], # line-break -+ [" From you", " From you=\n"]) { -+ my $out = MIME::Decoder::QuotedPrint::encode_qp_really($pair->[0], 0); - $T->ok_eq($out, $pair->[1], - "bug 970725-DNA: QP use of RFC2049 guideline 8"); - } diff --git a/mail/p5-MIME-Tools/files/patch-Filer.pm-whitespace b/mail/p5-MIME-Tools/files/patch-Filer.pm-whitespace deleted file mode 100644 index e011a0b7f4ed..000000000000 --- a/mail/p5-MIME-Tools/files/patch-Filer.pm-whitespace +++ /dev/null @@ -1,23 +0,0 @@ ---- lib/MIME/Parser/Filer.pm Thu Nov 23 06:04:03 2000 -+++ lib/MIME/Parser/Filer.pm Thu Aug 26 00:42:18 2004 -@@ -357,8 +357,9 @@ - $self->debug("is this evil? '$name'"); - - return 1 if (!defined($name) or ($name eq '')); ### empty -+ return 1 if ($name =~ m{(^\s)|(\s+\Z)}); ### leading/trailing whitespace - return 1 if ($name =~ m{^\.+\Z}); ### dots -- return 1 if ($name =~ tr{\\/:[]}{}); ### path characters -+ return 1 if ($name =~ /((?:[\[\]\\\/\<\>\|\?\*\:\"]|\p{IsCntrl}))/); ### path or special characters - return 1 if ($self->{MPF_MaxName} and - (length($name) > $self->{MPF_MaxName})); - -@@ -402,6 +403,9 @@ - my ($root, $ext) = (($last =~ /^(.*)\.([^\.]+)\Z/) - ? ($1, $2) - : ($last, '')); -+ ### Delete leading and trailing whitespace -+ $root =~ s/^\s+//; -+ $ext =~ s/\s+$//; - $root = substr($root, 0, ($self->{MPF_TrimRoot} || 14)); - $ext = substr($ext, 0, ($self->{MPF_TrimExt} || 3)); - $ext =~ /^\w+$/ or $ext = "dat"; diff --git a/mail/p5-MIME-Tools/files/patch-ParamVal.pm b/mail/p5-MIME-Tools/files/patch-ParamVal.pm deleted file mode 100644 index afc85edda148..000000000000 --- a/mail/p5-MIME-Tools/files/patch-ParamVal.pm +++ /dev/null @@ -1,114 +0,0 @@ ---- lib/MIME/Field/ParamVal.pm.orig Sun Nov 5 04:54:49 2000 -+++ lib/MIME/Field/ParamVal.pm Thu Jun 6 10:15:15 2002 -@@ -100,6 +100,9 @@ - # token = 1*<any (ASCII) CHAR except SPACE, CTLs, or tspecials> - # - my $TSPECIAL = '()<>@,;:\</[]?="'; -+ -+#" Fix emacs highlighting... -+ - my $TOKEN = '[^ \x00-\x1f\x80-\xff' . "\Q$TSPECIAL\E" . ']+'; - - # Encoded token: -@@ -108,6 +111,9 @@ - # Pattern to match spaces or comments: - my $SPCZ = '(?:\s|\([^\)]*\))*'; - -+# Pattern to match non-semicolon as fallback for broken MIME -+# produced by some viruses -+my $BADTOKEN = '[^;]+'; - - #------------------------------ - # -@@ -181,10 +187,40 @@ - - =cut - -+sub rfc2231decode { -+ my($val) = @_; -+ my($enc, $lang, $rest); -+ -+ if ($val =~ m/^([^\']*)\'([^\']*)\'(.*)$/) { -+ # SHOULD REALLY DO SOMETHING MORE INTELLIGENT WITH ENCODING!!! -+ $enc = $1; -+ $lang = $2; -+ $rest = $3; -+ $rest = rfc2231percent($rest); -+ } elsif ($val =~ m/^([^\']*)\'([^\']*)$/) { -+ $enc = $1; -+ $rest = $2; -+ $rest = rfc2231percent($rest); -+ } else { -+ $rest = rfc2231percent($val); -+ } -+ return $rest; -+} -+ -+sub rfc2231percent { -+ # Do percent-subsitution -+ my($str) = @_; -+ $str =~ s/%([0-9a-fA-F]{2})/pack("c", hex($1))/ge; -+ return $str; -+} -+ - sub parse_params { - my ($self, $raw) = @_; - my %params = (); -+ my %rfc2231params = (); - my $param; -+ my $val; -+ my $part; - - # Get raw field, and unfold it: - defined($raw) or $raw = ''; -@@ -200,9 +236,47 @@ - $raw =~ m/\G$SPCZ\;$SPCZ/og or last; # skip leading separator - $raw =~ m/\G($PARAMNAME)\s*=\s*/og or last; # give up if not a param - $param = lc($1); -- $raw =~ m/\G(\"([^\"]+)\")|\G($TOKEN)|\G($ENCTOKEN)/g or last; # give up if no value -- my ($qstr, $str, $token, $enctoken) = ($1, $2, $3, $4); -- $params{$param} = defined($qstr) ? $str : (defined($token) ? $token : $enctoken); -+ $raw =~ m/\G(\"([^\"]+)\")|\G($ENCTOKEN)|\G($BADTOKEN)|\G($TOKEN)/g or last; # give up if no value" -+ my ($qstr, $str, $enctoken, $badtoken, $token) = ($1, $2, $3, $4, $5); -+ if (defined($badtoken)) { -+ # Strip leading/trailing whitespace from badtoken -+ $badtoken =~ s/^\s*//; -+ $badtoken =~ s/\s*$//; -+ } -+ $val = defined($qstr) ? $str : -+ (defined($enctoken) ? $enctoken : -+ (defined($badtoken) ? $badtoken : $token)); -+ -+ # Do RFC 2231 processing -+ if ($param =~ /\*/) { -+ my($name, $num); -+ # Pick out the parts of the parameter -+ if ($param =~ m/^([^*]+)\*([^*]+)\*?$/) { -+ # We have param*number* or param*number -+ $name = $1; -+ $num = $2; -+ } else { -+ # Fake a part of zero... not sure how to handle this properly -+ $param =~ s/\*//g; -+ $name = $param; -+ $num = 0; -+ } -+ # Decode the value unless it was a quoted string -+ if (!defined($qstr)) { -+ $val = rfc2231decode($val); -+ } -+ $rfc2231params{$name}{$num} .= $val; -+ } else { -+ # Make a fake "part zero" for non-RFC2231 params -+ $rfc2231params{$param}{"0"} = $val; -+ } -+ } -+ -+ # Extract reconstructed parameters -+ foreach $param (keys %rfc2231params) { -+ foreach $part (sort { $a <=> $b } keys %{$rfc2231params{$param}}) { -+ $params{$param} .= $rfc2231params{$param}{$part}; -+ } - debug " field param <$param> = <$params{$param}>"; - } - diff --git a/mail/p5-MIME-Tools/files/patch-Parser-BinHex b/mail/p5-MIME-Tools/files/patch-Parser-BinHex deleted file mode 100644 index cdeec197cc10..000000000000 --- a/mail/p5-MIME-Tools/files/patch-Parser-BinHex +++ /dev/null @@ -1,260 +0,0 @@ ---- /dev/null Sun Aug 1 22:44:02 2004 -+++ lib/MIME/Decoder/BinHex.pm Sun Aug 1 22:43:12 2004 -@@ -0,0 +1,182 @@ -+package MIME::Decoder::BinHex; -+ -+ -+=head1 NAME -+ -+MIME::Decoder::BinHex - decode a "binhex" stream -+ -+ -+=head1 SYNOPSIS -+ -+A generic decoder object; see L<MIME::Decoder> for usage. -+ -+Also supports a preamble() method to recover text before -+the binhexed portion of the stream. -+ -+ -+=head1 DESCRIPTION -+ -+A MIME::Decoder subclass for a nonstandard encoding whereby -+data are binhex-encoded. Common non-standard MIME encodings for this: -+ -+ x-uu -+ x-uuencode -+ -+ -+=head1 AUTHOR -+ -+Julian Field (F<mailscanner@ecs.soton.ac.uk>). -+ -+All rights reserved. This program is free software; you can redistribute -+it and/or modify it under the same terms as Perl itself. -+ -+=head1 VERSION -+ -+$Revision: 1.1 $ $Date: 2004/08/01 20:46:17 $ -+ -+=cut -+ -+ -+require 5.002; -+use vars qw(@ISA $VERSION); -+use MIME::Decoder; -+use MIME::Tools qw(whine); -+use Convert::BinHex; -+ -+@ISA = qw(MIME::Decoder); -+ -+# The package version, both in 1.23 style *and* usable by MakeMaker: -+$VERSION = substr q$Revision: 1.1 $, 10; -+ -+ -+#------------------------------ -+# -+# decode_it IN, OUT -+# -+sub decode_it { -+ my ($self, $in, $out) = @_; -+ my ($mode, $file); -+ my (@preamble, @data); -+ local $_; -+ my $H2B = Convert::BinHex->hex2bin; -+ #my $H2B = Convert::BinHex->open($in); -+ my $line; -+ -+ $self->{MDU_Preamble} = \@preamble; -+ $self->{MDU_Mode} = '600'; -+ $self->{MDU_File} = undef; -+ -+ ### Find beginning... -+ $MailScanner::BinHex::Inline = 1; -+ if ($MailScanner::BinHex::Inline) { -+ while (defined($_ = $in->getline)) { -+ #print STDERR "Line is \"$_\"\n"; -+ if (/^\(This file must be converted/) { -+ $_ = $in->getline; -+ last if /^:/; -+ } -+ push @preamble, $_; -+ } -+ die("binhex decoding: fell off end of file\n") if !defined($_); -+ } else { -+ while (defined($_ = $in->getline)) { -+ # Found the header? So start decoding it -+ last if /^:/; -+ push @preamble, $_; -+ } -+ ## hit eof! -+ die("binhex decoding: no This file must be... found\n") if !defined($_); -+ } -+ -+ ### Decode: -+ # Don't rely on the comment always being there -+ #$self->whine(":H2B is $H2B\n"); -+ #$self->whine("Header is " . $H2B->read_header . "\n"); -+ #@data = $H2B->read_data; -+ #$out->print(@data); -+ #print STDERR "End of binhex stream\n"; -+ #return 1; -+ #if (/^:/) { -+ my $data; -+ $data = $H2B->next($_); # or whine("Next error is $@ $!\n"); -+ #print STDERR "Data line 1 is length \"" . length($data) . "\" \"$data\"\n"; -+ my $len = unpack("C", $data); -+ while ($len > length($data)+21 && defined($line = $in->getline)) { -+ $data .= $H2B->next($line); -+ } -+ $data = substr($data, 22+$len); -+ $out->print($data); -+ #} -+ while (defined($_ = $in->getline)) { -+ $line = $_; -+ $data = $H2B->next($line); -+ #print STDERR "Data is length " . length($data) . " \"$data\"\n"; -+ $out->print($data); -+ #chomp $line; -+ #print STDERR "Line is length " . length($line) . " \"$line\"\n"; -+ #print STDERR "Line matches end\n" if $line =~ /:$/; -+ last if $line =~ /:$/; -+ } -+ #print STDERR "Broken out of loop\n"; -+ #print STDERR "file incomplete, no end found\n" if !defined($_); # eof -+ 1; -+} -+ -+#------------------------------ -+# -+# encode_it IN, OUT -+# -+sub encode_it { -+ my ($self, $in, $out) = @_; -+ my $line; -+ my $buf = ''; -+ -+ my $fname = (($self->head && -+ $self->head->mime_attr('content-disposition.filename')) || -+ ''); -+ my $B2H = Convert::BinHex->bin2hex; -+ $out->print("(This file must be converted with BinHex 4.0)\n"); -+ #while (defined($line = <$in>)) { -+ while ($in->read($buf, 1000)) { -+ $out->print($B2H->next($buf)); -+ } -+ $out->print($B2H->done); -+ 1; -+} -+ -+#------------------------------ -+# -+# last_preamble -+# -+# Return the last preamble as ref to array of lines. -+# Gets reset by decode_it(). -+# -+sub last_preamble { -+ my $self = shift; -+ return $self->{MDU_Preamble} || []; -+} -+ -+#------------------------------ -+# -+# last_mode -+# -+# Return the last mode. -+# Gets reset to undef by decode_it(). -+# -+sub last_mode { -+ shift->{MDU_Mode}; -+} -+ -+#------------------------------ -+# -+# last_filename -+# -+# Return the last filename. -+# Gets reset by decode_it(). -+# -+sub last_filename { -+ shift->{MDU_File} || undef; #[]; -+} -+ -+#------------------------------ -+1; ---- lib/MIME/Decoder.pm.orig Sun Aug 1 22:44:50 2004 -+++ lib/MIME/Decoder.pm Sun Aug 1 22:45:10 2004 -@@ -111,6 +111,7 @@ - 'quoted-printable' => 'MIME::Decoder::QuotedPrint', - - ### Non-standard... -+ 'binhex' => 'MIME::Decoder::BinHex', - 'x-uu' => 'MIME::Decoder::UU', - 'x-uuencode' => 'MIME::Decoder::UU', - ---- lib/MIME/Parser.pm Tue Aug 31 18:54:05 2004 -+++ lib/MIME/Parser.pm Tue Aug 31 18:53:33 2004 -@@ -799,10 +802,11 @@ - $self->debug("extract uuencode? ", $self->extract_uuencode); - $self->debug("encoding? ", $encoding); - $self->debug("effective type? ", $ent->effective_type); -+ - if ($self->extract_uuencode and - ($encoding =~ /^(7bit|8bit|binary)\Z/) and -- ($ent->effective_type =~ m{^text/plain\Z})) { -- -+ ($ent->effective_type =~ -+ m{^(?:text/plain|application/mac-binhex40|application/mac-binhex)\Z})) { - ### Hunt for it: - my $uu_ent = eval { $self->hunt_for_uuencode($ENCODED, $ent) }; - if ($uu_ent) { ### snark -@@ -842,14 +844,21 @@ - # - sub hunt_for_uuencode { - my ($self, $ENCODED, $ent) = @_; -- my $good; -+ my ($good, $jkfis); - local $_; - $self->debug("sniffing around for UUENCODE"); - - ### Heuristic: - $ENCODED->seek(0,0); - while (defined($_ = $ENCODED->getline)) { -- last if ($good = /^begin [0-7]{3}/); -+ if ($good = /^begin [0-7]{3}/) { -+ $jkfis = 'uu'; -+ last; -+ } -+ if ($good = /^\(This file must be converted with/i) { -+ $jkfis = 'binhex'; -+ last; -+ } - } - $good or do { $self->debug("no one made the cut"); return 0 }; - -@@ -860,7 +869,9 @@ - - ### Made the first cut; on to the real stuff: - $ENCODED->seek(0,0); -- my $decoder = MIME::Decoder->new('x-uuencode'); -+ my $decoder = MIME::Decoder->new(($jkfis eq 'uu')?'x-uuencode' -+ :'binhex'); -+ $self->whine("Found a $jkfis attachment"); - my $pre; - while (1) { - my @bin_data; -@@ -910,12 +921,11 @@ - - ### Did we get anything? - @parts or return undef; -- - ### Set the parts and a nice preamble: - $top_ent->parts(\@parts); - $top_ent->preamble - (["The following is a multipart MIME message which was extracted\n", -- "from a uuencoded message.\n"]); -+ "from a $jkfis-encoded message.\n"]); - $top_ent; - } - diff --git a/mail/p5-MIME-Tools/files/patch-Parser-MaxParts b/mail/p5-MIME-Tools/files/patch-Parser-MaxParts deleted file mode 100644 index 75f150286be0..000000000000 --- a/mail/p5-MIME-Tools/files/patch-Parser-MaxParts +++ /dev/null @@ -1,81 +0,0 @@ ---- lib/MIME/Parser.pm.orig Tue Aug 31 18:54:05 2004 -+++ lib/MIME/Parser.pm Tue Aug 31 18:53:33 2004 -@@ -250,6 +250,7 @@ - $self->{MP5_IgnoreErrors} = 1; - $self->{MP5_UseInnerFiles} = 0; - $self->{MP5_UUDecode} = 0; -+ $self->{MP5_MaxParts} = -1; - - $self->interface(ENTITY_CLASS => 'MIME::Entity'); - $self->interface(HEAD_CLASS => 'MIME::Head'); -@@ -277,6 +278,7 @@ - $self->{MP5_Filer}->results($self->{MP5_Results}); - $self->{MP5_Filer}->init_parse(); - $self->{MP5_Filer}->purgeable([]); ### just to be safe -+ $self->{MP5_NumParts} = 0; - 1; - } - -@@ -969,11 +980,19 @@ - # Retype => retype this part to the given content-type - # - # Return the entity. --# Fatal exception on failure. -+# Fatal exception on failure. Returns undef if message to complex - # - sub process_part { - my ($self, $in, $rdr, %p) = @_; - -+ if ($self->{MP5_MaxParts} > 0) { -+ $self->{MP5_NumParts}++; -+ if ($self->{MP5_NumParts} > $self->{MP5_MaxParts}) { -+ # Return UNDEF if msg too complex -+ return undef; -+ } -+ } -+ - $rdr ||= MIME::Parser::Reader->new; - #debug "process_part"; - $self->results->level(+1); -@@ -1094,6 +1112,8 @@ - - Returns the parsed MIME::Entity on success. - Throws exception on failure. -+If the message contained too many -+parts (as set by I<max_parts>), returns undef. - - =cut - -@@ -1351,6 +1371,32 @@ - my $self = shift; - &MIME::Tools::whine("evil_filename deprecated in MIME::Parser"); - $self->filer->evil_filename(@_); -+} -+ -+#------------------------------ -+ -+=item max_parts NUM -+ -+I<Instance method.> -+Limits the number of MIME parts we will parse. -+ -+Normally, instances of this class parse a message to the bitter end. -+Messages with many MIME parts can cause excessive memory consumption. -+If you invoke this method, parsing will abort with a die() if a message -+contains more than NUM parts. -+ -+If NUM is set to -1 (the default), then no maximum limit is enforced. -+ -+With no argument, returns the current setting as an integer -+ -+=cut -+ -+sub max_parts { -+ my($self, $num) = @_; -+ if (@_ > 1) { -+ $self->{MP5_MaxParts} = $num; -+ } -+ return $self->{MP5_MaxParts}; - } - - #------------------------------ diff --git a/mail/p5-MIME-Tools/files/patch-Parser.pm b/mail/p5-MIME-Tools/files/patch-Parser.pm deleted file mode 100644 index 7bffe7af4a01..000000000000 --- a/mail/p5-MIME-Tools/files/patch-Parser.pm +++ /dev/null @@ -1,75 +0,0 @@ ---- lib/MIME/Parser.pm.orig Sun Nov 12 14:55:11 2000 -+++ lib/MIME/Parser.pm Wed Nov 19 18:39:33 2003 -@@ -378,16 +378,17 @@ - =item extract_nested_messages OPTION - - I<Instance method.> --Some MIME messages will contain a part of type C<message/rfc822>: -+Some MIME messages will contain a part of type C<message/rfc822> -+or C<message/partial> or C<message/external-body>: - literally, the text of an embedded mail/news/whatever message. - This option controls whether (and how) we parse that embedded message. - - If the OPTION is false, we treat such a message just as if it were a - C<text/plain> document, without attempting to decode its contents. - --If the OPTION is true (the default), the body of the C<message/rfc822> --part is parsed by this parser, creating an entity object. --What happens then is determined by the actual OPTION: -+If the OPTION is true (the default), the body of the C<message/rfc822> -+or C<message/partial> part is parsed by this parser, creating an -+entity object. What happens then is determined by the actual OPTION: - - =over 4 - -@@ -592,6 +593,7 @@ - # - # I<Instance method.> - # Process and return the next header. -+# Return undef if, instead of a header, the encapsulation boundary is found. - # Fatal exception on failure. - # - sub process_header { -@@ -612,6 +614,10 @@ - foreach (@headlines) { s/[\r\n]+\Z/\n/ } ### fold - - ### How did we do? -+ if ($hdr_rdr->eos_type eq 'DELIM') { -+ $self->whine("bogus part, without CRLF before body"); -+ return; -+ } - ($hdr_rdr->eos_type eq 'DONE') or - $self->error("unexpected end of header\n"); - -@@ -983,7 +989,17 @@ - - ### Parse and add the header: - my $head = $self->process_header($in, $rdr); -- $ent->head($head); -+ if (not defined $head) { -+ $self->debug("bogus empty part"); -+ $head = $self->interface('HEAD_CLASS')->new; -+ $head->mime_type('text/plain; charset=US-ASCII'); -+ $ent->head($head); -+ $ent->bodyhandle($self->new_body_for($head)); -+ $ent->bodyhandle->open("w")->close; -+ $self->results->level(-1); -+ return $ent; -+ } -+ $ent->head($head); - - ### Tweak the content-type based on context from our parent... - ### For example, multipart/digest messages default to type message/rfc822: -@@ -997,8 +1013,10 @@ - if ($type eq 'multipart') { - $self->process_multipart($in, $rdr, $ent); - } -- elsif (("$type/$subtype" eq "message/rfc822") && -- $self->extract_nested_messages) { -+ elsif (("$type/$subtype" eq "message/rfc822" || -+ "$type/$subtype" eq "message/external-body" || -+ ("$type/$subtype" eq "message/partial" && $head->mime_attr("content-type.number") == 1)) && -+ $self->extract_nested_messages) { - $self->debug("attempting to process a nested message"); - $self->process_message($in, $rdr, $ent); - } diff --git a/mail/p5-MIME-Tools/files/patch-ParserUndef b/mail/p5-MIME-Tools/files/patch-ParserUndef deleted file mode 100644 index f79f5bf98a14..000000000000 --- a/mail/p5-MIME-Tools/files/patch-ParserUndef +++ /dev/null @@ -1,43 +0,0 @@ ---- lib/MIME/Parser.pm Tue Aug 31 18:54:05 2004 -+++ lib/MIME/Parser.pm Tue Aug 31 18:53:33 2004 -@@ -708,6 +710,7 @@ - - ### Parse the next part, and add it to the entity... - my $part = $self->process_part($in, $part_rdr, Retype=>$retype); -+ return undef unless defined($part); - $ent->add_part($part); - - ### ...and look at how we finished up: -@@ -944,6 +954,7 @@ - - ### Parse the message: - my $msg = $self->process_part($in, $rdr); -+ return undef unless defined($msg); - - ### How to handle nested messages? - if ($self->extract_nested_messages eq 'REPLACE') { -@@ -1005,14 +1024,14 @@ - - ### Handle, according to the MIME type: - if ($type eq 'multipart') { -- $self->process_multipart($in, $rdr, $ent); -+ return undef unless defined($self->process_multipart($in, $rdr, $ent)); - } - elsif (("$type/$subtype" eq "message/rfc822" || - "$type/$subtype" eq "message/external-body" || - ("$type/$subtype" eq "message/partial" && $head->mime_attr("content-type.number") == 1)) && - $self->extract_nested_messages) { - $self->debug("attempting to process a nested message"); -- $self->process_message($in, $rdr, $ent); -+ return undef unless defined($self->process_message($in, $rdr, $ent)); - } - else { - $self->process_singlepart($in, $rdr, $ent); -@@ -1080,7 +1080,6 @@ - =back - - Returns the parsed MIME::Entity on success. --Throws exception on failure. - - =cut - diff --git a/mail/p5-MIME-Tools/files/patch-Words.pm b/mail/p5-MIME-Tools/files/patch-Words.pm deleted file mode 100644 index d1fb41ea9759..000000000000 --- a/mail/p5-MIME-Tools/files/patch-Words.pm +++ /dev/null @@ -1,11 +0,0 @@ ---- lib/MIME/Words.pm.orig Sat Nov 11 01:45:12 2000 -+++ lib/MIME/Words.pm Thu Jun 6 10:15:15 2002 -@@ -186,7 +186,7 @@ - $@ = ''; ### error-return - - ### Collapse boundaries between adjacent encoded words: -- $encstr =~ s{(\?\=)\r?\n[ \t](\=\?)}{$1$2}gs; -+ $encstr =~ s{(\?\=)\s*(\=\?)}{$1$2}gs; - pos($encstr) = 0; - ### print STDOUT "ENC = [", $encstr, "]\n"; - |