From: Jarkko Hietaniemi Date: Mon, 22 Apr 2002 19:48:20 +0000 (+0000) Subject: Upgrade to Encode 1.57, from Dan Kogai. X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=011b2d2f95a2b6260e1a3409e652417bcc2b453d;p=p5sagit%2Fp5-mst-13.2.git Upgrade to Encode 1.57, from Dan Kogai. p4raw-id: //depot/perl@16085 --- diff --git a/ext/Encode/Changes b/ext/Encode/Changes index d34ebce..46e2902 100644 --- a/ext/Encode/Changes +++ b/ext/Encode/Changes @@ -1,9 +1,20 @@ # Revision history for Perl extension Encode. # -# $Id: Changes,v 1.56 2002/04/22 09:48:07 dankogai Exp dankogai $ +# $Id: Changes,v 1.57 2002/04/22 20:27:30 dankogai Exp dankogai $ # -$Revision: 1.56 $ $Date: 2002/04/22 09:48:07 $ +$Revision: 1.57 $ $Date: 2002/04/22 20:27:30 $ +! t/JP.t t/KR.t t/perlio.t + unless (find PerlIO::Layer 'perlio') ... line is back again. + t/JP.t and t/KR.t were supposed to work but maybe '>:utf8' lines + need PerlIO. Sigh.... +! Encode.xs Unicode/Unicode.pm lib/Encode/JP/JIS7.pm t/perlio.t + ->perlio_ok now does eval{ require PerlIO::encoding } there so + it correctly returns 1 when PerlIO::encoding is yet loaded. +! Encode.xs + perl-current patch #16072 reflected + +1.56 2002/04/22 09:48:07 ! Encode.pm encoding.pm t/perlio.t t/jperl.t New PerlIO::encoding 0.04 compliance met @@ -443,7 +454,7 @@ $Revision: 1.56 $ $Date: 2002/04/22 09:48:07 $ Typo fixes and improvements by jhi Message-Id: <200204010201.FAA03564@alpha.hut.fi>, et al. -1.11 $Date: 2002/04/22 09:48:07 $ +1.11 $Date: 2002/04/22 20:27:30 $ + t/encoding.t + t/jperl.t ! MANIFEST diff --git a/ext/Encode/Encode.pm b/ext/Encode/Encode.pm index dbd7934..cb133e5 100644 --- a/ext/Encode/Encode.pm +++ b/ext/Encode/Encode.pm @@ -1,6 +1,6 @@ package Encode; use strict; -our $VERSION = do { my @r = (q$Revision: 1.56 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; +our $VERSION = do { my @r = (q$Revision: 1.57 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; our $DEBUG = 0; use XSLoader (); XSLoader::load 'Encode'; @@ -65,9 +65,8 @@ sub encodings } sub perlio_ok{ - exists $INC{"PerlIO/encoding.pm"} or return 0; my $obj = ref($_[0]) ? $_[0] : find_encoding($_[0]); - $obj->can("perlio_ok") and return $obj->perlio_ok() unless $@; + $obj->can("perlio_ok") and return $obj->perlio_ok(); return 0; # safety net } diff --git a/ext/Encode/Encode.xs b/ext/Encode/Encode.xs index 886fb89..5602c70 100644 --- a/ext/Encode/Encode.xs +++ b/ext/Encode/Encode.xs @@ -1,5 +1,5 @@ /* - $Id: Encode.xs,v 1.33 2002/04/22 03:43:05 dankogai Exp $ + $Id: Encode.xs,v 1.34 2002/04/22 20:27:30 dankogai Exp dankogai $ */ #define PERL_NO_GET_CONTEXT @@ -23,6 +23,7 @@ return (y)0; /* fool picky compilers */ \ } /**/ + UNIMPLEMENTED(_encoded_utf8_to_bytes, I32) UNIMPLEMENTED(_encoded_bytes_to_utf8, I32) @@ -280,6 +281,7 @@ SV * obj CODE: { encode_t *enc = INT2PTR(encode_t *, SvIV(SvRV(obj))); + require_pv(PERLIO_FILENAME); if (hv_exists(get_hv("INC", 0), PERLIO_FILENAME, strlen(PERLIO_FILENAME))) { diff --git a/ext/Encode/Unicode/Unicode.pm b/ext/Encode/Unicode/Unicode.pm index fdf826e..bfe03bd 100644 --- a/ext/Encode/Unicode/Unicode.pm +++ b/ext/Encode/Unicode/Unicode.pm @@ -3,7 +3,7 @@ package Encode::Unicode; use strict; use warnings; -our $VERSION = do { my @r = (q$Revision: 1.34 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; +our $VERSION = do { my @r = (q$Revision: 1.35 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; use XSLoader; XSLoader::load(__PACKAGE__,$VERSION); @@ -50,8 +50,12 @@ sub new_sequence sub needs_lines { 0 }; sub perlio_ok { - exists $INC{"PerlIO/encoding.pm"} or return 0; - return 1; + eval{ require PerlIO::encoding }; + if ($@){ + return 0; + }else{ + return 1; + } } diff --git a/ext/Encode/lib/Encode/CN/HZ.pm b/ext/Encode/lib/Encode/CN/HZ.pm index 56a8acd..376300b 100644 --- a/ext/Encode/lib/Encode/CN/HZ.pm +++ b/ext/Encode/lib/Encode/CN/HZ.pm @@ -3,7 +3,7 @@ package Encode::CN::HZ; use strict; use vars qw($VERSION); -$VERSION = do { my @r = (q$Revision: 1.2 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; +$VERSION = do { my @r = (q$Revision: 1.3 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; use Encode (); use Encode::CN; @@ -19,8 +19,6 @@ $obj->Define($canon); sub needs_lines { 1 } sub perlio_ok { - # exists $INC{"PerlIO/encoding.pm"} or return 0; - # PerlIO::encoding->VERSION >= 0.03 and return 1; return 0; # for the time being } diff --git a/ext/Encode/lib/Encode/Encoding.pm b/ext/Encode/lib/Encode/Encoding.pm index 16a950a..12f0655 100644 --- a/ext/Encode/lib/Encode/Encoding.pm +++ b/ext/Encode/lib/Encode/Encoding.pm @@ -1,7 +1,7 @@ package Encode::Encoding; # Base class for classes which implement encodings use strict; -our $VERSION = do { my @r = (q$Revision: 1.27 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; +our $VERSION = do { my @r = (q$Revision: 1.28 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; sub Define { @@ -127,7 +127,15 @@ If you want your encoding to work with PerlIO, you MUST define this method so that it returns 1 when PerlIO is enabled. Here is an example; - sub perlio_ok { exists $INC{"PerlIO/encoding.pm"} } + sub perlio_ok { + eval { require PerlIO::encoding }; + if ($@){ + return 0; + }else{ + return 1; + } + } + By default, this method is defined as follows; diff --git a/ext/Encode/lib/Encode/JP/JIS7.pm b/ext/Encode/lib/Encode/JP/JIS7.pm index e38747e..c0a0d06 100644 --- a/ext/Encode/lib/Encode/JP/JIS7.pm +++ b/ext/Encode/lib/Encode/JP/JIS7.pm @@ -1,7 +1,7 @@ package Encode::JP::JIS7; use strict; -our $VERSION = do { my @r = (q$Revision: 1.5 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; +our $VERSION = do { my @r = (q$Revision: 1.6 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; use Encode qw(:fallbacks); @@ -24,9 +24,12 @@ sub new_sequence { $_[0] } sub needs_lines { 1 } sub perlio_ok { - exists $INC{"PerlIO/encoding.pm"} or return 0; - PerlIO::encoding->VERSION >= 0.03 and return 1; - return 0; + eval{ require PerlIO::encoding }; + if ($@){ + return 0; + }else{ + return (PerlIO::encoding->VERSION >= 0.03); + } } use Encode::CJKConstants qw(:all); diff --git a/ext/Encode/lib/Encode/KR/2022_KR.pm b/ext/Encode/lib/Encode/KR/2022_KR.pm index b6a65b7..da3b84c 100644 --- a/ext/Encode/lib/Encode/KR/2022_KR.pm +++ b/ext/Encode/lib/Encode/KR/2022_KR.pm @@ -4,7 +4,7 @@ use base 'Encode::Encoding'; use strict; -our $VERSION = do { my @r = (q$Revision: 1.3 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; +our $VERSION = do { my @r = (q$Revision: 1.4 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; my $canon = 'iso-2022-kr'; @@ -16,8 +16,6 @@ sub name { return $_[0]->{name}; } sub needs_lines { 1 } sub perlio_ok { - #exists $INC{"PerlIO/encoding.pm"} or return 0; - #PerlIO::encoding->VERSION >= 0.03 and return 1; return 0; # for the time being } diff --git a/ext/Encode/t/JP.t b/ext/Encode/t/JP.t index 43517f3..6a65e15 100644 --- a/ext/Encode/t/JP.t +++ b/ext/Encode/t/JP.t @@ -12,6 +12,10 @@ BEGIN { print "1..0 # Skip: EBCDIC\n"; exit 0; } + unless (PerlIO::Layer->find('perlio')){ + print "1..0 # Skip: PerlIO required\n"; + exit 0; + } $| = 1; } use strict; @@ -53,6 +57,7 @@ for my $charset (qw(jisx0201 jisx0212 jisx0208)){ is(compare_text($utf, $ref), 0, "$utf eq $ref"); open $src, "<:utf8", $ref or die "$ref : $!"; + binmode($src); $uni = join('', <$src>); close $src; diff --git a/ext/Encode/t/KR.t b/ext/Encode/t/KR.t index 0cf1908..1ffb4e6 100644 --- a/ext/Encode/t/KR.t +++ b/ext/Encode/t/KR.t @@ -8,23 +8,23 @@ BEGIN { print "1..0 # Skip: Encode was not built\n"; exit 0; } - unless (find PerlIO::Layer 'perlio') { - print "1..0 # Skip: PerlIO was not built\n"; - exit 0; - } if (ord("A") == 193) { print "1..0 # Skip: EBCDIC\n"; exit 0; } + unless (PerlIO::Layer->find('perlio')){ + print "1..0 # Skip: PerlIO required\n"; + exit 0; + } $| = 1; } use strict; -use Test::More tests => 15; +use Test::More tests => 11; #use Test::More qw(no_plan); use Encode; use File::Basename; use File::Spec; -use File::Compare; +use File::Compare qw(compare_text); require_ok "Encode::KR"; my ($src, $uni, $dst, $txt, $euc, $utf, $ref, $rnd); @@ -34,48 +34,59 @@ ok($enc->isa('Encode::XS')); is($enc->name,'euc-kr'); my $dir = dirname(__FILE__); -my @subcodings = qw(ksc5601); - -for my $subcoding (@subcodings){ - $euc = File::Spec->catfile($dir,"$subcoding.euc"); +for my $charset (qw(ksc5601)){ + $euc = File::Spec->catfile($dir,"$charset.euc"); $utf = File::Spec->catfile($dir,"$$.utf8"); - $ref = File::Spec->catfile($dir,"$subcoding.ref"); + $ref = File::Spec->catfile($dir,"$charset.ref"); $rnd = File::Spec->catfile($dir,"$$.rnd"); - print "# Basic decode test\n"; - open($src,"<",$euc) || die "Cannot open $euc:$!"; + + open($src,"<",$euc) or die "Cannot open $euc:$!"; binmode($src); - ok(defined($src) && fileno($src)); $txt = join('',<$src>); - open($dst,">:utf8",$utf) || die "Cannot open $utf:$!"; - binmode($dst); - ok(defined($dst) && fileno($dst)); - eval{ $uni = $enc->decode($txt,1) }; + close($src); + + eval{ $uni = $enc->decode($txt, 1) }; $@ and print $@; - ok(defined($uni)); - is(length($txt),0); + ok(defined($uni), "decode $charset"); + is(length($txt),0, "decode $charset completely"); + + open($dst,">:utf8",$utf) or die "Cannot open $utf:$!"; + binmode($dst); print $dst $uni; - close($dst); - close($src); - ok(compare($utf,$ref) == 0); -} + close($dst); + is(compare_text($utf, $ref), 0, "$utf eq $ref"); + + open $src, "<:utf8", $ref or die "$ref : $!"; + binmode($src); + $uni = join('', <$src>); + close $src; -print "# Basic encode test\n"; -open($src,"<:utf8",$ref) || die "Cannot open $ref:$!"; -binmode($src); -ok(defined($src) && fileno($src)); -$uni = join('',<$src>); -open($dst,">",$rnd) || die "Cannot open $rnd:$!"; -binmode($dst); -ok(defined($dst) && fileno($dst)); -$txt = $enc->encode($uni,1); -ok(defined($txt)); -is(length($uni),0); -print $dst $txt; -close($dst); -close($src); -ok(compare($euc,$rnd) == 0); + for my $canon (qw(euc-kr)){ + my $test = \&is; + if ($charset eq 'jisx0201'){ + $canon eq 'iso-2022-jp' and $test = \&isnt; + $canon eq 'iso-2022-jp-1' and $test = \&isnt; + }elsif($charset eq 'jisx0212'){ + $canon eq 'shiftjis' and $test = \&isnt; + $canon eq 'iso-2022-jp' and $test = \&isnt; + } + my $rt = ($test eq \&is) ? 'RT' : 'non-RT'; + $test->($uni, decode($canon, encode($canon, $uni)), + "$rt $charset $canon"); + + } -is($enc->name,'euc-kr'); + eval{ $txt = $enc->encode($uni,1) }; + $@ and print $@; + ok(defined($txt), "encode $charset"); + is(length($uni), 0, "encode $charset completely"); + + open($dst,">", $rnd) or die "Cannot open $utf:$!"; + binmode($dst); + print $dst $txt; + close($dst); + is(compare_text($euc, $rnd), 0 => "$rnd eq $euc"); +} END { 1 while unlink($utf,$rnd); diff --git a/ext/Encode/t/jperl.t b/ext/Encode/t/jperl.t index dd95324..faaf743 100644 --- a/ext/Encode/t/jperl.t +++ b/ext/Encode/t/jperl.t @@ -1,5 +1,5 @@ # -# $Id: jperl.t,v 1.23 2002/04/22 09:48:07 dankogai Exp dankogai $ +# $Id: jperl.t,v 1.23 2002/04/22 09:48:07 dankogai Exp $ # # This script is written in euc-jp diff --git a/ext/Encode/t/perlio.t b/ext/Encode/t/perlio.t index 3b82e9e..5c628cf 100644 --- a/ext/Encode/t/perlio.t +++ b/ext/Encode/t/perlio.t @@ -12,6 +12,10 @@ BEGIN { print "1..0 # Skip: EBCDIC\n"; exit 0; } + unless (PerlIO::Layer->find('perlio')){ + print "1..0 # Skip: PerlIO required\n"; + exit 0; + } $| = 1; } @@ -28,8 +32,6 @@ use Test::More tests => 28; our $DEBUG = 0; use Encode (":all"); -eval { require PerlIO::encoding }; - { no warnings; @ARGV and $DEBUG = shift;