View | Details | Raw Unified | Return to bug 58066
Collapse All | Expand All

(-)p5-MIME-Tools/Makefile (-6 / +6 lines)
Lines 6-27 Link Here
6
#
6
#
7
7
8
PORTNAME=	p5-MIME-Tools
8
PORTNAME=	p5-MIME-Tools
9
PORTVERSION=	5.411a
9
PORTVERSION=	6.200.02
10
PORTREVISION=	2
11
CATEGORIES=	mail perl5
10
CATEGORIES=	mail perl5
12
MASTER_SITES=	${MASTER_SITE_PERL_CPAN}
11
MASTER_SITES=	${MASTER_SITE_PERL_CPAN}
13
MASTER_SITE_SUBDIR=	MIME
12
MASTER_SITE_SUBDIR=	MIME
14
DISTNAME=	MIME-tools-${PORTVERSION}
13
DISTNAME=	MIME-tools-${PORTVERSION:R}_${PORTVERSION:E}
15
14
16
MAINTAINER=	kuriyama@FreeBSD.org
15
MAINTAINER=	kuriyama@FreeBSD.org
17
COMMENT=	A set of perl5 modules for MIME
16
COMMENT=	A set of perl5 modules for MIME
18
17
19
BUILD_DEPENDS=	${LOCALBASE}/lib/perl5/site_perl/${PERL_VER}/Mail/Header.pm:${PORTSDIR}/mail/p5-Mail-Tools \
18
BUILD_DEPENDS=	${SITE_PERL}/Mail/Header.pm:${PORTSDIR}/mail/p5-Mail-Tools \
20
		${LOCALBASE}/lib/perl5/site_perl/${PERL_VER}/IO/Wrap.pm:${PORTSDIR}/devel/p5-IO-stringy
19
		${SITE_PERL}/IO/Wrap.pm:${PORTSDIR}/devel/p5-IO-stringy \
20
		${SITE_PERL}/${PERL_ARCH}/Unicode/Map.pm:${PORTSDIR}/converters/p5-Unicode-Map \
21
		${SITE_PERL}/${PERL_ARCH}/Unicode/String.pm:${PORTSDIR}/converters/p5-Unicode-String
21
RUN_DEPENDS=	${BUILD_DEPENDS}
22
RUN_DEPENDS=	${BUILD_DEPENDS}
22
23
23
PERL_CONFIGURE=	YES
24
PERL_CONFIGURE=	YES
24
WRKSRC=		${WRKDIR}/MIME-tools-5.411
25
25
26
MANPREFIX=	${PREFIX}/lib/perl5/${PERL_VERSION}
26
MANPREFIX=	${PREFIX}/lib/perl5/${PERL_VERSION}
27
MAN3=	MIME::Body.3 \
27
MAN3=	MIME::Body.3 \
(-)p5-MIME-Tools/distinfo (-1 / +1 lines)
Line 1 Link Here
1
MD5 (MIME-tools-5.411a.tar.gz) = e7cb1f8e146171103640e3a5516afb1a
1
MD5 (MIME-tools-6.200_02.tar.gz) = 3d0b48a8b52e27618a899e0475d1c003
(-)p5-MIME-Tools/files/patch-ParamVal.pm (-114 lines)
Lines 1-114 Link Here
1
--- lib/MIME/Field/ParamVal.pm.orig	Sun Nov  5 04:54:49 2000
2
+++ lib/MIME/Field/ParamVal.pm	Thu Jun  6 10:15:15 2002
3
@@ -100,6 +100,9 @@
4
 #      token      =  1*<any  (ASCII) CHAR except SPACE, CTLs, or tspecials>
5
 #
6
 my $TSPECIAL = '()<>@,;:\</[]?="';
7
+
8
+#" Fix emacs highlighting...
9
+
10
 my $TOKEN    = '[^ \x00-\x1f\x80-\xff' . "\Q$TSPECIAL\E" . ']+';
11
 
12
 # Encoded token:
13
@@ -108,6 +111,9 @@
14
 # Pattern to match spaces or comments:
