From dc396cc29397b262d3cc1473ade4229c84e82ca3 Mon Sep 17 00:00:00 2001 From: Steve Hay Date: Tue, 6 May 2014 20:40:56 +0100 Subject: [PATCH] Upgrade to Encode-2.60 This upgrade includes the blead customizations from 080a704606 and 9e9002efd1 (amongst other changes) so that Perl 5.20.0 can ship with an official CPAN release of Encode. --- Porting/Maintainers.pl | 22 +--------------------- cpan/Encode/Byte/Makefile.PL | 5 ++++- cpan/Encode/CN/Makefile.PL | 5 ++++- cpan/Encode/EBCDIC/Makefile.PL | 5 ++++- cpan/Encode/Encode.pm | 19 +++++++++++++++---- cpan/Encode/Encode.xs | 7 +++++-- cpan/Encode/Encode/Makefile_PL.e2x | 5 ++++- cpan/Encode/JP/Makefile.PL | 5 ++++- cpan/Encode/KR/Makefile.PL | 5 ++++- cpan/Encode/Symbol/Makefile.PL | 5 ++++- cpan/Encode/TW/Makefile.PL | 5 ++++- cpan/Encode/Unicode/Unicode.xs | 4 ++-- cpan/Encode/bin/enc2xs | 7 +++++-- cpan/Encode/bin/piconv | 10 ++++++---- t/porting/customized.dat | 14 -------------- 15 files changed, 66 insertions(+), 57 deletions(-) diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl index 6bd6cf0..32083ef 100755 --- a/Porting/Maintainers.pl +++ b/Porting/Maintainers.pl @@ -388,28 +388,8 @@ use File::Glob qw(:case); }, 'Encode' => { - 'DISTRIBUTION' => 'DANKOGAI/Encode-2.57.tar.gz', + 'DISTRIBUTION' => 'DANKOGAI/Encode-2.60.tar.gz', 'FILES' => q[cpan/Encode], - 'CUSTOMIZED' => [ - # Waiting to be merged upstream: see CPAN RT#95130 - qw( - bin/enc2xs - Byte/Makefile.PL - CN/Makefile.PL - EBCDIC/Makefile.PL - encengine.c - Encode/encode.h - Encode/encode.h - Encode/Makefile_PL.e2x - Encode.pm - Encode.xs - JP/Makefile.PL - KR/Makefile.PL - Symbol/Makefile.PL - TW/Makefile.PL - Unicode/Unicode.xs - ), - ], }, 'encoding::warnings' => { diff --git a/cpan/Encode/Byte/Makefile.PL b/cpan/Encode/Byte/Makefile.PL index 4b2a2bf..58deaf3 100644 --- a/cpan/Encode/Byte/Makefile.PL +++ b/cpan/Encode/Byte/Makefile.PL @@ -117,8 +117,11 @@ Encode_XSEncoding(pTHX_ encode_t *enc) { dSP; HV *stash = gv_stashpv("Encode::XS", TRUE); - SV *sv = sv_bless(newRV_noinc(newSViv(PTR2IV(enc))),stash); + SV *iv = newSViv(PTR2IV(enc)); + SV *sv = sv_bless(newRV_noinc(iv),stash); int i = 0; + SvFLAGS(iv) |= SVp_POK; + SvPVX(iv) = enc->name[0]; PUSHMARK(sp); XPUSHs(sv); while (enc->name[i]) diff --git a/cpan/Encode/CN/Makefile.PL b/cpan/Encode/CN/Makefile.PL index 3fd595a..efd2edb 100644 --- a/cpan/Encode/CN/Makefile.PL +++ b/cpan/Encode/CN/Makefile.PL @@ -93,8 +93,11 @@ Encode_XSEncoding(pTHX_ encode_t *enc) { dSP; HV *stash = gv_stashpv("Encode::XS", TRUE); - SV *sv = sv_bless(newRV_noinc(newSViv(PTR2IV(enc))),stash); + SV *iv = newSViv(PTR2IV(enc)); + SV *sv = sv_bless(newRV_noinc(iv),stash); int i = 0; + SvFLAGS(iv) |= SVp_POK; + SvPVX(iv) = enc->name[0]; PUSHMARK(sp); XPUSHs(sv); while (enc->name[i]) diff --git a/cpan/Encode/EBCDIC/Makefile.PL b/cpan/Encode/EBCDIC/Makefile.PL index 77dff98..7a3a4cb 100644 --- a/cpan/Encode/EBCDIC/Makefile.PL +++ b/cpan/Encode/EBCDIC/Makefile.PL @@ -74,8 +74,11 @@ Encode_XSEncoding(pTHX_ encode_t *enc) { dSP; HV *stash = gv_stashpv("Encode::XS", TRUE); - SV *sv = sv_bless(newRV_noinc(newSViv(PTR2IV(enc))),stash); + SV *iv = newSViv(PTR2IV(enc)); + SV *sv = sv_bless(newRV_noinc(iv),stash); int i = 0; + SvFLAGS(iv) |= SVp_POK; + SvPVX(iv) = enc->name[0]; PUSHMARK(sp); XPUSHs(sv); while (enc->name[i]) diff --git a/cpan/Encode/Encode.pm b/cpan/Encode/Encode.pm index a5be18b..9dc970b 100644 --- a/cpan/Encode/Encode.pm +++ b/cpan/Encode/Encode.pm @@ -1,10 +1,10 @@ # -# $Id: Encode.pm,v 2.57 2014/01/03 04:51:39 dankogai Exp $ +# $Id: Encode.pm,v 2.60 2014/04/29 16:26:49 dankogai Exp dankogai $ # package Encode; use strict; use warnings; -our $VERSION = sprintf "%d.%02d", q$Revision: 2.57_01 $ =~ /(\d+)/g; +our $VERSION = sprintf "%d.%02d", q$Revision: 2.60 $ =~ /(\d+)/g; use constant DEBUG => !!$ENV{PERL_ENCODE_DEBUG}; use XSLoader (); XSLoader::load( __PACKAGE__, $VERSION ); @@ -801,13 +801,24 @@ If you're not interested in this, then bitwise-OR it with the bitmask. =head2 coderef for CHECK As of C 2.12, C can also be a code reference which takes the -ordinal value of the unmapped character as an argument and returns a string -that represents the fallback character. For instance: +ordinal value of the unmapped character as an argument and returns +octets that represent the fallback character. For instance: $ascii = encode("ascii", $utf8, sub{ sprintf "", shift }); Acts like C but U+I is used instead of C<\x{I}>. +Even the fallback for C must return octets, which are +then decoded with the character encoding that C accepts. So for +example if you wish to decode octests as UTF-8, and use ISO-8859-15 as +a fallback for bytes that are not valid UTF-8, you could write + + $str = decode 'UTF-8', $octets, sub { + my $tmp = chr shift; + from_to $tmp, 'ISO-8859-15', 'UTF-8'; + return $tmp; + }; + =head1 Defining Encodings To define a new encoding, use: diff --git a/cpan/Encode/Encode.xs b/cpan/Encode/Encode.xs index 0ecd094..18c982a 100644 --- a/cpan/Encode/Encode.xs +++ b/cpan/Encode/Encode.xs @@ -1,5 +1,5 @@ /* - $Id: Encode.xs,v 2.24 2013/08/29 16:47:39 dankogai Exp $ + $Id: Encode.xs,v 2.27 2014/04/29 16:25:06 dankogai Exp dankogai $ */ #define PERL_NO_GET_CONTEXT @@ -44,8 +44,11 @@ Encode_XSEncoding(pTHX_ encode_t * enc) { dSP; HV *stash = gv_stashpv("Encode::XS", TRUE); - SV *sv = sv_bless(newRV_noinc(newSViv(PTR2IV(enc))), stash); + SV *iv = newSViv(PTR2IV(enc)); + SV *sv = sv_bless(newRV_noinc(iv),stash); int i = 0; + SvFLAGS(iv) |= SVp_POK; + SvPVX(iv) = enc->name[0]; PUSHMARK(sp); XPUSHs(sv); while (enc->name[i]) { diff --git a/cpan/Encode/Encode/Makefile_PL.e2x b/cpan/Encode/Encode/Makefile_PL.e2x index 53c2dd3..b786567 100644 --- a/cpan/Encode/Encode/Makefile_PL.e2x +++ b/cpan/Encode/Encode/Makefile_PL.e2x @@ -110,8 +110,11 @@ Encode_XSEncoding(pTHX_ encode_t *enc) { dSP; HV *stash = gv_stashpv("Encode::XS", TRUE); - SV *sv = sv_bless(newRV_noinc(newSViv(PTR2IV(enc))),stash); + SV *iv = newSViv(PTR2IV(enc)); + SV *sv = sv_bless(newRV_noinc(iv),stash); int i = 0; + SvFLAGS(iv) |= SVp_POK; + SvPVX(iv) = enc->name[0]; PUSHMARK(sp); XPUSHs(sv); while (enc->name[i]) diff --git a/cpan/Encode/JP/Makefile.PL b/cpan/Encode/JP/Makefile.PL index 10c2bb6..cb671b6 100644 --- a/cpan/Encode/JP/Makefile.PL +++ b/cpan/Encode/JP/Makefile.PL @@ -93,8 +93,11 @@ Encode_XSEncoding(pTHX_ encode_t *enc) { dSP; HV *stash = gv_stashpv("Encode::XS", TRUE); - SV *sv = sv_bless(newRV_noinc(newSViv(PTR2IV(enc))),stash); + SV *iv = newSViv(PTR2IV(enc)); + SV *sv = sv_bless(newRV_noinc(iv),stash); int i = 0; + SvFLAGS(iv) |= SVp_POK; + SvPVX(iv) = enc->name[0]; PUSHMARK(sp); XPUSHs(sv); while (enc->name[i]) diff --git a/cpan/Encode/KR/Makefile.PL b/cpan/Encode/KR/Makefile.PL index 6934b8b..fa6f0d8 100644 --- a/cpan/Encode/KR/Makefile.PL +++ b/cpan/Encode/KR/Makefile.PL @@ -91,8 +91,11 @@ Encode_XSEncoding(pTHX_ encode_t *enc) { dSP; HV *stash = gv_stashpv("Encode::XS", TRUE); - SV *sv = sv_bless(newRV_noinc(newSViv(PTR2IV(enc))),stash); + SV *iv = newSViv(PTR2IV(enc)); + SV *sv = sv_bless(newRV_noinc(iv),stash); int i = 0; + SvFLAGS(iv) |= SVp_POK; + SvPVX(iv) = enc->name[0]; PUSHMARK(sp); XPUSHs(sv); while (enc->name[i]) diff --git a/cpan/Encode/Symbol/Makefile.PL b/cpan/Encode/Symbol/Makefile.PL index 945136b..b525610 100644 --- a/cpan/Encode/Symbol/Makefile.PL +++ b/cpan/Encode/Symbol/Makefile.PL @@ -79,8 +79,11 @@ Encode_XSEncoding(pTHX_ encode_t *enc) { dSP; HV *stash = gv_stashpv("Encode::XS", TRUE); - SV *sv = sv_bless(newRV_noinc(newSViv(PTR2IV(enc))),stash); + SV *iv = newSViv(PTR2IV(enc)); + SV *sv = sv_bless(newRV_noinc(iv),stash); int i = 0; + SvFLAGS(iv) |= SVp_POK; + SvPVX(iv) = enc->name[0]; PUSHMARK(sp); XPUSHs(sv); while (enc->name[i]) diff --git a/cpan/Encode/TW/Makefile.PL b/cpan/Encode/TW/Makefile.PL index f2cbeea..c7711d9 100644 --- a/cpan/Encode/TW/Makefile.PL +++ b/cpan/Encode/TW/Makefile.PL @@ -89,8 +89,11 @@ Encode_XSEncoding(pTHX_ encode_t *enc) { dSP; HV *stash = gv_stashpv("Encode::XS", TRUE); - SV *sv = sv_bless(newRV_noinc(newSViv(PTR2IV(enc))),stash); + SV *iv = newSViv(PTR2IV(enc)); + SV *sv = sv_bless(newRV_noinc(iv),stash); int i = 0; + SvFLAGS(iv) |= SVp_POK; + SvPVX(iv) = enc->name[0]; PUSHMARK(sp); XPUSHs(sv); while (enc->name[i]) diff --git a/cpan/Encode/Unicode/Unicode.xs b/cpan/Encode/Unicode/Unicode.xs index c2a8ec2..cf42ab8 100644 --- a/cpan/Encode/Unicode/Unicode.xs +++ b/cpan/Encode/Unicode/Unicode.xs @@ -1,5 +1,5 @@ /* - $Id: Unicode.xs,v 2.10 2013/04/26 18:30:46 dankogai Exp $ + $Id: Unicode.xs,v 2.11 2014/04/29 16:25:06 dankogai Exp dankogai $ */ #define PERL_NO_GET_CONTEXT @@ -79,7 +79,7 @@ enc_unpack(pTHX_ U8 **sp, U8 *e, STRLEN size, U8 endian) if (endian == 'v') break; v |= (*s++ << 16); - v |= (*s++ << 24); + v |= ((UV)*s++ << 24); break; default: croak("Unknown endian %c",(char) endian); diff --git a/cpan/Encode/bin/enc2xs b/cpan/Encode/bin/enc2xs index 25ce6f0..966c456 100644 --- a/cpan/Encode/bin/enc2xs +++ b/cpan/Encode/bin/enc2xs @@ -10,7 +10,7 @@ use warnings; use Getopt::Std; use Config; my @orig_ARGV = @ARGV; -our $VERSION = do { my @r = (q$Revision: 2.9 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; +our $VERSION = do { my @r = (q$Revision: 2.12 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; # These may get re-ordered. # RAW is a do_now as inserted by &enter @@ -313,8 +313,11 @@ Encode_XSEncoding(pTHX_ encode_t *enc) { dSP; HV *stash = gv_stashpv("Encode::XS", TRUE); - SV *sv = sv_bless(newRV_noinc(newSViv(PTR2IV(enc))),stash); + SV *iv = newSViv(PTR2IV(enc)); + SV *sv = sv_bless(newRV_noinc(iv),stash); int i = 0; + SvFLAGS(iv) |= SVp_POK; + SvPVX(iv) = enc->name[0]; PUSHMARK(sp); XPUSHs(sv); while (enc->name[i]) diff --git a/cpan/Encode/bin/piconv b/cpan/Encode/bin/piconv index 74adca4..669304b 100644 --- a/cpan/Encode/bin/piconv +++ b/cpan/Encode/bin/piconv @@ -1,5 +1,5 @@ #!./perl -# $Id: piconv,v 2.5 2013/04/26 18:30:46 dankogai Exp $ +# $Id: piconv,v 2.6 2014/03/28 02:37:42 dankogai Exp $ # use 5.8.0; use strict; @@ -68,14 +68,16 @@ To: $to => $cto EOT } -my %use_bom = map { $_ => 1 } qw/UTF-16 UTF-32/; +my %use_bom = + map { $_ => 1 } qw/UTF-16 UTF-16BE UTF-16LE UTF-32 UTF-32BE UTF-32LE/; # we do not use <> (or ARGV) for the sake of binmode() @ARGV or push @ARGV, \*STDIN; unless ( $scheme eq 'perlio' ) { binmode STDOUT; - my $need2slurp = $use_bom{ find_encoding($to)->name }; + my $need2slurp = $use_bom{ find_encoding($to)->name } + || $use_bom{ find_encoding($from)->name }; for my $argv (@ARGV) { my $ifh = ref $argv ? $argv : undef; $ifh or open $ifh, "<", $argv or warn "Can't open $argv: $!" and next; @@ -169,7 +171,7 @@ The following are mainly of interest to Encode hackers: -D,--debug show debug information -S,--scheme scheme use the scheme for conversion Those are handy when you can only see ASCII characters: - -p,--perlqq transliterate characters missing in encoding to \x{HHHH} + -p,--perlqq transliterate characters missing in encoding to \\x{HHHH} where HHHH is the hexadecimal Unicode code point --htmlcref transliterate characters missing in encoding to &#NNN; where NNN is the decimal Unicode code point diff --git a/t/porting/customized.dat b/t/porting/customized.dat index c784106..cd4bdde 100644 --- a/t/porting/customized.dat +++ b/t/porting/customized.dat @@ -1,18 +1,4 @@ Digest::MD5 cpan/Digest-MD5/t/files.t bdbe05b705d9da305fedce7a9f4b6ba63250c7cf -Encode cpan/Encode/bin/enc2xs e8eb480be70267e0c2ac9df7f18a6e329c64e494 -Encode cpan/Encode/Byte/Makefile.PL dbceeb6ba7cb05df3d30412a4390d40ed8e4af5d -Encode cpan/Encode/CN/Makefile.PL 3c28dcb8bbb0f0f16deec6e7f76e4701dadba364 -Encode cpan/Encode/EBCDIC/Makefile.PL de8ad9cfea819fcab809b90d97431dbdf0ec53cd -Encode cpan/Encode/encengine.c 8e59c3e3a2bc9c866531f653c7377250495c27f4 -Encode cpan/Encode/Encode.pm cf239e1b3a79a564d01a9a011f7ebc80f4551a65 -Encode cpan/Encode/Encode.xs 4edcc474315eb3f38f53e24418bca7e7c2809cc8 -Encode cpan/Encode/Encode/encode.h 69a2a11529d868017b9d1fcfe00069621d7c0503 -Encode cpan/Encode/Encode/Makefile_PL.e2x 804949878b675562dddac59600d29232ddff7fe0 -Encode cpan/Encode/JP/Makefile.PL c5039f65c3b40c536f04beee9c8c47de888c65fa -Encode cpan/Encode/KR/Makefile.PL 10d1ad37b196da1eaf49671fa5b65a744d232040 -Encode cpan/Encode/Symbol/Makefile.PL 7337ce85aa6bcc562d123ea184995dec7bc9f521 -Encode cpan/Encode/TW/Makefile.PL 686ea18ef9da743d961981a20ea19d391808d256 -Encode cpan/Encode/Unicode/Unicode.xs 27731231063734c063c661f3af4d95150f9d87ac Module::Build cpan/Module-Build/lib/Module/Build/ConfigData.pm 85eb9656e68d1f256737dc52d86b5d0fed28f832 PerlIO::via::QuotedPrint cpan/PerlIO-via-QuotedPrint/t/QuotedPrint.t ca39f0146e89de02c746e199c45dcb3e5edad691 Text::Balanced cpan/Text-Balanced/t/01_compile.t 1598cf491a48fa546260a2ec41142abe84da533d -- 2.7.4