From d26b5e1d881807a894c56e737b0c4864180e7fd7 Mon Sep 17 00:00:00 2001 From: Dan Kogai Date: Sat, 25 Jun 2022 11:28:28 +0000 Subject: [PATCH] Encode: sync with CPAN version 3.18 --- Porting/Maintainers.pl | 2 +- cpan/Encode/Encode.pm | 4 ++-- cpan/Encode/Makefile.PL | 4 +++- cpan/Encode/lib/Encode/MIME/Header.pm | 8 ++++++-- cpan/Encode/t/Unicode_trailing_nul.t | 6 ++++++ cpan/Encode/t/enc_data.t | 2 +- cpan/Encode/t/enc_module.t | 2 +- cpan/Encode/t/jperl.t | 2 +- cpan/Encode/t/mime-header.t | 14 ++++++++++++-- cpan/Encode/t/truncated_utf8.t | 4 ++++ cpan/Encode/t/utf32warnings.t | 6 ++++++ cpan/Encode/t/xml.t | 8 +++++++- 12 files changed, 50 insertions(+), 12 deletions(-) diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl index 21efb40..5460ef6 100755 --- a/Porting/Maintainers.pl +++ b/Porting/Maintainers.pl @@ -387,7 +387,7 @@ use File::Glob qw(:case); }, 'Encode' => { - 'DISTRIBUTION' => 'DANKOGAI/Encode-3.17.tar.gz', + 'DISTRIBUTION' => 'DANKOGAI/Encode-3.18.tar.gz', 'FILES' => q[cpan/Encode], 'EXCLUDED' => [ qw( t/whatwg-aliases.json diff --git a/cpan/Encode/Encode.pm b/cpan/Encode/Encode.pm index fc857f5..de4ff9b 100644 --- a/cpan/Encode/Encode.pm +++ b/cpan/Encode/Encode.pm @@ -1,5 +1,5 @@ # -# $Id: Encode.pm,v 3.17 2022/04/07 03:05:51 dankogai Exp $ +# $Id: Encode.pm,v 3.18 2022/06/25 02:04:06 dankogai Exp $ # package Encode; use strict; @@ -7,7 +7,7 @@ use warnings; use constant DEBUG => !!$ENV{PERL_ENCODE_DEBUG}; our $VERSION; BEGIN { - $VERSION = sprintf "%d.%02d", q$Revision: 3.17 $ =~ /(\d+)/g; + $VERSION = sprintf "%d.%02d", q$Revision: 3.18 $ =~ /(\d+)/g; require XSLoader; XSLoader::load( __PACKAGE__, $VERSION ); } diff --git a/cpan/Encode/Makefile.PL b/cpan/Encode/Makefile.PL index 3cb95e8..fd3ebe3 100644 --- a/cpan/Encode/Makefile.PL +++ b/cpan/Encode/Makefile.PL @@ -1,5 +1,5 @@ # -# $Id: Makefile.PL,v 2.24 2021/10/13 08:29:13 dankogai Exp $ +# $Id: Makefile.PL,v 2.25 2022/06/25 01:58:57 dankogai Exp $ # use 5.007003; use strict; @@ -17,6 +17,8 @@ $ENV{PERL_CORE} ||= $ARGV{PERL_CORE} if $ARGV{PERL_CORE}; my $ccflags = $Config{ccflags}; if (!$ENV{PERL_CORE}) { if (my $gccver = $Config{gccversion}) { + # no more 'Argument "Apple" isn't numeric in addition (+)' + no warnings 'numeric'; $gccver =~ s/\.//g; $gccver =~ s/ .*//; $gccver .= "0" while length $gccver < 3; $gccver = 0+$gccver; diff --git a/cpan/Encode/lib/Encode/MIME/Header.pm b/cpan/Encode/lib/Encode/MIME/Header.pm index 848de99..4d45744 100644 --- a/cpan/Encode/lib/Encode/MIME/Header.pm +++ b/cpan/Encode/lib/Encode/MIME/Header.pm @@ -2,7 +2,7 @@ package Encode::MIME::Header; use strict; use warnings; -our $VERSION = do { my @r = ( q$Revision: 2.28 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r }; +our $VERSION = do { my @r = ( q$Revision: 2.29 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r }; use Carp (); use Encode (); @@ -55,7 +55,7 @@ my $re_capture_encoded_word_split = qr/=\?($re_charset)((?:\*$re_language)?)\?($ # in strict mode check also for valid base64 characters and also for valid quoted printable codes my $re_encoding_strict_b = qr/[Bb]/; my $re_encoding_strict_q = qr/[Qq]/; -my $re_encoded_text_strict_b = qr/[0-9A-Za-z\+\/]*={0,2}/; +my $re_encoded_text_strict_b = qr/(?:[0-9A-Za-z\+\/]{4})*(?:[0-9A-Za-z\+\/]{2}==|[0-9A-Za-z\+\/]{3}=|)/; my $re_encoded_text_strict_q = qr/(?:[\x21-\x3C\x3E\x40-\x7E]|=[0-9A-Fa-f]{2})*/; # NOTE: first part are printable US-ASCII except ?, =, SPACE and TAB my $re_encoded_word_strict = qr/=\?$re_charset(?:\*$re_language)?\?(?:$re_encoding_strict_b\?$re_encoded_text_strict_b|$re_encoding_strict_q\?$re_encoded_text_strict_q)\?=/; my $re_capture_encoded_word_strict = qr/=\?($re_charset)((?:\*$re_language)?)\?($re_encoding_strict_b\?$re_encoded_text_strict_b|$re_encoding_strict_q\?$re_encoded_text_strict_q)\?=/; @@ -94,6 +94,10 @@ sub decode($$;$) { $stop = 1 unless length($line) or length($sep); + # in non strict mode append missing '=' padding characters for b words + # fixes below concatenation of consecutive encoded mime words + 1 while not $STRICT_DECODE and $line =~ s/(=\?$re_charset(?:\*$re_language)?\?[Bb]\?)((?:[^\?]{4})*[^\?]{1,3})(\?=)/$1.$2.('='x(4-length($2)%4)).$3/se; + # NOTE: this code partially could break $chk support # in non strict mode concat consecutive encoded mime words with same charset, language and encoding # fixes breaking inside multi-byte characters diff --git a/cpan/Encode/t/Unicode_trailing_nul.t b/cpan/Encode/t/Unicode_trailing_nul.t index 80a1e19..a212599 100644 --- a/cpan/Encode/t/Unicode_trailing_nul.t +++ b/cpan/Encode/t/Unicode_trailing_nul.t @@ -1,3 +1,9 @@ +BEGIN { + if ( $] < 5.009 ) { + print "1..0 # Skip: Perl <= 5.9 or later required\n"; + exit 0; + } +} use strict; use Test::More; diff --git a/cpan/Encode/t/enc_data.t b/cpan/Encode/t/enc_data.t index f5ddaf7..19619ae 100644 --- a/cpan/Encode/t/enc_data.t +++ b/cpan/Encode/t/enc_data.t @@ -1,4 +1,4 @@ -# $Id: enc_data.t,v 2.6 2022/04/07 03:06:40 dankogai Exp dankogai $ +# $Id: enc_data.t,v 2.6 2022/04/07 03:06:40 dankogai Exp $ BEGIN { require Config; import Config; diff --git a/cpan/Encode/t/enc_module.t b/cpan/Encode/t/enc_module.t index 2d94e36..a96fc8d 100644 --- a/cpan/Encode/t/enc_module.t +++ b/cpan/Encode/t/enc_module.t @@ -1,4 +1,4 @@ -# $Id: enc_module.t,v 2.6 2022/04/07 03:06:40 dankogai Exp dankogai $ +# $Id: enc_module.t,v 2.6 2022/04/07 03:06:40 dankogai Exp $ # This file is in euc-jp BEGIN { require Config; import Config; diff --git a/cpan/Encode/t/jperl.t b/cpan/Encode/t/jperl.t index 27ce881..c49c6b8 100644 --- a/cpan/Encode/t/jperl.t +++ b/cpan/Encode/t/jperl.t @@ -1,5 +1,5 @@ # -# $Id: jperl.t,v 2.6 2022/04/07 03:06:40 dankogai Exp dankogai $ +# $Id: jperl.t,v 2.6 2022/04/07 03:06:40 dankogai Exp $ # # This script is written in euc-jp diff --git a/cpan/Encode/t/mime-header.t b/cpan/Encode/t/mime-header.t index bf48753..de74241 100644 --- a/cpan/Encode/t/mime-header.t +++ b/cpan/Encode/t/mime-header.t @@ -1,5 +1,5 @@ # -# $Id: mime-header.t,v 2.15 2017/07/18 07:15:29 dankogai Exp $ +# $Id: mime-header.t,v 2.16 2022/06/25 01:58:57 dankogai Exp $ # This script is written in utf8 # BEGIN { @@ -24,7 +24,7 @@ use strict; use utf8; use charnames ":full"; -use Test::More tests => 266; +use Test::More tests => 274; BEGIN { use_ok("Encode::MIME::Header"); @@ -138,6 +138,11 @@ my @decode_default_tests = ( "=?utf-8-strict?Q?=C3=A1=f9=80=80=80=80?=" => "á�", # allow non-ASCII characters in q word "=?UTF-8?Q?\x{C3}\x{A1}?=" => "á", + # allow missing padding characters '=' in b word + "=?UTF-8?B?JQ?=" => "%", + "=?UTF-8?B?JQ?= =?UTF-8?B?JQ?=" => "%%", + "=?UTF-8?B?YWI?=" => "ab", + "=?UTF-8?B?YWI?= =?UTF-8?B?YWI?=" => "abab", ); my @decode_strict_tests = ( @@ -159,6 +164,11 @@ my @decode_strict_tests = ( "=?utf-8-strict?Q?=C3=A1?=" => "=?utf-8-strict?Q?=C3=A1?=", # do not allow non-ASCII characters in q word "=?UTF-8?Q?\x{C3}\x{A1}?=" => "=?UTF-8?Q?\x{C3}\x{A1}?=", + # do not allow missing padding characters '=' in b word + "=?UTF-8?B?JQ?=" => "=?UTF-8?B?JQ?=", + "=?UTF-8?B?JQ?= =?UTF-8?B?JQ?=" => "=?UTF-8?B?JQ?= =?UTF-8?B?JQ?=", + "=?UTF-8?B?YWI?=" => "=?UTF-8?B?YWI?=", + "=?UTF-8?B?YWI?= =?UTF-8?B?YWI?=" => "=?UTF-8?B?YWI?= =?UTF-8?B?YWI?=", ); my @encode_tests = ( diff --git a/cpan/Encode/t/truncated_utf8.t b/cpan/Encode/t/truncated_utf8.t index b379267..d6c3363 100644 --- a/cpan/Encode/t/truncated_utf8.t +++ b/cpan/Encode/t/truncated_utf8.t @@ -12,6 +12,10 @@ BEGIN { print "1..0 # Skip: EBCDIC\n"; exit 0; } + if ( $] < 5.009 ) { + print "1..0 # Skip: Perl <= 5.9 or later required\n"; + exit 0; + } $| = 1; } diff --git a/cpan/Encode/t/utf32warnings.t b/cpan/Encode/t/utf32warnings.t index b151cc7..5759541 100644 --- a/cpan/Encode/t/utf32warnings.t +++ b/cpan/Encode/t/utf32warnings.t @@ -1,3 +1,9 @@ +BEGIN { + if ( $] < 5.009 ) { + print "1..0 # Skip: Perl <= 5.9 or later required\n"; + exit 0; + } +} use strict; use warnings; diff --git a/cpan/Encode/t/xml.t b/cpan/Encode/t/xml.t index 2c7e721..5cfc617 100644 --- a/cpan/Encode/t/xml.t +++ b/cpan/Encode/t/xml.t @@ -1,3 +1,9 @@ +BEGIN { + if ( $] < 5.009 ) { + print "1..0 # Skip: Perl <= 5.9 or later required\n"; + exit 0; + } +} use strict; use warnings; @@ -8,7 +14,7 @@ my $content = String->new("--\x{30c6}--"); my $text = Encode::encode('latin1', $content, Encode::FB_XMLCREF); is $text, "--テ--"; -done_testing; +done_testing(); package String; use overload -- 1.8.3.1