15
 my $SPCZ     = '(?:\s|\([^\)]*\))*';
16
 
17
+# Pattern to match non-semicolon as fallback for broken MIME
18
+# produced by some viruses
19
+my $BADTOKEN = '[^;]+';
20
 
21
 #------------------------------
22
 #
23
@@ -181,10 +187,40 @@
24
 
25
 =cut
26
 
27
+sub rfc2231decode {
28
+    my($val) = @_;
29
+    my($enc, $lang, $rest);
30
+
31
+    if ($val =~ m/^([^\']*)\'([^\']*)\'(.*)$/) {
32
+	# SHOULD REALLY DO SOMETHING MORE INTELLIGENT WITH ENCODING!!!
33
+	$enc = $1;
34
+	$lang = $2;
35
+	$rest = $3;
36
+	$rest = rfc2231percent($rest);
37
+    } elsif ($val =~ m/^([^\']*)\'([^\']*)$/) {
38
+	$enc = $1;
39
+	$rest = $2;
40
+	$rest = rfc2231percent($rest);
41
+    } else {
42
+	$rest = rfc2231percent($val);
43
+    }
44
+    return $rest;
45
+}
46
+
47
+sub rfc2231percent {
48
+    # Do percent-subsitution
49
+    my($str) = @_;
50
+    $str =~ s/%([0-9a-fA-F]{2})/pack("c", hex($1))/ge;
51
+    return $str;
52
+}
53
+
54
 sub parse_params {
55
     my ($self, $raw) = @_;
56
     my %params = ();
57
+    my %rfc2231params = ();
58
     my $param;
59
+    my $val;
60
+    my $part;
61
 
62
     # Get raw field, and unfold it:
63
     defined($raw) or $raw = '';
64
@@ -200,9 +236,47 @@
65
 	$raw =~ m/\G$SPCZ\;$SPCZ/og or last;             # skip leading separator
66
 	$raw =~ m/\G($PARAMNAME)\s*=\s*/og or last;      # give up if not a param
67
 	$param = lc($1);
68
-	$raw =~ m/\G(\"([^\"]+)\")|\G($TOKEN)|\G($ENCTOKEN)/g or last;   # give up if no value
69
-	my ($qstr, $str, $token, $enctoken) = ($1, $2, $3, $4);
70
-	$params{$param} = defined($qstr) ? $str : (defined($token) ? $token : $enctoken);
71
+	$raw =~ m/\G(\"([^\"]+)\")|\G($ENCTOKEN)|\G($BADTOKEN)|\G($TOKEN)/g or last;   # give up if no value"
72
+	my ($qstr, $str, $enctoken, $badtoken, $token) = ($1, $2, $3, $4, $5);
73
+	if (defined($badtoken)) {
74
+	    # Strip leading/trailing whitespace from badtoken
75
+	    $badtoken =~ s/^\s*//;
76
+	    $badtoken =~ s/\s*$//;
77
+	}
78
+	$val = defined($qstr) ? $str :
79
+	    (defined($enctoken) ? $enctoken :
80
+	     (defined($badtoken) ? $badtoken : $token));
81
+
82
+	# Do RFC 2231 processing
83
+	if ($param =~ /\*/) {
84
+	    my($name, $num);
85
+	    # Pick out the parts of the parameter
86
+	    if ($param =~ m/^([^*]+)\*([^*]+)\*?$/) {
87
+		# We have param*number* or param*number
88
+		$name = $1;
89
+		$num = $2;
90
+	    } else {
91
+		# Fake a part of zero... not sure how to handle this properly
92
+		$param =~ s/\*//g;
93
+		$name = $param;
94
+		$num = 0;
95
+	    }
96
+	    # Decode the value unless it was a quoted string
97
+	    if (!defined($qstr)) {
98
+		$val = rfc2231decode($val);
99
+	    }
100
+	    $rfc2231params{$name}{$num} .= $val;
101
+	} else {
102
+	    # Make a fake "part zero" for non-RFC2231 params
103
+	    $rfc2231params{$param}{"0"} = $val;
104
+	}
105
+    }
106
+
107
+    # Extract reconstructed parameters
108
+    foreach $param (keys %rfc2231params) {
109
+	foreach $part (sort { $a <=> $b } keys %{$rfc2231params{$param}}) {
110
+	    $params{$param} .= $rfc2231params{$param}{$part};
111
+	}
112
 	debug "   field param <$param> = <$params{$param}>";
113
     }
114
 
(-)p5-MIME-Tools/files/patch-Words.pm (-11 lines)
Lines 1-11 Link Here
1
--- lib/MIME/Words.pm.orig	Sat Nov 11 01:45:12 2000
2
+++ lib/MIME/Words.pm	Thu Jun  6 10:15:15 2002
3
@@ -186,7 +186,7 @@
4
     $@ = '';           ### error-return
5
 
6
     ### Collapse boundaries between adjacent encoded words:
7
-    $encstr =~ s{(\?\=)\r?\n[ \t](\=\?)}{$1$2}gs;
8
+    $encstr =~ s{(\?\=)\s*(\=\?)}{$1$2}gs;
9
     pos($encstr) = 0;
10
     ### print STDOUT "ENC = [", $encstr, "]\n";
11
 
(-)p5-MIME-Tools/pkg-plist (-27 / +51 lines)
Lines 1-27 Link Here
1
lib/perl5/site_perl/%%PERL_VER%%/MIME/Body.pm
1
%%SITE_PERL%%/MIME/Body.pm
2
lib/perl5/site_perl/%%PERL_VER%%/MIME/Entity.pm
2
%%SITE_PERL%%/MIME/Decoder.pm
3
lib/perl5/site_perl/%%PERL_VER%%/MIME/Decoder.pm
3
%%SITE_PERL%%/MIME/Decoder/Base64.pm
4
lib/perl5/site_perl/%%PERL_VER%%/MIME/Decoder/QuotedPrint.pm
4
%%SITE_PERL%%/MIME/Decoder/Binary.pm
5
lib/perl5/site_perl/%%PERL_VER%%/MIME/Decoder/Base64.pm
5
%%SITE_PERL%%/MIME/Decoder/Gzip64.pm
6
lib/perl5/site_perl/%%PERL_VER%%/MIME/Decoder/Binary.pm
6
%%SITE_PERL%%/MIME/Decoder/NBit.pm
7
lib/perl5/site_perl/%%PERL_VER%%/MIME/Decoder/Gzip64.pm
7
%%SITE_PERL%%/MIME/Decoder/QuotedPrint.pm
8
lib/perl5/site_perl/%%PERL_VER%%/MIME/Decoder/NBit.pm
8
%%SITE_PERL%%/MIME/Decoder/UU.pm
9
lib/perl5/site_perl/%%PERL_VER%%/MIME/Decoder/UU.pm
9
%%SITE_PERL%%/MIME/Entity.pm
10
lib/perl5/site_perl/%%PERL_VER%%/MIME/Field/ConTraEnc.pm
10
%%SITE_PERL%%/MIME/Field/ConTraEnc.pm
11
lib/perl5/site_perl/%%PERL_VER%%/MIME/Field/ContDisp.pm
11
%%SITE_PERL%%/MIME/Field/ContDisp.pm
12
lib/perl5/site_perl/%%PERL_VER%%/MIME/Field/ContType.pm
12
%%SITE_PERL%%/MIME/Field/ContType.pm
13
lib/perl5/site_perl/%%PERL_VER%%/MIME/Field/ParamVal.pm
13
%%SITE_PERL%%/MIME/Field/ParamVal.pm
14
lib/perl5/site_perl/%%PERL_VER%%/MIME/Head.pm
14
%%SITE_PERL%%/MIME/Head.pm
15
lib/perl5/site_perl/%%PERL_VER%%/MIME/Parser.pm
15
%%SITE_PERL%%/MIME/Parser.pm
16
lib/perl5/site_perl/%%PERL_VER%%/MIME/Parser/Filer.pm
16
%%SITE_PERL%%/MIME/Parser/AbstractFiler.pm
17
lib/perl5/site_perl/%%PERL_VER%%/MIME/Parser/Reader.pm
17
%%SITE_PERL%%/MIME/Parser/Filer.pm
18
lib/perl5/site_perl/%%PERL_VER%%/MIME/Parser/Results.pm
18
%%SITE_PERL%%/MIME/Parser/FlatFiler.pm
19
lib/perl5/site_perl/%%PERL_VER%%/MIME/Tools.pm
19
%%SITE_PERL%%/MIME/Parser/Reader.pm
20
lib/perl5/site_perl/%%PERL_VER%%/MIME/WordDecoder.pm
20
%%SITE_PERL%%/MIME/Parser/Redoer.pm
21
lib/perl5/site_perl/%%PERL_VER%%/MIME/Words.pm
21
%%SITE_PERL%%/MIME/Parser/Results.pm
22
lib/perl5/site_perl/%%PERL_VER%%/%%PERL_ARCH%%/auto/MIME-tools/.packlist
22
%%SITE_PERL%%/MIME/Parser/TreeFiler.pm
23
@dirrm lib/perl5/site_perl/%%PERL_VER%%/%%PERL_ARCH%%/auto/MIME-tools
23
%%SITE_PERL%%/MIME/Parser/UURedoer.pm
24
@dirrm lib/perl5/site_perl/%%PERL_VER%%/MIME/Field
24
%%SITE_PERL%%/MIME/Tools.pm
25
@dirrm lib/perl5/site_perl/%%PERL_VER%%/MIME/Decoder
25
%%SITE_PERL%%/MIME/Tools/IndentingLogger.pm
26
@dirrm lib/perl5/site_perl/%%PERL_VER%%/MIME/Parser
26
%%SITE_PERL%%/MIME/Tools/Logger.pm
27
@unexec rmdir %D/lib/perl5/site_perl/%%PERL_VER%%/MIME 2>/dev/null || true
27
%%SITE_PERL%%/MIME/Tools/MailFieldParserForRFC2045.pm
28
%%SITE_PERL%%/MIME/Tools/MailFieldTokenizerForRFC2045.pm
29
%%SITE_PERL%%/MIME/Tools/MailFieldTokenizerForRFC822.pm
30
%%SITE_PERL%%/MIME/Tools/NullLogger.pm
31
%%SITE_PERL%%/MIME/Tools/PrefixingLogger.pm
32
%%SITE_PERL%%/MIME/Tools/ToolkitLogger.pm
33
%%SITE_PERL%%/MIME/Tools/Utils.pm
34
%%SITE_PERL%%/MIME/Tools/changes.pod
35
%%SITE_PERL%%/MIME/Tools/config.pod
36
%%SITE_PERL%%/MIME/Tools/diag.pod
37
%%SITE_PERL%%/MIME/Tools/faq.pod
38
%%SITE_PERL%%/MIME/Tools/overview.pod
39
%%SITE_PERL%%/MIME/Tools/primer.pod
40
%%SITE_PERL%%/MIME/Tools/tips.pod
41
%%SITE_PERL%%/MIME/Tools/traps.pod
42
%%SITE_PERL%%/MIME/Tools/tricks.pod
43
%%SITE_PERL%%/MIME/WordDecoder.pm
44
%%SITE_PERL%%/MIME/Words.pm
45
%%SITE_PERL%%/%%PERL_ARCH%%/auto/MIME-tools/.packlist
46
@dirrm %%SITE_PERL%%/%%PERL_ARCH%%/auto/MIME-tools
47
@dirrm %%SITE_PERL%%/MIME/Field
48
@dirrm %%SITE_PERL%%/MIME/Decoder
49
@dirrm %%SITE_PERL%%/MIME/Parser
50
@dirrm %%SITE_PERL%%/MIME/Tools
51
@unexec rmdir %D/%%SITE_PERL%%/MIME 2>/dev/null || true

Return to bug 58066