This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
SYN SYN
authorCharles Bailey <bailey@newman.upenn.edu>
Wed, 24 Jan 2001 06:37:02 +0000 (06:37 +0000)
committerbailey <bailey@newman.upenn.edu>
Wed, 24 Jan 2001 06:37:02 +0000 (06:37 +0000)
p4raw-id: //depot/vmsperl@8535

153 files changed:
Configure
MANIFEST
Makefile.SH
Porting/Glossary
Porting/config.sh
Porting/config_H
README.os390
README.posix-bc
README.vms
Todo-5.6
bytecode.pl
config_h.SH
configure.com
doio.c
doop.c
embed.h
embed.pl
embedvar.h
epoc/config.sh
ext/B/B.xs
ext/B/B/Asmdata.pm
ext/B/B/Bytecode.pm
ext/B/B/C.pm
ext/B/B/Concise.pm [new file with mode: 0644]
ext/ByteLoader/byterun.c
ext/ByteLoader/byterun.h
ext/DynaLoader/dl_aix.xs
ext/DynaLoader/dl_dllload.xs [new file with mode: 0644]
ext/DynaLoader/dl_dlopen.xs
ext/Encode/Encode.xs
ext/Encode/Encode/ascii.ucm [new file with mode: 0644]
ext/Encode/Encode/cp1047.ucm [new file with mode: 0644]
ext/Encode/Encode/cp1250.ucm [new file with mode: 0644]
ext/Encode/Encode/cp37.ucm [new file with mode: 0644]
ext/Encode/Encode/dingbats.ucm [new file with mode: 0644]
ext/Encode/Encode/iso8859-1.ucm [new file with mode: 0644]
ext/Encode/Encode/iso8859-10.ucm [new file with mode: 0644]
ext/Encode/Encode/iso8859-13.ucm [new file with mode: 0644]
ext/Encode/Encode/iso8859-14.ucm [new file with mode: 0644]
ext/Encode/Encode/iso8859-15.ucm [new file with mode: 0644]
ext/Encode/Encode/iso8859-16.ucm [new file with mode: 0644]
ext/Encode/Encode/iso8859-2.ucm [new file with mode: 0644]
ext/Encode/Encode/iso8859-3.ucm [new file with mode: 0644]
ext/Encode/Encode/iso8859-4.ucm [new file with mode: 0644]
ext/Encode/Encode/iso8859-5.ucm [new file with mode: 0644]
ext/Encode/Encode/iso8859-6.ucm [new file with mode: 0644]
ext/Encode/Encode/iso8859-7.ucm [new file with mode: 0644]
ext/Encode/Encode/iso8859-8.ucm [new file with mode: 0644]
ext/Encode/Encode/iso8859-9.ucm [new file with mode: 0644]
ext/Encode/Encode/posix-bc.ucm [new file with mode: 0644]
ext/Encode/Encode/symbol.ucm [new file with mode: 0644]
ext/Encode/Makefile.PL
ext/Encode/compile
ext/Encode/encode.h
ext/IO/lib/IO/Socket/INET.pm
ext/Opcode/Opcode.xs
ext/Opcode/Safe.pm
ext/Socket/Socket.pm
global.sym
gv.c
hints/os390.sh
hints/posix-bc.sh
installperl
intrpvar.h
keywords.h
keywords.pl
lib/Math/BigInt.pm
lib/Pod/Man.pm
lib/bigint.pl
lib/open.pm
lib/unicode/distinct.pm
mg.c
objXSUB.h
op.c
op.h
opcode.h
opcode.pl
opnames.h
patchlevel.h
perl.c
perl.h
perlapi.c
perlapi.h
perlio.c
perliol.h
perly.y
pod/perlapi.pod
pod/perldiag.pod
pod/perlfaq2.pod
pod/perlfaq3.pod
pod/perlfunc.pod
pod/perlguts.pod
pod/perlintern.pod
pod/perlop.pod
pod/perlre.pod
pod/perlsub.pod
pod/perltoc.pod
pod/perlunicode.pod
pod/perlvar.pod
pp.c
pp.h
pp.sym
pp_ctl.c
pp_hot.c
pp_proto.h
pp_sys.c
proto.h
regcomp.c
regexec.c
scope.c
scope.h
sv.c
t/comp/proto.t
t/io/openpid.t
t/lib/1_compile.t [new file with mode: 0644]
t/lib/b.t
t/lib/charnames.t
t/lib/compmod.pl [new file with mode: 0644]
t/op/int.t
t/op/length.t
t/op/misc.t
t/op/numconvert.t
t/op/qu.t [new file with mode: 0644]
t/op/re_tests
t/op/regmesg.t
t/op/split.t
t/op/sprintf.t
t/op/substr.t
t/op/taint.t
t/op/tr.t
t/op/ver.t
t/pragma/locale.t
t/pragma/sub_lval.t
t/pragma/utf8.t
thrdvar.h
toke.c
uconfig.h
uconfig.sh
utf8.c
util.c
vms/test.com
vos/config.alpha.def
vos/config.alpha.h
vos/config.ga.def
vos/config.ga.h
win32/Makefile
win32/config.bc
win32/config.gc
win32/config.vc
win32/config_H.bc
win32/config_H.gc
win32/config_H.vc
win32/makefile.mk

index 023df36..59c448a 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -20,7 +20,7 @@
 
 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
 #
-# Generated on Fri Jan  5 20:11:52 EET 2001 [metaconfig 3.0 PL70]
+# Generated on Tue Jan 23 16:39:46 EET 2001 [metaconfig 3.0 PL70]
 # (with additional metaconfig patches by perlbug@perl.org)
 
 cat >c1$$ <<EOF
@@ -519,6 +519,7 @@ d_shmctl=''
 d_shmdt=''
 d_shmget=''
 d_sigaction=''
+d_sigprocmask=''
 d_sigsetjmp=''
 d_msg_ctrunc=''
 d_msg_dontroute=''
@@ -883,6 +884,7 @@ sig_name=''
 sig_name_init=''
 sig_num=''
 sig_num_init=''
+sig_size=''
 installsitearch=''
 sitearch=''
 sitearchexp=''
@@ -2062,7 +2064,6 @@ test)
 *)
        if `sh -c "PATH= test true" >/dev/null 2>&1`; then
                echo "Using the test built into your sh."
-               echo "Using the test built into your sh."
                test=test
                _test=test
        fi
@@ -2934,6 +2935,19 @@ EOM
        ;;
 esac
 
+case "$useithreads$use5005threads" in
+"$define$define")
+       $cat >&4 <<EOM
+
+You cannot have both the ithreads and the 5.005 threads enabled
+at the same time.  Disabling the 5.005 threads since they are
+much less stable than the ithreads.
+
+EOM
+       use5005threads="$undef"
+       ;;
+esac
+
 case "$d_oldpthreads" in
 '')    : Configure tests would be welcome here.  For now, assume undef.
        val="$undef" ;;
@@ -5264,6 +5278,51 @@ EOCP
 esac
 $rm -f try.* try
 
+case "$useperlio" in
+$define|true|[yY]*)    dflt='y';;
+*) dflt='n';;
+esac
+cat <<EOM
+
+Previous version of $package used the standard IO mechanisms as
+defined in <stdio.h>.  Versions 5.003_02 and later of perl allow
+alternate IO mechanisms via the PerlIO abstraction layer, but the
+stdio mechanism is still the default.  This abstraction layer can
+use AT&T's sfio (if you already have sfio installed) or regular stdio.
+Using PerlIO with sfio may cause problems with some extension modules.
+
+If this doesn't make any sense to you, just accept the default '$dflt'.
+EOM
+rp='Use the experimental PerlIO abstraction layer?'
+. ./myread
+case "$ans" in
+y|Y) 
+       val="$define"
+       ;;     
+*)      
+       echo "Ok, doing things the stdio way."
+       val="$undef"
+       ;;
+esac
+set useperlio
+eval $setvar 
+
+case "$usesocks" in
+$define|true|[yY]*)
+       case "$useperlio" in
+       $define|true|[yY]*) ;;
+       *)      cat >&4 <<EOM
+
+You are using the SOCKS proxy protocol library which means that you
+should also use the PerlIO layer.  You may be headed for trouble.
+
+EOM
+               ;;
+       esac
+       ;;
+esac
+
+       
 : determine the architecture name
 echo " "
 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
@@ -5360,6 +5419,18 @@ $define)
        esac
        ;;
 esac
+case "$useperlio" in
+$define)
+       echo "Perlio selected." >&4
+       case "$archname" in
+        *-perlio*) echo "...and architecture name already has -perlio." >&4
+                ;;
+        *)      archname="$archname-perlio"
+                echo "...setting architecture name to $archname." >&4
+                ;;
+        esac
+       ;;
+esac
 
 : determine root of directory hierarchy where package will be installed.
 case "$prefix" in
@@ -7518,51 +7589,6 @@ else
        installsitebin="$sitebinexp"
 fi
 
-case "$useperlio" in
-$define|true|[yY]*)    dflt='y';;
-*) dflt='n';;
-esac
-cat <<EOM
-
-Previous version of $package used the standard IO mechanisms as
-defined in <stdio.h>.  Versions 5.003_02 and later of perl allow
-alternate IO mechanisms via the PerlIO abstraction layer, but the
-stdio mechanism is still the default.  This abstraction layer can
-use AT&T's sfio (if you already have sfio installed) or regular stdio.
-Using PerlIO with sfio may cause problems with some extension modules.
-
-If this doesn't make any sense to you, just accept the default '$dflt'.
-EOM
-rp='Use the experimental PerlIO abstraction layer?'
-. ./myread
-case "$ans" in
-y|Y) 
-       val="$define"
-       ;;     
-*)      
-       echo "Ok, doing things the stdio way."
-       val="$undef"
-       ;;
-esac
-set useperlio
-eval $setvar 
-
-case "$usesocks" in
-$define|true|[yY]*)
-       case "$useperlio" in
-       $define|true|[yY]*) ;;
-       *)      cat >&4 <<EOM
-
-You are using the SOCKS proxy protocol library which means that you
-should also use the PerlIO layer.  You may be headed for trouble.
-
-EOM
-               ;;
-       esac
-       ;;
-esac
-
-       
 case "$vendorprefix" in
 '')    d_vendorbin="$undef"
        vendorbin=''
 set d_sigaction; eval $setvar
 $rm -f try try$_o try.c
 
+: see if sigprocmask exists
+set sigprocmask d_sigprocmask
+eval $inlibc
+
 : see if sigsetjmp exists
 echo " "
 case "$d_sigsetjmp" in
@@ -14565,6 +14595,7 @@ echo $sig_name | $awk \
        }
        printf "\n"
 }'
+sig_size=`echo $sig_name | awk '{print NF}'`
 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
 
 echo " "
@@ -16080,6 +16111,7 @@ d_shmctl='$d_shmctl'
 d_shmdt='$d_shmdt'
 d_shmget='$d_shmget'
 d_sigaction='$d_sigaction'
+d_sigprocmask='$d_sigprocmask'
 d_sigsetjmp='$d_sigsetjmp'
 d_socket='$d_socket'
 d_socklen_t='$d_socklen_t'
@@ -16454,6 +16486,7 @@ sig_name='$sig_name'
 sig_name_init='$sig_name_init'
 sig_num='$sig_num'
 sig_num_init='$sig_num_init'
+sig_size='$sig_size'
 signal_t='$signal_t'
 sitearch='$sitearch'
 sitearchexp='$sitearchexp'
index 18ae760..612b610 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -111,6 +111,7 @@ ext/B/B/Bblock.pm   Compiler basic block analysis support
 ext/B/B/Bytecode.pm    Compiler Bytecode backend
 ext/B/B/C.pm           Compiler C backend
 ext/B/B/CC.pm          Compiler CC backend
+ext/B/B/Concise.pm     Compiler Concise backend
 ext/B/B/Debug.pm       Compiler Debug backend
 ext/B/B/Deparse.pm     Compiler Deparse backend
 ext/B/B/Disassembler.pm        Compiler Disassembler backend
@@ -175,6 +176,7 @@ ext/DynaLoader/README               Dynamic Loader notes and intro
 ext/DynaLoader/XSLoader_pm.PL  Simple XS Loader perl module
 ext/DynaLoader/dl_aix.xs       AIX implementation
 ext/DynaLoader/dl_beos.xs      BeOS implementation
+ext/DynaLoader/dl_dllload.xs   S/390 dllload() style implementation
 ext/DynaLoader/dl_dld.xs       GNU dld style implementation
 ext/DynaLoader/dl_dlopen.xs    BSD/SunOS4&5 dlopen() style implementation
 ext/DynaLoader/dl_dyld.xs      NeXT/Apple dyld implementation
@@ -194,10 +196,13 @@ ext/Encode/Encode.pm              Encode extension
 ext/Encode/Encode.xs           Encode extension
 ext/Encode/Encode/EncodeFormat.pod     Encoding table format
 ext/Encode/Encode/ascii.enc    Encoding tables
+ext/Encode/Encode/ascii.ucm    Encoding tables
 ext/Encode/Encode/big5.enc     Encoding tables
 ext/Encode/Encode/cp1006.enc   Encoding tables
 ext/Encode/Encode/cp1047.enc   Encoding tables
+ext/Encode/Encode/cp1047.ucm   Encoding tables
 ext/Encode/Encode/cp1250.enc   Encoding tables
+ext/Encode/Encode/cp1250.ucm   Encoding tables
 ext/Encode/Encode/cp1251.enc   Encoding tables
 ext/Encode/Encode/cp1252.enc   Encoding tables
 ext/Encode/Encode/cp1253.enc   Encoding tables
@@ -207,6 +212,7 @@ ext/Encode/Encode/cp1256.enc        Encoding tables
 ext/Encode/Encode/cp1257.enc   Encoding tables
 ext/Encode/Encode/cp1258.enc   Encoding tables
 ext/Encode/Encode/cp37.enc     Encoding tables
+ext/Encode/Encode/cp37.ucm     Encoding tables
 ext/Encode/Encode/cp424.enc    Encoding tables
 ext/Encode/Encode/cp437.enc    Encoding tables
 ext/Encode/Encode/cp737.enc    Encoding tables
@@ -230,6 +236,7 @@ ext/Encode/Encode/cp936.enc Encoding tables
 ext/Encode/Encode/cp949.enc    Encoding tables
 ext/Encode/Encode/cp950.enc    Encoding tables
 ext/Encode/Encode/dingbats.enc Encoding tables
+ext/Encode/Encode/dingbats.ucm Encoding tables
 ext/Encode/Encode/euc-cn.enc   Encoding tables
 ext/Encode/Encode/euc-jp.enc   Encoding tables
 ext/Encode/Encode/euc-kr.enc   Encoding tables
@@ -241,19 +248,33 @@ ext/Encode/Encode/iso2022-jp.enc  Encoding tables
 ext/Encode/Encode/iso2022-kr.enc       Encoding tables
 ext/Encode/Encode/iso2022.enc          Encoding tables
 ext/Encode/Encode/iso8859-1.enc                Encoding tables
+ext/Encode/Encode/iso8859-1.ucm                Encoding tables
 ext/Encode/Encode/iso8859-10.enc       Encoding tables
+ext/Encode/Encode/iso8859-10.ucm       Encoding tables
 ext/Encode/Encode/iso8859-13.enc       Encoding tables
+ext/Encode/Encode/iso8859-13.ucm       Encoding tables
 ext/Encode/Encode/iso8859-14.enc       Encoding tables
+ext/Encode/Encode/iso8859-14.ucm       Encoding tables
 ext/Encode/Encode/iso8859-15.enc       Encoding tables
+ext/Encode/Encode/iso8859-15.ucm       Encoding tables
 ext/Encode/Encode/iso8859-16.enc       Encoding tables
+ext/Encode/Encode/iso8859-16.ucm       Encoding tables
 ext/Encode/Encode/iso8859-2.enc                Encoding tables
+ext/Encode/Encode/iso8859-2.ucm                Encoding tables
 ext/Encode/Encode/iso8859-3.enc                Encoding tables
+ext/Encode/Encode/iso8859-3.ucm                Encoding tables
 ext/Encode/Encode/iso8859-4.enc                Encoding tables
+ext/Encode/Encode/iso8859-4.ucm                Encoding tables
 ext/Encode/Encode/iso8859-5.enc                Encoding tables
+ext/Encode/Encode/iso8859-5.ucm                Encoding tables
 ext/Encode/Encode/iso8859-6.enc                Encoding tables
+ext/Encode/Encode/iso8859-6.ucm                Encoding tables
 ext/Encode/Encode/iso8859-7.enc                Encoding tables
+ext/Encode/Encode/iso8859-7.ucm                Encoding tables
 ext/Encode/Encode/iso8859-8.enc                Encoding tables
+ext/Encode/Encode/iso8859-8.ucm                Encoding tables
 ext/Encode/Encode/iso8859-9.enc                Encoding tables
+ext/Encode/Encode/iso8859-9.ucm                Encoding tables
 ext/Encode/Encode/jis0201.enc          Encoding tables
 ext/Encode/Encode/jis0208.enc          Encoding tables
 ext/Encode/Encode/jis0212.enc          Encoding tables
@@ -272,8 +293,10 @@ ext/Encode/Encode/macThai.enc              Encoding tables
 ext/Encode/Encode/macTurkish.enc       Encoding tables
 ext/Encode/Encode/macUkraine.enc       Encoding tables
 ext/Encode/Encode/posix-bc.enc         Encoding tables
+ext/Encode/Encode/posix-bc.ucm         Encoding tables
 ext/Encode/Encode/shiftjis.enc         Encoding tables
 ext/Encode/Encode/symbol.enc           Encoding tables
+ext/Encode/Encode/symbol.ucm   Encoding tables
 ext/Encode/Makefile.PL         Encode extension
 ext/Encode/Todo                        Encode extension
 ext/Encode/compile             Encode extension
@@ -1347,6 +1370,7 @@ t/io/print.t              See if print commands work
 t/io/read.t            See if read works
 t/io/tell.t            See if file seeking works
 t/io/utf8.t            See if file seeking works
+t/lib/1_compile.t      See if the various libraries and extensions compile
 t/lib/abbrev.t         See if Text::Abbrev works
 t/lib/ansicolor.t      See if Term::ANSIColor works
 t/lib/anydbm.t         See if AnyDBM_File works
@@ -1367,6 +1391,7 @@ t/lib/charnames.t See if character names work
 t/lib/checktree.t      See if File::CheckTree works
 t/lib/class-struct.t   See if Class::Struct works
 t/lib/complex.t                See if Math::Complex works
+t/lib/compmod.pl       Helper for 1_compile.t
 t/lib/db-btree.t       See if DB_File works
 t/lib/db-hash.t                See if DB_File works
 t/lib/db-recno.t       See if DB_File works
@@ -1554,6 +1579,7 @@ t/op/pat.t                See if esoteric patterns work
 t/op/pos.t             See if pos works
 t/op/push.t            See if push and pop work
 t/op/pwent.t           See if getpw*() functions work
+t/op/qu.t              See if qu works
 t/op/quotemeta.t       See if quotemeta works
 t/op/rand.t            See if rand works
 t/op/range.t           See if .. works
index d0b5465..e6a0ef4 100644 (file)
@@ -26,6 +26,7 @@ esac
 linklibperl='$(LIBPERL)'
 shrpldflags='$(LDDLFLAGS)'
 ldlibpth=''
+DPERL_EXTERNAL_GLOB='-DPERL_EXTERNAL_GLOB'
 case "$useshrplib" in
 true)
        # Prefix all runs of 'miniperl' and 'perl' with 
@@ -76,6 +77,10 @@ true)
        hpux*)
                linklibperl="-L `pwd | sed 's/\/UU$//'` -Wl,+s -Wl,+b$archlibexp/CORE -lperl"
                ;;
+       os390*)
+           linklibperl='libperl.x'
+           DPERL_EXTERNAL_GLOB=''
+           ;;
        esac
        case "$ldlibpthname" in
        '') ;;
@@ -300,17 +305,21 @@ utilities:        miniperl lib/Config.pm $(plextract) lib/lib.pm FORCE
 # Apparently some makes require an action for the FORCE target.
 FORCE:
        @sh -c true
+!NO!SUBS!
+$spitshell >>Makefile <<!GROK!THIS!
 
 # We do a copy of the op.c instead of a symlink because gcc gets huffy
 # if we have a symlink forest to another disk (it complains about too many
 # levels of symbolic links, even if we have only two)
 
-opmini$(OBJ_EXT): op.c config.h
-       $(RMS) opmini.c
-       $(CPS) op.c opmini.c
-       $(CCCMD) $(PLDLFLAGS) -DPERL_EXTERNAL_GLOB opmini.c
-       $(RMS) opmini.c
+opmini\$(OBJ_EXT): op.c config.h
+       \$(RMS) opmini.c
+       \$(CPS) op.c opmini.c
+       \$(CCCMD) \$(PLDLFLAGS) $DPERL_EXTERNAL_GLOB opmini.c
+       \$(RMS) opmini.c
 
+!GROK!THIS!
+$spitshell >>Makefile <<'!NO!SUBS!'
 miniperlmain$(OBJ_EXT): miniperlmain.c patchlevel.h
        $(CCCMD) $(PLDLFLAGS) $*.c
 
@@ -500,7 +509,7 @@ fi
 
 $spitshell >>Makefile <<'!NO!SUBS!'
 
-sperl$(OBJ_EXT): perl.c perly.h patchlevel.h $(h)
+sperl$(OBJ_EXT): perl.c $(h)
        $(RMS) sperl.c
        $(LNS) perl.c sperl.c
        $(CCCMD) -DIAMSUID sperl.c
@@ -783,7 +792,7 @@ _verycleaner:
 # If the source file has a /*NOSTRICT*/ somewhere, ignore the lint message
 # for that spot.
 
-lint: perly.c $(c)
+lint: $(c)
        lint $(lintflags) $(defs) perly.c $(c) > perl.fuzz
 
 # Need to unset during recursion to go out of loop.
index 0095ef1..d32c0a6 100644 (file)
@@ -1449,6 +1449,11 @@ d_sigaction (d_sigaction.U):
        This variable conditionally defines the HAS_SIGACTION symbol, which
        indicates that the Vr4 sigaction() routine is available.
 
+d_sigprocmask (d_sigprocmask.U):
+       This variable conditionally defines HAS_SIGPROCMASK
+       if sigprocmask() is available to examine or change the signal mask
+       of the calling process.
+
 d_sigsetjmp (d_sigsetjmp.U):
        This variable conditionally defines the HAS_SIGSETJMP symbol,
        which indicates that the sigsetjmp() routine is available to
@@ -2444,9 +2449,9 @@ intsize (intsize.U):
        indicates to the C program how many bytes there are in an int.
 
 issymlink (issymlink.U):
-       This variable holds the switch of the test command to test
-       for a symbolic link (if they are supported).  Typical values
-       include '-h' and '-L'.
+       This variable holds the test command to test for a symbolic link
+       (if they are supported).  Typical values include 'test -h' and
+       'test -L'.
 
 ivdformat (perlxvf.U):
        This variable contains the format string used for printing
@@ -3183,6 +3188,10 @@ sig_num_init (sig_name.U):
        below.  A "ZERO" is prepended to the list, and the list is 
        terminated with a plain 0.
 
+sig_size (sig_name.U):
+       This variable contains the number of elements of the sig_name
+       and sig_num arrays, excluding the final NULL entry.
+
 signal_t (d_voidsig.U):
        This variable holds the type of the signal handler (void or int).
 
index 90e7dc5..ec93c84 100644 (file)
@@ -7,8 +7,8 @@
 #
 
 # Package name      : perl5
-# Source directory  : /m/fs/work/work/permanent/perl/pp4/perl
-# Configuration time: Thu Dec 21 18:13:27 EET 2000
+# Source directory  : .
+# Configuration time: Sun Jan 21 21:13:39 EET 2001
 # Configured by     : jhi
 # Target system     : osf1 alpha.hut.fi v4.0 878 alpha 
 
@@ -62,7 +62,7 @@ ccsymbols='__alpha=1 __LANGUAGE_C__=1 __osf__=1 __unix__=1 _LONGLONG=1 _SYSTYPE_
 ccversion='V5.6-082'
 cf_by='jhi'
 cf_email='yourname@yourhost.yourplace.com'
-cf_time='Thu Dec 21 18:13:27 EET 2000'
+cf_time='Sun Jan 21 21:13:39 EET 2001'
 charsize='1'
 chgrp=''
 chmod=''
@@ -329,6 +329,7 @@ d_shmctl='define'
 d_shmdt='define'
 d_shmget='define'
 d_sigaction='define'
+d_sigprocmask='define'
 d_sigsetjmp='define'
 d_socket='define'
 d_socklen_t='undef'
@@ -547,7 +548,7 @@ installvendorarch=''
 installvendorbin=''
 installvendorlib=''
 intsize='4'
-issymlink='-h'
+issymlink='test -h'
 ivdformat='"ld"'
 ivsize='8'
 ivtype='long'
@@ -703,6 +704,7 @@ sig_name='ZERO HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TE
 sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "TRAP", "ABRT", "EMT", "FPE", "KILL", "BUS", "SEGV", "SYS", "PIPE", "ALRM", "TERM", "IOINT", "STOP", "TSTP", "CONT", "CHLD", "TTIN", "TTOU", "AIO", "XCPU", "XFSZ", "VTALRM", "PROF", "WINCH", "INFO", "USR1", "USR2", "RESV", "RTMIN", "NUM34", "NUM35", "NUM36", "NUM37", "NUM38", "NUM39", "NUM40", "NUM41", "NUM42", "NUM43", "NUM44", "NUM45", "NUM46", "NUM47", "MAX", "IOT", "LOST", "URG", "CLD", "IO", "POLL", "PTY", "PWR", "RTMAX", 0'
 sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 6 6 16 20 23 23 23 29 48 '
 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 6, 6, 16, 20, 23, 23, 23, 29, 48, 0'
+sig_size='58'
 signal_t='void'
 sitearch='/opt/perl/lib/site_perl/5.7.0/alpha-dec_osf-thread'
 sitearchexp='/opt/perl/lib/site_perl/5.7.0/alpha-dec_osf-thread'
@@ -724,7 +726,7 @@ socksizetype='int'
 sort='sort'
 spackage='Perl5'
 spitshell='cat'
-src='/m/fs/work/work/permanent/perl/pp4/perl'
+src='.'
 ssizetype='ssize_t'
 startperl='#!/opt/perl/bin/perl'
 startsh='#!/bin/sh'
index 039ed25..9cf1101 100644 (file)
@@ -16,8 +16,8 @@
 
 /*
  * Package name      : perl5
- * Source directory  : /m/fs/work/work/permanent/perl/pp4/perl
- * Configuration time: Thu Dec 21 18:13:27 EET 2000
+ * Source directory  : .
+ * Configuration time: Sun Jan 21 21:13:39 EET 2001
  * Configured by     : jhi
  * Target system     : osf1 alpha.hut.fi v4.0 878 alpha 
  */
  *     This symbol defines the format string used for printing a Perl UV
  *     as an unsigned hexadecimal integer in lowercase abcdef.
  */
+/* UVXf:
+ *     This symbol defines the format string used for printing a Perl UV
+ *     as an unsigned hexadecimal integer in uppercase ABCDEF.
+ */
 /* NVef:
  *     This symbol defines the format string used for printing a Perl NV
  *     using %e-ish floating point format.
 #define        UVuf            "lu"            /**/
 #define        UVof            "lo"            /**/
 #define        UVxf            "lx"            /**/
+#define        UVXf            "lX"            /**/
 #define        NVef            "e"             /**/
 #define        NVff            "f"             /**/
 #define        NVgf            "g"             /**/
  *     The last element is 0, corresponding to the 0 at the end of
  *     the sig_name list.
  */
+/* SIG_SIZE:
+ *     This variable contains the number of elements of the sig_name
+ *     and sig_num arrays, excluding the final NULL entry.
+ */
 #define SIG_NAME "ZERO", "HUP", "INT", "QUIT", "ILL", "TRAP", "ABRT", "EMT", "FPE", "KILL", "BUS", "SEGV", "SYS", "PIPE", "ALRM", "TERM", "IOINT", "STOP", "TSTP", "CONT", "CHLD", "TTIN", "TTOU", "AIO", "XCPU", "XFSZ", "VTALRM", "PROF", "WINCH", "INFO", "USR1", "USR2", "RESV", "RTMIN", "NUM34", "NUM35", "NUM36", "NUM37", "NUM38", "NUM39", "NUM40", "NUM41", "NUM42", "NUM43", "NUM44", "NUM45", "NUM46", "NUM47", "MAX", "IOT", "LOST", "URG", "CLD", "IO", "POLL", "PTY", "PWR", "RTMAX", 0         /**/
 #define SIG_NUM  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 6, 6, 16, 20, 23, 23, 23, 29, 48, 0         /**/
+#define SIG_SIZE 58                    /**/
 
 /* SITEARCH:
  *     This symbol contains the name of the private library for this package.
 #define PERL_XS_APIVERSION "5.7.0"
 #define PERL_PM_APIVERSION "5.005"
 
+/* HAS_SIGPROCMASK:
+ *     This symbol, if defined, indicates that the sigprocmask
+ *     system call is available to examine or change the signal mask
+ *     of the calling process.
+ */
+#define HAS_SIGPROCMASK                /**/
+
 #endif
index 8dd0483..3507332 100644 (file)
@@ -150,18 +150,6 @@ file).
 
 =item *
 
-A message of the form:
-
- shmat() found.
- and it returns (void *).
- *** WHOA THERE!!! ***
-     The recommended value for $d_shmatprototype on this machine was "define"!
-     Keep the recommended value? [y]
-
-is nothing to worry about at all.
-
-=item *
-
 Do not turn on the compiler optimization flag "-O".  There is
 a bug in either the optimizer or perl that causes perl to
 not work correctly when the optimizer is on.
@@ -290,6 +278,40 @@ If you are running V2R6 or earlier then see:
 for an example of how to use the "eval exec" trick to ask the shell to
 have Perl run your scripts on those older releases of Unix System Services.
 
+=head2 Floating point anomalies
+
+There appears to be a bug in the floating point implementation on S/390 
+systems such that calling int() on the product of a number and a small 
+magnitude number is not the same as calling int() on the quotient of 
+that number and a large magnitude number.  For example, in the following 
+Perl code:
+
+    my $x = 100000.0;
+    my $y = int($x * 1e-5) * 1e5; # '0'
+    my $z = int($x / 1e+5) * 1e5;  # '100000'
+    print "\$y is $y and \$z is $z\n"; # $y is 0 and $z is 100000
+
+Although one would expect the quantities $y and $z to be the same and equal 
+to 100000 they will differ and instead will be 0 and 100000 respectively.
+
+The problem can be further examined in a roughly equivalent C program:
+
+    #include <stdio.h>
+    #include <math.h>
+    main()
+    {
+    double r1,r2;
+    double x = 100000.0;
+    double y = 0.0;
+    double z = 0.0;
+    x = 100000.0 * 1e-5;
+    r1 = modf (x,&y);
+    x = 100000.0 / 1e+5;
+    r2 = modf (x,&z);
+    printf("y is %e and z is %e\n",y*1e5,z*1e5);
+    /* y is 0.000000e+00 and z is 1.000000e+05 (with c89) */
+    }
+
 =head2 Modules and Extensions
 
 Pure pure (that is non xs) modules may be installed via the usual:
@@ -320,6 +342,7 @@ xs based extensions.
 David Fiander and Peter Prymmer with thanks to Dennis Longnecker
 and William Raffloer for valuable reports, LPAR and PTF feedback.
 Thanks to Mike MacIsaac and Egon Terwedow for SG24-5944-00.
+Thanks to Ignasi Roca for pointing out the floating point problems.
 
 =head1 SEE ALSO
 
@@ -344,9 +367,14 @@ To subscribe, send a message of:
 
     subscribe perl-mvs
 
-to majordomo@perl.org.  There is a web archive of the mailing list at:
+to majordomo@perl.org.   See also:
+
+    http://lists.perl.org/showlist.cgi?name=perl-mvs
+
+There are web archives of the mailing list at:
 
     http://www.xray.mpe.mpg.de/mailing-lists/perl-mvs/
+    http://archive.develooper.com/perl-mvs@perl.org/
 
 =head1 HISTORY
 
@@ -357,5 +385,7 @@ This document was podified for the 5.005_03 release of Perl 11 March 1999.
 
 Updated 12 November 2000 for the 5.7.1 release of Perl.
 
+Updated 15 January 2001 for the 5.7.1 release of Perl.
+
 =cut
 
index 3ae711d..a0128fd 100644 (file)
@@ -134,6 +134,22 @@ instead:
     eval 'exec /usr/local/bin/perl -S $0 ${1+"$@"}'
         if $running_under_some_shell;
 
+=head2 Floating point anomalies
+
+There appears to be a bug in the floating point implementation on BS2000 POSIX
+systems such that calling int() on the product of a number and a small
+magnitude number is not the same as calling int() on the quotient of
+that number and a large magnitude number.  For example, in the following
+Perl code:
+
+    my $x = 100000.0;
+    my $y = int($x * 1e-5) * 1e5; # '0'
+    my $z = int($x / 1e+5) * 1e5;  # '100000'
+    print "\$y is $y and \$z is $z\n"; # $y is 0 and $z is 100000
+
+Although one would expect the quantities $y and $z to be the same and equal
+to 100000 they will differ and instead will be 0 and 100000 respectively.
+
 =head1 AUTHORS
 
 Thomas Dorner
index f6d970f..8378adc 100644 (file)
@@ -87,23 +87,25 @@ You may also want to have on hand:
 =item 1  GUNZIP/GZIP.EXE for VMS 
 
 A de-compressor for *.gz and *.tgz files available from a number 
-of web/ftp sites.
+of web/ftp sites and is distributed on the OpenVMS Freeware CD-ROM 
+from Compaq.
 
     http://www.fsf.org/order/ftp.html
     ftp://ftp.uu.net/archive/systems/gnu/diffutils*.tar.gz
     ftp://gatekeeper.dec.com/pub/GNU/diffutils*.tar.gz
     ftp://ftp.gnu.org/pub/gnu/diffutils*.tar.gz 
-    http://www.openvms.digital.com/cd/GZIP/
-    ftp://ftp.digital.com/pub/VMS/
+    http://www.openvms.compaq.com/freeware/GZIP/
+    ftp://ftp.compaq.com/pub/VMS/
 
 =item 2  VMS TAR 
 
 For reading and writing unix tape archives (*.tar files).  Vmstar is also 
-available from a number of web/ftp sites.
+available from a number of web/ftp sites and is distributed on the OpenVMS
+Freeware CD-ROM from Compaq.
 
     ftp://ftp.lp.se/vms/
-    http://www.openvms.digital.com/cd/VMSTAR/
-    ftp://ftp.digital.com/pub/VMS/
+    http://www.openvms.compaq.com/freeware/VMSTAR/
+    ftp://ftp.compaq.com/pub/VMS/
 
 =item 3  UNZIP.EXE for VMS
 
@@ -111,9 +113,9 @@ A combination decompressor and archive reader/writer for *.zip files.
 Unzip is available from a number of web/ftp sites.
 
     http://www.cdrom.com/pub/infozip/UnZip.html
-    http://www.openvms.digital.com/cd/INFO-ZIP/
-    ftp://ftp.digital.com/pub/VMS/
-    ftp://ftp.openvms.digital.com/
+    http://www.openvms.compaq.com/freeware/INFO-ZIP/
+    ftp://ftp.compaq.com/pub/VMS/
+    ftp://ftp.openvms.compaq.com/
     ftp://ftp.madgoat.com/madgoat/
     ftp://ftp.wku.edu/vms/
 
@@ -131,10 +133,10 @@ library on VMS.  Most and slang are available from:
 
 Please note that UNZIP and GUNZIP are not the same thing (they work with
 different formats).  Many of the useful files from CPAN (the Comprehensive
-Perl Archive Network) are in *.tar.gz format (this includes copies of the
-source code for perl as well as modules and scripts that you may wish to
-add later) hence you probably want to have GUNZIP.EXE and VMSTAR.EXE on
-your VMS machine.
+Perl Archive Network) are in *.tar.gz or *.tgz format (this includes copies 
+of the source code for perl as well as modules and scripts that you may 
+wish to add later) hence you probably want to have GUNZIP.EXE and 
+VMSTAR.EXE on your VMS machine.
 
 If you want to include socket support, you'll need a TCP/IP stack and either
 DEC C, or socket libraries.  See the "Socket Support (optional)" topic 
@@ -511,7 +513,7 @@ though the call specified that the change should not persist after
 Perl exited.  This is fixed by DEC CSC patch ALPACRT04_061 or later.
 See also:
 
-    http://ftp.service.digital.com/patches/.new/openvms.html
+    http://ftp.service.compaq.com/patches/.new/openvms.html
 
 =back
 
index 8dcb9be..67b0429 100644 (file)
--- a/Todo-5.6
+++ b/Todo-5.6
@@ -168,6 +168,7 @@ Miscellaneous
     turn Cwd into an XS module?  (Configure already probes for getcwd())
     mmap for speeding up input? (Configure already probes for the mmap family)
     sendmsg, recvmsg? (Configure doesn't probe for these but the units exist)
+    sockatmark?
     setitimer, getitimer? (the metaconfig units exist)
 
 Ongoing
index 8d77620..4b00e14 100644 (file)
@@ -379,7 +379,6 @@ op_private  PL_op->op_private                       U8
 op_first       cUNOP->op_first                         opindex
 op_last                cBINOP->op_last                         opindex
 op_other       cLOGOP->op_other                        opindex
-op_children    cLISTOP->op_children                    U32
 op_pmreplroot  cPMOP->op_pmreplroot                    opindex
 op_pmreplrootgv        *(SV**)&cPMOP->op_pmreplroot            svindex
 op_pmreplstart cPMOP->op_pmreplstart                   opindex
index 596faf9..8a71dfe 100644 (file)
@@ -2834,6 +2834,10 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  *     This symbol defines the format string used for printing a Perl UV
  *     as an unsigned hexadecimal integer in lowercase abcdef.
  */
+/* UVXf:
+ *     This symbol defines the format string used for printing a Perl UV
+ *     as an unsigned hexadecimal integer in uppercase ABCDEF.
+ */
 /* NVef:
  *     This symbol defines the format string used for printing a Perl NV
  *     using %e-ish floating point format.
@@ -2850,6 +2854,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #define        UVuf            $uvuformat              /**/
 #define        UVof            $uvoformat              /**/
 #define        UVxf            $uvxformat              /**/
+#define        UVXf            $uvXUformat             /**/
 #define        NVef            $nveformat              /**/
 #define        NVff            $nvfformat              /**/
 #define        NVgf            $nvgformat              /**/
@@ -2952,8 +2957,13 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  *     The last element is 0, corresponding to the 0 at the end of
  *     the sig_name list.
  */
+/* SIG_SIZE:
+ *     This variable contains the number of elements of the sig_name
+ *     and sig_num arrays, excluding the final NULL entry.
+ */
 #define SIG_NAME $sig_name_init                /**/
 #define SIG_NUM  $sig_num_init         /**/
+#define SIG_SIZE $sig_size                     /**/
 
 /* SITEARCH:
  *     This symbol contains the name of the private library for this package.
@@ -3257,5 +3267,12 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #define PERL_XS_APIVERSION "$xs_apiversion"
 #define PERL_PM_APIVERSION "$pm_apiversion"
 
+/* HAS_SIGPROCMASK:
+ *     This symbol, if defined, indicates that the sigprocmask
+ *     system call is available to examine or change the signal mask
+ *     of the calling process.
+ */
+#$d_sigprocmask HAS_SIGPROCMASK                /**/
+
 #endif
 !GROK!THIS!
index 2efd8bd..29339ec 100644 (file)
@@ -1224,12 +1224,20 @@ $     line = F$EDIT(line,"COMPRESS, TRIM")
 $     api_subversion = F$ELEMENT(2," ",line)
 $     got_api_subversion = "true"
 $   ENDIF
-$   IF (.NOT.got_patch).OR.(.NOT.got_sub) THEN GOTO Patchlevel_h_loop
+$   IF (.NOT. got_patch) .OR. -
+       (.NOT. got_sub) .OR. - 
+       (.NOT. got_api_revision) .OR. -
+       (.NOT. got_api_version) .OR. -
+       (.NOT. got_api_subversion) -
+      THEN GOTO Patchlevel_h_loop
 $Close_patch:
 $   CLOSE CONFIG
 $ ELSE
 $   patchlevel="0"
 $   subversion="0"
+$   api_revision="0"
+$   api_version="0"
+$   api_subversion="0"
 $ ENDIF
 $ IF (F$STRING(subversion) .NES. "0")
 $ THEN
@@ -2029,7 +2037,7 @@ $!: compute shared library extension
 $!: Looking for optional libraries
 $!: see if nm is to be used to determine whether a symbol is defined or not
 $!: get list of predefined functions in a handy place
-$!: see if we have sigaction
+$!: see if we have sigaction or sigprocmask
 $!: see whether socketshr exists
 $ IF (F$SEARCH(F$PARSE("SocketShr","Sys$Share:.Exe")).NES."")
 $ THEN
@@ -4494,6 +4502,7 @@ $   d_bcmp="define"
 $   d_gettimeod="define"
 $   d_uname="define"
 $   d_sigaction="define"
+$   d_sigprocmask="define"
 $   d_truncate="define"
 $   d_wait4="define"
 $   d_index="define"
@@ -4506,6 +4515,7 @@ $   sig_name_init = psnwc1 + psnwc2 + psnwc3
 $   sig_num="0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 64"",0"
 $   sig_num_init="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,6,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,64,0"
 $!   perl_sig_num_with_commas=sig_num_init
+$   sig_size="36"
 $   uidtype="uid_t"
 $   d_pathconf="define"
 $   d_fpathconf="define"
@@ -4517,6 +4527,7 @@ $   d_gettimeod="undef"
 $   d_bcmp="undef"
 $   d_uname="undef"
 $   d_sigaction="undef"
+$   d_sigprocmask="undef"
 $   d_truncate="undef"
 $   d_wait4="undef"
 $   d_index="undef"
@@ -4527,6 +4538,7 @@ $   sig_name_init = psnwc1 + psnwc2
 $   sig_num="0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 6 16 17"",0"
 $   sig_num_init="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,6,16,17,0"
 $!   perl_sig_num_with_commas=sig_num_init
+$   sig_size="19"
 $   uidtype="unsigned int"
 $   d_pathconf="undef"
 $   d_fpathconf="undef"
@@ -4783,6 +4795,7 @@ $ ivdformat="""ld"""
 $ uvuformat="""lu"""
 $ uvoformat="""lo"""
 $ uvxformat="""lx"""
+$ uvxuformat="""lX"""
 $! uselongdouble?
 $ nveformat="""e"""
 $ nvfformat="""f"""
@@ -4805,9 +4818,11 @@ $ ENDIF
 $ IF use_vmsdebug_perl
 $ THEN
 $   optimize="/Debug/NoOpt"
+$   ldflags="/Debug/Trace/Map"
 $   dbgprefix = "DBG"
 $ ELSE
 $   optimize= ""
+$   ldflags="/NoTrace/NoMap"
 $   dbgprefix = ""
 $ ENDIF
 $!
@@ -4832,8 +4847,11 @@ $ WC ""
 $ WC "CONFIG='true'"
 $ WC "Makefile_SH='" + Makefile_SH + "'"
 $ WC "Mcc='" + Mcc + "'"
-$! WC "PERL_SUBVERSION='" + subversion + "'" ! VMS specific to descrip_mms.template
-$ WC "PERL_VERSION='" + patchlevel + "'" ! VMS specific to descrip_mms.template
+$ WC "PERL_REVISION=" + revision
+$ WC "PERL_VERSION=" + patchlevel
+$ WC "PERL_SUBVERSION=" + subversion
+$ WC "PERL_API_VERSION=" + api_version
+$ WC "PERL_API_SUBVERSION=" + api_subversion
 $ WC "alignbytes='" + alignbytes + "'"
 $ WC "aphostname='" + "'"
 $ WC "ar='" + "'"
@@ -5098,6 +5116,7 @@ $ WC "d_sfio='undef'"
 $ WC "d_shm='undef'"
 $ WC "d_shmatprototype='undef'"
 $ WC "d_sigaction='" + d_sigaction + "'"
+$ WC "d_sigprocmask='" + d_sigprocmask + "'"
 $ WC "d_sigsetjmp='" + d_sigsetjmp + "'"
 $ WC "d_socket='" + d_socket + "'"
 $ WC "d_socklen_t='" + d_socklen_t + "'"
@@ -5290,7 +5309,7 @@ $ WC "ivtype='" + ivtype + "'"
 $ WC "known_extensions='" + known_extensions + "'"
 $ WC "ld='" + ld + "'"
 $ WC "lddlflags='/Share'"
-$ WC "ldflags='/NoTrace/NoMap'"
+$ WC "ldflags='" + ldflags + "'"
 $ WC "lib_ext='" + lib_ext + "'"
 $ WC "libc='" + libc + "'"
 $ WC "libpth='/sys$share /sys$library'"
@@ -5380,6 +5399,7 @@ $ WC/symbol tmp
 $ DELETE/SYMBOL tmp
 $ WC "sig_num='" + sig_num + "'"
 $ WC "sig_num_init='" + sig_num_init + "'"
+$ WC "sig_size='" + sig_size + "'"
 $ WC "signal_t='" + signal_t + "'"
 $ WC "sitearch='" + sitearch + "'"
 $ WC "sitearchexp='" + sitearchexp + "'"
@@ -5437,6 +5457,7 @@ $ WC "uvsize='" + uvsize + "'"
 $ WC "uvtype='" + uvtype + "'"
 $ WC "uvuformat='" + uvuformat + "'"
 $ WC "uvxformat='" + uvxformat + "'"
+$ WC "uvxuformat='" + uvxuformat + "'"
 $ WC "vendorarchexp='" + "'"
 $ WC "vendorlib_stem='" + "'"
 $ WC "vendorlibexp='" + "'"
diff --git a/doio.c b/doio.c
index 2bccc73..6056ea7 100644 (file)
--- a/doio.c
+++ b/doio.c
@@ -55,8 +55,8 @@ bool
 Perl_do_open(pTHX_ GV *gv, register char *name, I32 len, int as_raw,
             int rawmode, int rawperm, PerlIO *supplied_fp)
 {
-    return do_open9(gv, name, len, as_raw, rawmode, rawperm,
-                   supplied_fp, Nullsv, 0);
+    return do_openn(gv, name, len, as_raw, rawmode, rawperm,
+                   supplied_fp, (SV **) NULL, 0);
 }
 
 bool
@@ -64,6 +64,15 @@ Perl_do_open9(pTHX_ GV *gv, register char *name, I32 len, int as_raw,
              int rawmode, int rawperm, PerlIO *supplied_fp, SV *svs,
              I32 num_svs)
 {
+    return do_openn(gv, name, len, as_raw, rawmode, rawperm,
+                   supplied_fp, &svs, 1);
+}
+
+bool
+Perl_do_openn(pTHX_ GV *gv, register char *name, I32 len, int as_raw,
+             int rawmode, int rawperm, PerlIO *supplied_fp, SV **svp,
+             I32 num_svs)
+{
     register IO *io = GvIOn(gv);
     PerlIO *saveifp = Nullfp;
     PerlIO *saveofp = Nullfp;
@@ -77,6 +86,7 @@ Perl_do_open9(pTHX_ GV *gv, register char *name, I32 len, int as_raw,
     char *type  = NULL;
     char *deftype = NULL;
     char mode[4];              /* stdio file mode ("r\0", "rb\0", "r+b\0" etc.) */
+    SV *svs = (num_svs) ? *svp : Nullsv;
 
     Zero(mode,sizeof(mode),char);
     PL_forkprocess = 1;                /* assume true if no fork */
@@ -529,6 +539,7 @@ Perl_do_open9(pTHX_ GV *gv, register char *name, I32 len, int as_raw,
     if (type) {
        while (isSPACE(*type)) type++;
        if (*type) {
+          errno = 0;
           if (PerlIO_apply_layers(aTHX_ IoIFP(io),mode,type) != 0) {
                goto say_false;
           }
diff --git a/doop.c b/doop.c
index 3b0ddc1..1495953 100644 (file)
--- a/doop.c
+++ b/doop.c
@@ -29,6 +29,7 @@ S_do_trans_simple(pTHX_ SV *sv)
     U8 *send;
     U8 *dstart;
     I32 matches = 0;
+    I32 grows = PL_op->op_private & OPpTRANS_GROWS;
     STRLEN len;
     short *tbl;
     I32 ch;
@@ -55,27 +56,36 @@ S_do_trans_simple(pTHX_ SV *sv)
     }
 
     /* Allow for expansion: $_="a".chr(400); tr/a/\xFE/, FE needs encoding */
-    Newz(0, d, len*2+1, U8);
+    if (grows)
+       New(0, d, len*2+1, U8);
+    else
+       d = s;
     dstart = d;
     while (s < send) {
         STRLEN ulen;
-        short c;
+        UV c;
 
-        ulen = 1;
         /* Need to check this, otherwise 128..255 won't match */
        c = utf8_to_uv(s, send - s, &ulen, 0);
-        if (c < 0x100 && (ch = tbl[(short)c]) >= 0) {
+        if (c < 0x100 && (ch = tbl[c]) >= 0) {
             matches++;
            d = uv_to_utf8(d, ch);
             s += ulen;
         }
        else { /* No match -> copy */
-            while (ulen--)
-                *d++ = *s++;
+           Copy(s, d, ulen, U8);
+           d += ulen;
+           s += ulen;
         }
     }
-    *d = '\0';
-    sv_setpvn(sv, (char*)dstart, d - dstart);
+    if (grows) {
+       sv_setpvn(sv, (char*)dstart, d - dstart);
+       Safefree(dstart);
+    }
+    else {
+       *d = '\0';
+       SvCUR_set(sv, d - dstart);
+    }
     SvUTF8_on(sv);
     SvSETMAGIC(sv);
     return matches;
@@ -124,6 +134,7 @@ S_do_trans_complex(pTHX_ SV *sv)/* SPC - NOT OK */
     U8 *dstart;
     I32 isutf8;
     I32 matches = 0;
+    I32 grows = PL_op->op_private & OPpTRANS_GROWS;
     STRLEN len;
     short *tbl;
     I32 ch;
@@ -170,7 +181,10 @@ S_do_trans_complex(pTHX_ SV *sv)/* SPC - NOT OK */
        SvCUR_set(sv, d - dstart);
     }
     else { /* isutf8 */
-       Newz(0, d, len*2+1, U8);
+       if (grows)
+           New(0, d, len*2+1, U8);
+       else
+           d = s;
        dstart = d;
 
        if (PL_op->op_private & OPpTRANS_SQUASH) {
@@ -180,8 +194,10 @@ S_do_trans_complex(pTHX_ SV *sv)/* SPC - NOT OK */
                STRLEN len;
                UV comp = utf8_to_uv_simple(s, &len);
 
-               if (comp > 0xff)
-                   d = uv_to_utf8(d, comp);    /* always unmapped */
+               if (comp > 0xff) {      /* always unmapped */   
+                   Copy(s, d, len, U8);
+                   d += len;
+               }
                else if ((ch = tbl[comp]) >= 0) {
                    matches++;
                    if (ch != pch) {
@@ -191,8 +207,10 @@ S_do_trans_complex(pTHX_ SV *sv)/* SPC - NOT OK */
                    s += len;
                    continue;
                }
-               else if (ch == -1)      /* -1 is unmapped character */
-                   d = uv_to_utf8(d, comp);
+               else if (ch == -1) {    /* -1 is unmapped character */
+                   Copy(s, d, len, U8);
+                   d += len;
+               }
                else if (ch == -2)      /* -2 is delete character */
                    matches++;
                s += len;
@@ -203,22 +221,31 @@ S_do_trans_complex(pTHX_ SV *sv)/* SPC - NOT OK */
            while (s < send) {
                STRLEN len;
                UV comp = utf8_to_uv_simple(s, &len);
-               if (comp > 0xff)
-                   d = uv_to_utf8(d, comp);    /* always unmapped */
+               if (comp > 0xff) {      /* always unmapped */
+                   Copy(s, d, len, U8);
+                   d += len;
+               }
                else if ((ch = tbl[comp]) >= 0) {
                    d = uv_to_utf8(d, ch);
                    matches++;
                }
                else if (ch == -1) {    /* -1 is unmapped character */
-                   d = uv_to_utf8(d, comp);
+                   Copy(s, d, len, U8);
+                   d += len;
                }
                else if (ch == -2)      /* -2 is delete character */
                    matches++;
                s += len;
            }
        }
-       *d = '\0';
-       sv_setpvn(sv, (char*)dstart, d - dstart);
+       if (grows) {
+           sv_setpvn(sv, (char*)dstart, d - dstart);
+           Safefree(dstart);
+       }
+       else {
+           *d = '\0';
+           SvCUR_set(sv, d - dstart);
+       }
        SvUTF8_on(sv);
     }
     SvSETMAGIC(sv);
@@ -234,6 +261,7 @@ S_do_trans_simple_utf8(pTHX_ SV *sv)/* SPC - OK */
     U8 *start;
     U8 *dstart, *dend;
     I32 matches = 0;
+    I32 grows = PL_op->op_private & OPpTRANS_GROWS;
     STRLEN len;
 
     SV* rv = (SV*)cSVOP->op_sv;
@@ -263,10 +291,16 @@ S_do_trans_simple_utf8(pTHX_ SV *sv)/* SPC - OK */
     if (svp)
        final = SvUV(*svp);
 
-    /* d needs to be bigger than s, in case e.g. upgrading is required */
-    New(0, d, len*3+UTF8_MAXLEN, U8);
-    dend = d + len * 3;
-    dstart = d;
+    if (grows) {
+       /* d needs to be bigger than s, in case e.g. upgrading is required */
+       New(0, d, len*3+UTF8_MAXLEN, U8);
+       dend = d + len * 3;
+       dstart = d;
+    }
+    else {
+       dstart = d = s;
+       dend = d + len;
+    }
 
     while (s < send) {
        if ((uv = swash_fetch(rv, s)) < none) {
@@ -276,8 +310,9 @@ S_do_trans_simple_utf8(pTHX_ SV *sv)/* SPC - OK */
        }
        else if (uv == none) {
            int i = UTF8SKIP(s);
-           while(i--)
-               *d++ = *s++;
+           Copy(s, d, i, U8);
+           d += i;
+           s += i;
        }
        else if (uv == extra) {
            int i = UTF8SKIP(s);
@@ -288,20 +323,28 @@ S_do_trans_simple_utf8(pTHX_ SV *sv)/* SPC - OK */
        else
            s += UTF8SKIP(s);
 
-       if (d >= dend) {
+       if (d > dend) {
            STRLEN clen = d - dstart;
            STRLEN nlen = dend - dstart + len + UTF8_MAXLEN;
+           if (!grows)
+               Perl_croak(aTHX_ "panic: do_trans_complex_utf8");
            Renew(dstart, nlen+UTF8_MAXLEN, U8);
            d = dstart + clen;
            dend = dstart + nlen;
        }
     }
-    *d = '\0';
-    sv_setpvn(sv, (char*)dstart, d - dstart);
+    if (grows || hibit) {
+       sv_setpvn(sv, (char*)dstart, d - dstart);
+       Safefree(dstart);
+       if (grows && hibit)
+           Safefree(start);
+    }
+    else {
+       *d = '\0';
+       SvCUR_set(sv, d - dstart);
+    }
     SvSETMAGIC(sv);
     SvUTF8_on(sv);
-    if (hibit)
-       Safefree(start);
     if (!isutf8 && !(PL_hints & HINT_UTF8))
        sv_utf8_downgrade(sv, TRUE);
 
@@ -354,6 +397,7 @@ S_do_trans_complex_utf8(pTHX_ SV *sv) /* SPC - NOT OK */
     I32 matches = 0;
     I32 squash   = PL_op->op_private & OPpTRANS_SQUASH;
     I32 del      = PL_op->op_private & OPpTRANS_DELETE;
+    I32 grows    = PL_op->op_private & OPpTRANS_GROWS;
     SV* rv = (SV*)cSVOP->op_sv;
     HV* hv = (HV*)SvRV(rv);
     SV** svp = hv_fetch(hv, "NONE", 4, FALSE);
@@ -383,17 +427,27 @@ S_do_trans_complex_utf8(pTHX_ SV *sv) /* SPC - NOT OK */
     if (svp)
        final = SvUV(*svp);
 
-    New(0, d, len*3+UTF8_MAXLEN, U8);
-    dend = d + len * 3;
-    dstart = d;
+    if (grows) {
+       /* d needs to be bigger than s, in case e.g. upgrading is required */
+       New(0, d, len*3+UTF8_MAXLEN, U8);
+       dend = d + len * 3;
+       dstart = d;
+    }
+    else {
+       dstart = d = s;
+       dend = d + len;
+    }
 
     if (squash) {
        UV puv = 0xfeedface;
        while (s < send) {
            uv = swash_fetch(rv, s);
            
-           if (d >= dend) {
-               STRLEN clen = d - dstart, nlen = dend - dstart + len;
+           if (d > dend) {
+               STRLEN clen = d - dstart;
+               STRLEN nlen = dend - dstart + len + UTF8_MAXLEN;
+               if (!grows)
+                   Perl_croak(aTHX_ "panic: do_trans_complex_utf8");
                Renew(dstart, nlen+UTF8_MAXLEN, U8);
                d = dstart + clen;
                dend = dstart + nlen;
@@ -409,8 +463,9 @@ S_do_trans_complex_utf8(pTHX_ SV *sv) /* SPC - NOT OK */
            }
            else if (uv == none) {      /* "none" is unmapped character */
                int i = UTF8SKIP(s);
-               while(i--)
-                   *d++ = *s++;
+               Copy(s, d, i, U8);
+               d += i;
+               s += i;
                puv = 0xfeedface;
                continue;
            }
@@ -430,8 +485,11 @@ S_do_trans_complex_utf8(pTHX_ SV *sv) /* SPC - NOT OK */
     else {
        while (s < send) {
            uv = swash_fetch(rv, s);
-           if (d >= dend) {
-               STRLEN clen = d - dstart, nlen = dend - dstart + len;
+           if (d > dend) {
+               STRLEN clen = d - dstart;
+               STRLEN nlen = dend - dstart + len + UTF8_MAXLEN;
+               if (!grows)
+                   Perl_croak(aTHX_ "panic: do_trans_complex_utf8");
                Renew(dstart, nlen+UTF8_MAXLEN, U8);
                d = dstart + clen;
                dend = dstart + nlen;
@@ -444,8 +502,9 @@ S_do_trans_complex_utf8(pTHX_ SV *sv) /* SPC - NOT OK */
            }
            else if (uv == none) {      /* "none" is unmapped character */
                int i = UTF8SKIP(s);
-               while(i--)
-                   *d++ = *s++;
+               Copy(s, d, i, U8);
+               d += i;
+               s += i;
                continue;
            }
            else if (uv == extra && !del) {
@@ -458,11 +517,17 @@ S_do_trans_complex_utf8(pTHX_ SV *sv) /* SPC - NOT OK */
            s += UTF8SKIP(s);
        }
     }
-    *d = '\0';
-    sv_setpvn(sv, (char*)dstart, d - dstart);
+    if (grows || hibit) {
+       sv_setpvn(sv, (char*)dstart, d - dstart);
+       Safefree(dstart);
+       if (grows && hibit)
+           Safefree(start);
+    }
+    else {
+       *d = '\0';
+       SvCUR_set(sv, d - dstart);
+    }
     SvUTF8_on(sv);
-    if (hibit)
-       Safefree(start);
     if (!isutf8 && !(PL_hints & HINT_UTF8))
        sv_utf8_downgrade(sv, TRUE);
     SvSETMAGIC(sv);
@@ -1141,7 +1206,7 @@ Perl_do_kv(pTHX)
        dokeys = dovalues = TRUE;
 
     if (!hv) {
-       if (PL_op->op_flags & OPf_MOD) {        /* lvalue */
+       if (PL_op->op_flags & OPf_MOD || LVRET) {       /* lvalue */
            dTARGET;            /* make sure to clear its target here */
            if (SvTYPE(TARG) == SVt_PVLV)
                LvTARG(TARG) = Nullsv;
@@ -1160,7 +1225,7 @@ Perl_do_kv(pTHX)
        IV i;
        dTARGET;
 
-       if (PL_op->op_flags & OPf_MOD) {        /* lvalue */
+       if (PL_op->op_flags & OPf_MOD || LVRET) {       /* lvalue */
            if (SvTYPE(TARG) < SVt_PVLV) {
                sv_upgrade(TARG, SVt_PVLV);
                sv_magic(TARG, Nullsv, 'k', Nullch, 0);
diff --git a/embed.h b/embed.h
index 414a642..790f43b 100644 (file)
--- a/embed.h
+++ b/embed.h
 #define do_kv                  Perl_do_kv
 #define do_open                        Perl_do_open
 #define do_open9               Perl_do_open9
+#define do_openn               Perl_do_openn
 #define do_pipe                        Perl_do_pipe
 #define do_print               Perl_do_print
 #define do_readline            Perl_do_readline
 #define io_close               Perl_io_close
 #define invert                 Perl_invert
 #define is_gv_magical          Perl_is_gv_magical
+#define is_lvalue_sub          Perl_is_lvalue_sub
 #define is_uni_alnum           Perl_is_uni_alnum
 #define is_uni_alnumc          Perl_is_uni_alnumc
 #define is_uni_idfirst         Perl_is_uni_idfirst
 #define magic_clearsig         Perl_magic_clearsig
 #define magic_existspack       Perl_magic_existspack
 #define magic_freeregexp       Perl_magic_freeregexp
+#define magic_freeovrld                Perl_magic_freeovrld
 #define magic_get              Perl_magic_get
 #define magic_getarylen                Perl_magic_getarylen
 #define magic_getdefelem       Perl_magic_getdefelem
 #define call_method            Perl_call_method
 #define call_pv                        Perl_call_pv
 #define call_sv                        Perl_call_sv
+#define despatch_signals       Perl_despatch_signals
 #define eval_pv                        Perl_eval_pv
 #define eval_sv                        Perl_eval_sv
 #define get_sv                 Perl_get_sv
 #define yyerror                        Perl_yyerror
 #ifdef USE_PURE_BISON
 #define yylex_r                        Perl_yylex_r
-#define yylex                  Perl_yylex
-#else
-#define yylex                  Perl_yylex
 #endif
+#define yylex                  Perl_yylex
 #define yyparse                        Perl_yyparse
 #define yywarn                 Perl_yywarn
 #if defined(MYMALLOC)
 #define scalarboolean          S_scalarboolean
 #define too_few_arguments      S_too_few_arguments
 #define too_many_arguments     S_too_many_arguments
+#define trlist_upgrade         S_trlist_upgrade
 #define op_clear               S_op_clear
 #define null                   S_null
 #define pad_addlex             S_pad_addlex
 #define sv_2inuv_non_preserve  S_sv_2inuv_non_preserve
 #define sv_2iuv_non_preserve   S_sv_2iuv_non_preserve
 #  endif
+#define expect_number          S_expect_number
 #endif
 #if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
 #define check_uni              S_check_uni
 #define ck_open                        Perl_ck_open
 #define ck_repeat              Perl_ck_repeat
 #define ck_require             Perl_ck_require
+#define ck_return              Perl_ck_return
 #define ck_rfun                        Perl_ck_rfun
 #define ck_rvconst             Perl_ck_rvconst
 #define ck_sassign             Perl_ck_sassign
 #define do_kv()                        Perl_do_kv(aTHX)
 #define do_open(a,b,c,d,e,f,g) Perl_do_open(aTHX_ a,b,c,d,e,f,g)
 #define do_open9(a,b,c,d,e,f,g,h,i)    Perl_do_open9(aTHX_ a,b,c,d,e,f,g,h,i)
+#define do_openn(a,b,c,d,e,f,g,h,i)    Perl_do_openn(aTHX_ a,b,c,d,e,f,g,h,i)
 #define do_pipe(a,b,c)         Perl_do_pipe(aTHX_ a,b,c)
 #define do_print(a,b)          Perl_do_print(aTHX_ a,b)
 #define do_readline()          Perl_do_readline(aTHX)
 #define io_close(a,b)          Perl_io_close(aTHX_ a,b)
 #define invert(a)              Perl_invert(aTHX_ a)
 #define is_gv_magical(a,b,c)   Perl_is_gv_magical(aTHX_ a,b,c)
+#define is_lvalue_sub()                Perl_is_lvalue_sub(aTHX)
 #define is_uni_alnum(a)                Perl_is_uni_alnum(aTHX_ a)
 #define is_uni_alnumc(a)       Perl_is_uni_alnumc(aTHX_ a)
 #define is_uni_idfirst(a)      Perl_is_uni_idfirst(aTHX_ a)
 #define magic_clearsig(a,b)    Perl_magic_clearsig(aTHX_ a,b)
 #define magic_existspack(a,b)  Perl_magic_existspack(aTHX_ a,b)
 #define magic_freeregexp(a,b)  Perl_magic_freeregexp(aTHX_ a,b)
+#define magic_freeovrld(a,b)   Perl_magic_freeovrld(aTHX_ a,b)
 #define magic_get(a,b)         Perl_magic_get(aTHX_ a,b)
 #define magic_getarylen(a,b)   Perl_magic_getarylen(aTHX_ a,b)
 #define magic_getdefelem(a,b)  Perl_magic_getdefelem(aTHX_ a,b)
 #define call_method(a,b)       Perl_call_method(aTHX_ a,b)
 #define call_pv(a,b)           Perl_call_pv(aTHX_ a,b)
 #define call_sv(a,b)           Perl_call_sv(aTHX_ a,b)
+#define despatch_signals()     Perl_despatch_signals(aTHX)
 #define eval_pv(a,b)           Perl_eval_pv(aTHX_ a,b)
 #define eval_sv(a,b)           Perl_eval_sv(aTHX_ a,b)
 #define get_sv(a,b)            Perl_get_sv(aTHX_ a,b)
 #define yyerror(a)             Perl_yyerror(aTHX_ a)
 #ifdef USE_PURE_BISON
 #define yylex_r(a,b)           Perl_yylex_r(aTHX_ a,b)
-#define yylex(a,b)             Perl_yylex(aTHX_ a,b)
-#else
-#define yylex()                        Perl_yylex(aTHX)
 #endif
+#define yylex()                        Perl_yylex(aTHX)
 #define yyparse()              Perl_yyparse(aTHX)
 #define yywarn(a)              Perl_yywarn(aTHX_ a)
 #if defined(MYMALLOC)
 #define scalarboolean(a)       S_scalarboolean(aTHX_ a)
 #define too_few_arguments(a,b) S_too_few_arguments(aTHX_ a,b)
 #define too_many_arguments(a,b)        S_too_many_arguments(aTHX_ a,b)
+#define trlist_upgrade(a,b)    S_trlist_upgrade(aTHX_ a,b)
 #define op_clear(a)            S_op_clear(aTHX_ a)
 #define null(a)                        S_null(aTHX_ a)
 #define pad_addlex(a)          S_pad_addlex(aTHX_ a)
 #define sv_2inuv_non_preserve(a,b)     S_sv_2inuv_non_preserve(aTHX_ a,b)
 #define sv_2iuv_non_preserve(a,b)      S_sv_2iuv_non_preserve(aTHX_ a,b)
 #  endif
+#define expect_number(a)       S_expect_number(aTHX_ a)
 #endif
 #if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
 #define check_uni()            S_check_uni(aTHX)
 #define ck_open(a)             Perl_ck_open(aTHX_ a)
 #define ck_repeat(a)           Perl_ck_repeat(aTHX_ a)
 #define ck_require(a)          Perl_ck_require(aTHX_ a)
+#define ck_return(a)           Perl_ck_return(aTHX_ a)
 #define ck_rfun(a)             Perl_ck_rfun(aTHX_ a)
 #define ck_rvconst(a)          Perl_ck_rvconst(aTHX_ a)
 #define ck_sassign(a)          Perl_ck_sassign(aTHX_ a)
 #define do_open                        Perl_do_open
 #define Perl_do_open9          CPerlObj::Perl_do_open9
 #define do_open9               Perl_do_open9
+#define Perl_do_openn          CPerlObj::Perl_do_openn
+#define do_openn               Perl_do_openn
 #define Perl_do_pipe           CPerlObj::Perl_do_pipe
 #define do_pipe                        Perl_do_pipe
 #define Perl_do_print          CPerlObj::Perl_do_print
 #define invert                 Perl_invert
 #define Perl_is_gv_magical     CPerlObj::Perl_is_gv_magical
 #define is_gv_magical          Perl_is_gv_magical
+#define Perl_is_lvalue_sub     CPerlObj::Perl_is_lvalue_sub
+#define is_lvalue_sub          Perl_is_lvalue_sub
 #define Perl_is_uni_alnum      CPerlObj::Perl_is_uni_alnum
 #define is_uni_alnum           Perl_is_uni_alnum
 #define Perl_is_uni_alnumc     CPerlObj::Perl_is_uni_alnumc
 #define magic_existspack       Perl_magic_existspack
 #define Perl_magic_freeregexp  CPerlObj::Perl_magic_freeregexp
 #define magic_freeregexp       Perl_magic_freeregexp
+#define Perl_magic_freeovrld   CPerlObj::Perl_magic_freeovrld
+#define magic_freeovrld                Perl_magic_freeovrld
 #define Perl_magic_get         CPerlObj::Perl_magic_get
 #define magic_get              Perl_magic_get
 #define Perl_magic_getarylen   CPerlObj::Perl_magic_getarylen
 #define call_pv                        Perl_call_pv
 #define Perl_call_sv           CPerlObj::Perl_call_sv
 #define call_sv                        Perl_call_sv
+#define Perl_despatch_signals  CPerlObj::Perl_despatch_signals
+#define despatch_signals       Perl_despatch_signals
 #define Perl_eval_pv           CPerlObj::Perl_eval_pv
 #define eval_pv                        Perl_eval_pv
 #define Perl_eval_sv           CPerlObj::Perl_eval_sv
 #ifdef USE_PURE_BISON
 #define Perl_yylex_r           CPerlObj::Perl_yylex_r
 #define yylex_r                        Perl_yylex_r
+#endif
 #define Perl_yylex             CPerlObj::Perl_yylex
 #define yylex                  Perl_yylex
-#else
-#define Perl_yylex             CPerlObj::Perl_yylex
-#define yylex                  Perl_yylex
-#endif
 #define Perl_yyparse           CPerlObj::Perl_yyparse
 #define yyparse                        Perl_yyparse
 #define Perl_yywarn            CPerlObj::Perl_yywarn
 #define too_few_arguments      S_too_few_arguments
 #define S_too_many_arguments   CPerlObj::S_too_many_arguments
 #define too_many_arguments     S_too_many_arguments
+#define S_trlist_upgrade       CPerlObj::S_trlist_upgrade
+#define trlist_upgrade         S_trlist_upgrade
 #define S_op_clear             CPerlObj::S_op_clear
 #define op_clear               S_op_clear
 #define S_null                 CPerlObj::S_null
 #define S_sv_2iuv_non_preserve CPerlObj::S_sv_2iuv_non_preserve
 #define sv_2iuv_non_preserve   S_sv_2iuv_non_preserve
 #  endif
+#define S_expect_number                CPerlObj::S_expect_number
+#define expect_number          S_expect_number
 #endif
 #if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
 #define S_check_uni            CPerlObj::S_check_uni
 #define ck_repeat              Perl_ck_repeat
 #define Perl_ck_require                CPerlObj::Perl_ck_require
 #define ck_require             Perl_ck_require
+#define Perl_ck_return         CPerlObj::Perl_ck_return
+#define ck_return              Perl_ck_return
 #define Perl_ck_rfun           CPerlObj::Perl_ck_rfun
 #define ck_rfun                        Perl_ck_rfun
 #define Perl_ck_rvconst                CPerlObj::Perl_ck_rvconst
index 7b83635..e5ca87a 100755 (executable)
--- a/embed.pl
+++ b/embed.pl
@@ -1494,6 +1494,9 @@ Ap        |bool   |do_open        |GV* gv|char* name|I32 len|int as_raw \
 Ap     |bool   |do_open9       |GV *gv|char *name|I32 len|int as_raw \
                                |int rawmode|int rawperm|PerlIO *supplied_fp \
                                |SV *svs|I32 num
+Ap     |bool   |do_openn       |GV *gv|char *name|I32 len|int as_raw \
+                               |int rawmode|int rawperm|PerlIO *supplied_fp \
+                               |SV **svp|I32 num
 p      |void   |do_pipe        |SV* sv|GV* rgv|GV* wgv
 p      |bool   |do_print       |SV* sv|PerlIO* fp
 p      |OP*    |do_readline
@@ -1593,6 +1596,7 @@ Ap        |char*  |instr          |const char* big|const char* little
 p      |bool   |io_close       |IO* io|bool not_implicit
 p      |OP*    |invert         |OP* cmd
 dp     |bool   |is_gv_magical  |char *name|STRLEN len|U32 flags
+p      |I32    |is_lvalue_sub
 Ap     |bool   |is_uni_alnum   |U32 c
 Ap     |bool   |is_uni_alnumc  |U32 c
 Ap     |bool   |is_uni_idfirst |U32 c
@@ -1627,8 +1631,8 @@ Ap        |bool   |is_uni_xdigit_lc|U32 c
 Ap     |U32    |to_uni_upper_lc|U32 c
 Ap     |U32    |to_uni_title_lc|U32 c
 Ap     |U32    |to_uni_lower_lc|U32 c
-Ap     |STRLEN |is_utf8_char   |U8 *p
-Ap     |bool   |is_utf8_string |U8 *s|STRLEN len
+Apd    |STRLEN |is_utf8_char   |U8 *p
+Apd    |bool   |is_utf8_string |U8 *s|STRLEN len
 Ap     |bool   |is_utf8_alnum  |U8 *p
 Ap     |bool   |is_utf8_alnumc |U8 *p
 Ap     |bool   |is_utf8_idfirst|U8 *p
@@ -1662,6 +1666,7 @@ p |int    |magic_clearpack|SV* sv|MAGIC* mg
 p      |int    |magic_clearsig |SV* sv|MAGIC* mg
 p      |int    |magic_existspack|SV* sv|MAGIC* mg
 p      |int    |magic_freeregexp|SV* sv|MAGIC* mg
+p      |int    |magic_freeovrld|SV* sv|MAGIC* mg
 p      |int    |magic_get      |SV* sv|MAGIC* mg
 p      |int    |magic_getarylen|SV* sv|MAGIC* mg
 p      |int    |magic_getdefelem|SV* sv|MAGIC* mg
@@ -1846,6 +1851,7 @@ Apd       |I32    |call_argv      |const char* sub_name|I32 flags|char** argv
 Apd    |I32    |call_method    |const char* methname|I32 flags
 Apd    |I32    |call_pv        |const char* sub_name|I32 flags
 Apd    |I32    |call_sv        |SV* sv|I32 flags
+p      |void   |despatch_signals
 Apd    |SV*    |eval_pv        |const char* p|I32 croak_on_error
 Apd    |I32    |eval_sv        |SV* sv|I32 flags
 Apd    |SV*    |get_sv         |const char* name|I32 create
@@ -2075,14 +2081,14 @@ p       |void   |unshare_hek    |HEK* hek
 p      |void   |utilize        |int aver|I32 floor|OP* version|OP* id|OP* arg
 Ap     |U8*    |utf16_to_utf8  |U8* p|U8 *d|I32 bytelen|I32 *newlen
 Ap     |U8*    |utf16_to_utf8_reversed|U8* p|U8 *d|I32 bytelen|I32 *newlen
-A    |STRLEN |utf8_length    |U8* s|U8 *e
-Ap     |IV     |utf8_distance  |U8 *a|U8 *b
-Ap     |U8*    |utf8_hop       |U8 *s|I32 off
-ApM    |U8*    |utf8_to_bytes  |U8 *s|STRLEN *len
-ApM    |U8*    |bytes_to_utf8  |U8 *s|STRLEN *len
-Ap     |UV     |utf8_to_uv_simple|U8 *s|STRLEN* retlen
-A    |UV     |utf8_to_uv     |U8 *s|STRLEN curlen|STRLEN* retlen|U32 flags
-Ap     |U8*    |uv_to_utf8     |U8 *d|UV uv
+Adp    |STRLEN |utf8_length    |U8* s|U8 *e
+Apd    |IV     |utf8_distance  |U8 *a|U8 *b
+Apd    |U8*    |utf8_hop       |U8 *s|I32 off
+ApMd   |U8*    |utf8_to_bytes  |U8 *s|STRLEN *len
+ApMd   |U8*    |bytes_to_utf8  |U8 *s|STRLEN *len
+Apd    |UV     |utf8_to_uv_simple|U8 *s|STRLEN* retlen
+Adp    |UV     |utf8_to_uv     |U8 *s|STRLEN curlen|STRLEN* retlen|U32 flags
+Apd    |U8*    |uv_to_utf8     |U8 *d|UV uv
 p      |void   |vivify_defelem |SV* sv
 p      |void   |vivify_ref     |SV* sv|U32 to_what
 p      |I32    |wait4pid       |Pid_t pid|int* statusp|int flags
@@ -2097,10 +2103,8 @@ Ap       |I32    |whichsig       |char* sig
 p      |int    |yyerror        |char* s
 #ifdef USE_PURE_BISON
 p      |int    |yylex_r        |YYSTYPE *lvalp|int *lcharp
-p      |int    |yylex          |YYSTYPE *lvalp|int *lcharp
-#else
-p      |int    |yylex
 #endif
+p      |int    |yylex
 p      |int    |yyparse
 p      |int    |yywarn         |char* s
 #if defined(MYMALLOC)
@@ -2260,6 +2264,7 @@ s |OP*    |no_fh_allowed  |OP *o
 s      |OP*    |scalarboolean  |OP *o
 s      |OP*    |too_few_arguments|OP *o|char* name
 s      |OP*    |too_many_arguments|OP *o|char* name
+s      |U8*    |trlist_upgrade |U8** sp|U8** ep
 s      |void   |op_clear       |OP* o
 s      |void   |null           |OP* o
 s      |PADOFFSET|pad_addlex   |SV* name
@@ -2473,6 +2478,7 @@ s |void   |del_sv |SV *p
 s      |int    |sv_2inuv_non_preserve  |SV *sv|I32 numtype
 s      |int    |sv_2iuv_non_preserve   |SV *sv|I32 numtype
 #  endif
+s      |I32    |expect_number  |char** pattern
 #endif
 
 #if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
index fddcd12..205004c 100644 (file)
 #define PL_preprocess          (PERL_GET_INTERP->Ipreprocess)
 #define PL_profiledata         (PERL_GET_INTERP->Iprofiledata)
 #define PL_psig_name           (PERL_GET_INTERP->Ipsig_name)
+#define PL_psig_pend           (PERL_GET_INTERP->Ipsig_pend)
 #define PL_psig_ptr            (PERL_GET_INTERP->Ipsig_ptr)
 #define PL_ptr_table           (PERL_GET_INTERP->Iptr_table)
 #define PL_replgv              (PERL_GET_INTERP->Ireplgv)
 #define PL_runops              (PERL_GET_INTERP->Irunops)
 #define PL_sawampersand                (PERL_GET_INTERP->Isawampersand)
 #define PL_sh_path             (PERL_GET_INTERP->Ish_path)
+#define PL_sig_pending         (PERL_GET_INTERP->Isig_pending)
 #define PL_sighandlerp         (PERL_GET_INTERP->Isighandlerp)
 #define PL_splitstr            (PERL_GET_INTERP->Isplitstr)
 #define PL_srand_called                (PERL_GET_INTERP->Isrand_called)
 #define PL_preprocess          (vTHX->Ipreprocess)
 #define PL_profiledata         (vTHX->Iprofiledata)
 #define PL_psig_name           (vTHX->Ipsig_name)
+#define PL_psig_pend           (vTHX->Ipsig_pend)
 #define PL_psig_ptr            (vTHX->Ipsig_ptr)
 #define PL_ptr_table           (vTHX->Iptr_table)
 #define PL_replgv              (vTHX->Ireplgv)
 #define PL_runops              (vTHX->Irunops)
 #define PL_sawampersand                (vTHX->Isawampersand)
 #define PL_sh_path             (vTHX->Ish_path)
+#define PL_sig_pending         (vTHX->Isig_pending)
 #define PL_sighandlerp         (vTHX->Isighandlerp)
 #define PL_splitstr            (vTHX->Isplitstr)
 #define PL_srand_called                (vTHX->Isrand_called)
 #define PL_preprocess          (aTHXo->interp.Ipreprocess)
 #define PL_profiledata         (aTHXo->interp.Iprofiledata)
 #define PL_psig_name           (aTHXo->interp.Ipsig_name)
+#define PL_psig_pend           (aTHXo->interp.Ipsig_pend)
 #define PL_psig_ptr            (aTHXo->interp.Ipsig_ptr)
 #define PL_ptr_table           (aTHXo->interp.Iptr_table)
 #define PL_replgv              (aTHXo->interp.Ireplgv)
 #define PL_runops              (aTHXo->interp.Irunops)
 #define PL_sawampersand                (aTHXo->interp.Isawampersand)
 #define PL_sh_path             (aTHXo->interp.Ish_path)
+#define PL_sig_pending         (aTHXo->interp.Isig_pending)
 #define PL_sighandlerp         (aTHXo->interp.Isighandlerp)
 #define PL_splitstr            (aTHXo->interp.Isplitstr)
 #define PL_srand_called                (aTHXo->interp.Isrand_called)
 #define PL_Ipreprocess         PL_preprocess
 #define PL_Iprofiledata                PL_profiledata
 #define PL_Ipsig_name          PL_psig_name
+#define PL_Ipsig_pend          PL_psig_pend
 #define PL_Ipsig_ptr           PL_psig_ptr
 #define PL_Iptr_table          PL_ptr_table
 #define PL_Ireplgv             PL_replgv
 #define PL_Irunops             PL_runops
 #define PL_Isawampersand       PL_sawampersand
 #define PL_Ish_path            PL_sh_path
+#define PL_Isig_pending                PL_sig_pending
 #define PL_Isighandlerp                PL_sighandlerp
 #define PL_Isplitstr           PL_splitstr
 #define PL_Isrand_called       PL_srand_called
index c155ce4..b9e8bed 100644 (file)
@@ -319,6 +319,7 @@ d_shmctl='undef'
 d_shmdt='undef'
 d_shmget='undef'
 d_sigaction='undef'
+d_sigprocmask='undef'
 d_sigsetjmp='undef'
 d_socket='define'
 d_sockpair='undef'
@@ -648,11 +649,11 @@ shmattype=''
 shortsize='2'
 shrpenv=''
 shsharp=''
-sig_count='ZERO '
 sig_name=''
 sig_name_init='"ZERO", 0'
 sig_num='0'
 sig_num_init='0, 0'
+sig_size='1'
 signal_t='void'
 sitearch='?:/perl/lib/site_perl/5.7.0/epoc'
 sitearchexp='?:/perl/lib/site_perl/5.7.0/epoc'
@@ -804,6 +805,7 @@ ivdformat='"ld"'
 uvuformat='"lu"'
 uvoformat='"lo"'
 uvxformat='"lx"'
+uvXUformat='"lX"'
 uidformat='"hu"'
 gidformat='"hu"'
 d_strtold='undef'
index ec9e578..25d69e9 100644 (file)
@@ -648,13 +648,19 @@ B::OP
 LOGOP_other(o)
        B::LOGOP        o
 
-#define LISTOP_children(o)     o->op_children
-
 MODULE = B     PACKAGE = B::LISTOP             PREFIX = LISTOP_
 
 U32
 LISTOP_children(o)
        B::LISTOP       o
+       OP *            kid = NO_INIT
+       int             i = NO_INIT
+    CODE:
+       ST(0) = sv_newmortal();
+       i = 0;
+       for (kid = o->op_first; kid; kid = kid->op_sibling)
+           i++;
+       sv_setiv(ST(0), i);
 
 #define PMOP_pmreplroot(o)     o->op_pmreplroot
 #define PMOP_pmreplstart(o)    o->op_pmreplstart
index b412927..dc176be 100644 (file)
@@ -114,34 +114,33 @@ $insn_data{op_private} = [90, \&PUT_U8, "GET_U8"];
 $insn_data{op_first} = [91, \&PUT_opindex, "GET_opindex"];
 $insn_data{op_last} = [92, \&PUT_opindex, "GET_opindex"];
 $insn_data{op_other} = [93, \&PUT_opindex, "GET_opindex"];
-$insn_data{op_children} = [94, \&PUT_U32, "GET_U32"];
-$insn_data{op_pmreplroot} = [95, \&PUT_opindex, "GET_opindex"];
-$insn_data{op_pmreplrootgv} = [96, \&PUT_svindex, "GET_svindex"];
-$insn_data{op_pmreplstart} = [97, \&PUT_opindex, "GET_opindex"];
-$insn_data{op_pmnext} = [98, \&PUT_opindex, "GET_opindex"];
-$insn_data{pregcomp} = [99, \&PUT_pvcontents, "GET_pvcontents"];
-$insn_data{op_pmflags} = [100, \&PUT_U16, "GET_U16"];
-$insn_data{op_pmpermflags} = [101, \&PUT_U16, "GET_U16"];
-$insn_data{op_sv} = [102, \&PUT_svindex, "GET_svindex"];
-$insn_data{op_padix} = [103, \&PUT_U32, "GET_U32"];
-$insn_data{op_pv} = [104, \&PUT_pvcontents, "GET_pvcontents"];
-$insn_data{op_pv_tr} = [105, \&PUT_op_tr_array, "GET_op_tr_array"];
-$insn_data{op_redoop} = [106, \&PUT_opindex, "GET_opindex"];
-$insn_data{op_nextop} = [107, \&PUT_opindex, "GET_opindex"];
-$insn_data{op_lastop} = [108, \&PUT_opindex, "GET_opindex"];
-$insn_data{cop_label} = [109, \&PUT_pvindex, "GET_pvindex"];
-$insn_data{cop_stashpv} = [110, \&PUT_pvindex, "GET_pvindex"];
-$insn_data{cop_file} = [111, \&PUT_pvindex, "GET_pvindex"];
-$insn_data{cop_seq} = [112, \&PUT_U32, "GET_U32"];
-$insn_data{cop_arybase} = [113, \&PUT_I32, "GET_I32"];
-$insn_data{cop_line} = [114, \&PUT_U16, "GET_U16"];
-$insn_data{cop_warnings} = [115, \&PUT_svindex, "GET_svindex"];
-$insn_data{main_start} = [116, \&PUT_opindex, "GET_opindex"];
-$insn_data{main_root} = [117, \&PUT_opindex, "GET_opindex"];
-$insn_data{curpad} = [118, \&PUT_svindex, "GET_svindex"];
-$insn_data{push_begin} = [119, \&PUT_svindex, "GET_svindex"];
-$insn_data{push_init} = [120, \&PUT_svindex, "GET_svindex"];
-$insn_data{push_end} = [121, \&PUT_svindex, "GET_svindex"];
+$insn_data{op_pmreplroot} = [94, \&PUT_opindex, "GET_opindex"];
+$insn_data{op_pmreplrootgv} = [95, \&PUT_svindex, "GET_svindex"];
+$insn_data{op_pmreplstart} = [96, \&PUT_opindex, "GET_opindex"];
+$insn_data{op_pmnext} = [97, \&PUT_opindex, "GET_opindex"];
+$insn_data{pregcomp} = [98, \&PUT_pvcontents, "GET_pvcontents"];
+$insn_data{op_pmflags} = [99, \&PUT_U16, "GET_U16"];
+$insn_data{op_pmpermflags} = [100, \&PUT_U16, "GET_U16"];
+$insn_data{op_sv} = [101, \&PUT_svindex, "GET_svindex"];
+$insn_data{op_padix} = [102, \&PUT_U32, "GET_U32"];
+$insn_data{op_pv} = [103, \&PUT_pvcontents, "GET_pvcontents"];
+$insn_data{op_pv_tr} = [104, \&PUT_op_tr_array, "GET_op_tr_array"];
+$insn_data{op_redoop} = [105, \&PUT_opindex, "GET_opindex"];
+$insn_data{op_nextop} = [106, \&PUT_opindex, "GET_opindex"];
+$insn_data{op_lastop} = [107, \&PUT_opindex, "GET_opindex"];
+$insn_data{cop_label} = [108, \&PUT_pvindex, "GET_pvindex"];
+$insn_data{cop_stashpv} = [109, \&PUT_pvindex, "GET_pvindex"];
+$insn_data{cop_file} = [110, \&PUT_pvindex, "GET_pvindex"];
+$insn_data{cop_seq} = [111, \&PUT_U32, "GET_U32"];
+$insn_data{cop_arybase} = [112, \&PUT_I32, "GET_I32"];
+$insn_data{cop_line} = [113, \&PUT_U16, "GET_U16"];
+$insn_data{cop_warnings} = [114, \&PUT_svindex, "GET_svindex"];
+$insn_data{main_start} = [115, \&PUT_opindex, "GET_opindex"];
+$insn_data{main_root} = [116, \&PUT_opindex, "GET_opindex"];
+$insn_data{curpad} = [117, \&PUT_svindex, "GET_svindex"];
+$insn_data{push_begin} = [118, \&PUT_svindex, "GET_svindex"];
+$insn_data{push_init} = [119, \&PUT_svindex, "GET_svindex"];
+$insn_data{push_end} = [120, \&PUT_svindex, "GET_svindex"];
 
 my ($insn_name, $insn_data);
 while (($insn_name, $insn_data) = each %insn_data) {
index bea023a..54d7c53 100644 (file)
@@ -312,15 +312,6 @@ sub B::BINOP::bytecode {
     }
 }
 
-sub B::LISTOP::bytecode {
-    my $op = shift;
-    my $children = $op->children unless $strip_syntree;
-    $op->B::BINOP::bytecode;
-    if (($op->type || !$compress_nullops) && !$strip_syntree) {
-       asm "op_children $children\n";
-    }
-}
-
 sub B::LOOP::bytecode {
     my $op = shift;
     my $redoopix = $op->redoop->objix;
index dac9417..54fa46f 100644 (file)
@@ -225,11 +225,10 @@ sub B::LISTOP::save {
     my ($op, $level) = @_;
     my $sym = objsym($op);
     return $sym if defined $sym;
-    $listopsect->add(sprintf("s\\_%x, s\\_%x, NULL, %u, %u, %u, 0x%x, 0x%x, s\\_%x, s\\_%x, %u",
+    $listopsect->add(sprintf("s\\_%x, s\\_%x, NULL, %u, %u, %u, 0x%x, 0x%x, s\\_%x, s\\_%x",
                             ${$op->next}, ${$op->sibling},
                             $op->targ, $op->type, $op_seq, $op->flags,
-                            $op->private, ${$op->first}, ${$op->last},
-                            $op->children));
+                            $op->private, ${$op->first}, ${$op->last}));
     my $ix = $listopsect->index;
     $init->add(sprintf("listop_list[$ix].op_ppaddr = %s;", $op->ppaddr));
     savesym($op, "(OP*)&listop_list[$ix]");
@@ -255,11 +254,11 @@ sub B::LOOP::save {
     #warn sprintf("LOOP: redoop %s, nextop %s, lastop %s\n",
     #           peekop($op->redoop), peekop($op->nextop),
     #           peekop($op->lastop)); # debug
-    $loopsect->add(sprintf("s\\_%x, s\\_%x, NULL, %u, %u, %u, 0x%x, 0x%x, s\\_%x, s\\_%x, %u, s\\_%x, s\\_%x, s\\_%x",
+    $loopsect->add(sprintf("s\\_%x, s\\_%x, NULL, %u, %u, %u, 0x%x, 0x%x, s\\_%x, s\\_%x, s\\_%x, s\\_%x, s\\_%x",
                           ${$op->next}, ${$op->sibling},
                           $op->targ, $op->type, $op_seq, $op->flags,
                           $op->private, ${$op->first}, ${$op->last},
-                          $op->children, ${$op->redoop}, ${$op->nextop},
+                          ${$op->redoop}, ${$op->nextop},
                           ${$op->lastop}));
     my $ix = $loopsect->index;
     $init->add(sprintf("loop_list[$ix].op_ppaddr = %s;", $op->ppaddr));
@@ -351,10 +350,10 @@ sub B::PMOP::save {
     # pmnext handling is broken in perl itself, I think. Bad op_pmnext
     # fields aren't noticed in perl's runtime (unless you try reset) but we
     # segfault when trying to dereference it to find op->op_pmnext->op_type
-    $pmopsect->add(sprintf("s\\_%x, s\\_%x, NULL, %u, %u, %u, 0x%x, 0x%x, s\\_%x, s\\_%x, %u, %s, %s, 0, 0, 0x%x, 0x%x",
+    $pmopsect->add(sprintf("s\\_%x, s\\_%x, NULL, %u, %u, %u, 0x%x, 0x%x, s\\_%x, s\\_%x, %s, %s, 0, 0, 0x%x, 0x%x",
                           ${$op->next}, ${$op->sibling}, $op->targ,
                           $op->type, $op_seq, $op->flags, $op->private,
-                          ${$op->first}, ${$op->last}, $op->children,
+                          ${$op->first}, ${$op->last}, 
                           $replrootfield, $replstartfield,
                           $op->pmflags, $op->pmpermflags,));
     my $pm = sprintf("pmop_list[%d]", $pmopsect->index);
diff --git a/ext/B/B/Concise.pm b/ext/B/B/Concise.pm
new file mode 100644 (file)
index 0000000..cc894d3
--- /dev/null
@@ -0,0 +1,817 @@
+package B::Concise;
+# Copyright (C) 2000, 2001 Stephen McCamant. All rights reserved.
+# This program is free software; you can redistribute and/or modify it
+# under the same terms as Perl itself.
+
+our $VERSION = "0.51";
+use strict;
+use B qw(class ppname main_start main_root main_cv cstring svref_2object
+        SVf_IOK SVf_NOK SVf_POK OPf_KIDS);
+
+my %style = 
+  ("terse" =>
+   ["(?(#label =>\n)?)(*(    )*)#class (#addr) #name (?([#targ])?) "
+    . "#svclass~(?((#svaddr))?)~#svval~(?(label \"#coplabel\")?)\n",
+    "(*(    )*)goto #class (#addr)\n",
+    "#class pp_#name"],
+   "concise" =>
+   ["#hyphseq2 (*(   (x( ;)x))*)<#classsym> "
+    . "#exname#arg(?([#targarglife])?)~#flags(?(/#private)?)(x(;~->#next)x)\n",
+    "  (*(    )*)     goto #seq\n",
+    "(?(<#seq>)?)#exname#arg(?([#targarglife])?)"],
+   "linenoise" =>
+   ["(x(;(*( )*))x)#noise#arg(?([#targarg])?)(x( ;\n)x)",
+    "gt_#seq ",
+    "(?(#seq)?)#noise#arg(?([#targarg])?)"],
+   "debug" =>
+   ["#class (#addr)\n\top_next\t\t#nextaddr\n\top_sibling\t#sibaddr\n\t"
+    . "op_ppaddr\tPL_ppaddr[OP_#NAME]\n\top_type\t\t#typenum\n\top_seq\t\t"
+    . "#seqnum\n\top_flags\t#flagval\n\top_private\t#privval\n"
+    . "(?(\top_first\t#firstaddr\n)?)(?(\top_last\t\t#lastaddr\n)?)"
+    . "(?(\top_sv\t\t#svaddr\n)?)",
+    "    GOTO #addr\n",
+    "#addr"],
+   "env" => [$ENV{B_CONCISE_FORMAT}, $ENV{B_CONCISE_GOTO_FORMAT},
+            $ENV{B_CONCISE_TREE_FORMAT}],
+  );
+
+my($format, $gotofmt, $treefmt);
+my $curcv;
+my($seq_base, $cop_seq_base);
+
+sub concise_cv {
+    my ($order, $cvref) = @_;
+    my $cv = svref_2object($cvref);
+    $curcv = $cv;
+    if ($order eq "exec") {
+       walk_exec($cv->START);
+    } elsif ($order eq "basic") {
+       walk_topdown($cv->ROOT, sub { $_[0]->concise($_[1]) }, 0);
+    } else {
+       print tree($cv->ROOT, 0)
+    }
+}
+
+my $start_sym = "\e(0"; # "\cN" sometimes also works
+my $end_sym   = "\e(B"; # "\cO" respectively
+
+my @tree_decorations = 
+  (["  ", "--", "+-", "|-", "| ", "`-", "-", 1],
+   [" ", "-", "+", "+", "|", "`", "", 0],
+   ["  ", map("$start_sym$_$end_sym", "qq", "wq", "tq", "x ", "mq", "q"), 1],
+   [" ", map("$start_sym$_$end_sym", "q", "w", "t", "x", "m"), "", 0],
+  );
+my $tree_style = 0;
+
+my $base = 36;
+my $big_endian = 1;
+
+my $order = "basic";
+
+sub compile {
+    my @options = grep(/^-/, @_);
+    my @args = grep(!/^-/, @_);
+    my $do_main = 0;
+    ($format, $gotofmt, $treefmt) = @{$style{"concise"}};
+    for my $o (@options) {
+       if ($o eq "-basic") {
+           $order = "basic";
+       } elsif ($o eq "-exec") {
+           $order = "exec";
+       } elsif ($o eq "-tree") {
+           $order = "tree";
+       } elsif ($o eq "-compact") {
+           $tree_style |= 1;
+       } elsif ($o eq "-loose") {
+           $tree_style &= ~1;
+       } elsif ($o eq "-vt") {
+           $tree_style |= 2;
+       } elsif ($o eq "-ascii") {
+           $tree_style &= ~2;
+       } elsif ($o eq "-main") {
+           $do_main = 1;
+       } elsif ($o =~ /^-base(\d+)$/) {
+           $base = $1;
+       } elsif ($o eq "-bigendian") {
+           $big_endian = 1;
+       } elsif ($o eq "-littleendian") {
+           $big_endian = 0;
+       } elsif (exists $style{substr($o, 1)}) {
+           ($format, $gotofmt, $treefmt) = @{$style{substr($o, 1)}};
+       } else {
+           warn "Option $o unrecognized";
+       }
+    }
+    if (@args) {
+       return sub {
+           for my $objname (@args) {
+               $objname = "main::" . $objname unless $objname =~ /::/;
+               eval "concise_cv(\$order, \\&$objname)";
+               die "concise_cv($order, \\&$objname) failed: $@" if $@;
+           }
+       }
+    }
+    if (!@args or $do_main) {
+       if ($order eq "exec") {
+           return sub { return if class(main_start) eq "NULL";
+                        $curcv = main_cv;
+                        walk_exec(main_start) }
+       } elsif ($order eq "tree") {
+           return sub { return if class(main_root) eq "NULL";
+                        $curcv = main_cv;
+                        print tree(main_root, 0) }
+       } elsif ($order eq "basic") {
+           return sub { return if class(main_root) eq "NULL";
+                        $curcv = main_cv;
+                        walk_topdown(main_root,
+                                     sub { $_[0]->concise($_[1]) }, 0); }
+       }
+    }
+}
+
+my %labels;
+my $lastnext;
+
+my %opclass = ('OP' => "0", 'UNOP' => "1", 'BINOP' => "2", 'LOGOP' => "|",
+              'LISTOP' => "@", 'PMOP' => "/", 'SVOP' => "\$", 'GVOP' => "*",
+              'PVOP' => '"', 'LOOP' => "{", 'COP' => ";");
+
+my @linenoise =
+  qw'#  () sc (  @? 1  $* gv *{ m$ m@ m% m? p/ *$ $  $# & a& pt \\ s\\ rf bl
+     `  *? <> ?? ?/ r/ c/ // qr s/ /c y/ =  @= C  sC Cp sp df un BM po +1 +I
+     -1 -I 1+ I+ 1- I- ** *  i* /  i/ %$ i% x  +  i+ -  i- .  "  << >> <  i<
+     >  i> <= i, >= i. == i= != i! <? i? s< s> s, s. s= s! s? b& b^ b| -0 -i
+     !  ~  a2 si cs rd sr e^ lg sq in %x %o ab le ss ve ix ri sf FL od ch cy
+     uf lf uc lc qm @  [f [  @[ eh vl ky dl ex %  ${ @{ uk pk st jn )  )[ a@
+     a% sl +] -] [- [+ so rv GS GW MS MW .. f. .f && || ^^ ?: &= |= -> s{ s}
+     v} ca wa di rs ;; ;  ;d }{ {  }  {} f{ it {l l} rt }l }n }r dm }g }e ^o
+     ^c ^| ^# um bm t~ u~ ~d DB db ^s se ^g ^r {w }w pf pr ^O ^K ^R ^W ^d ^v
+     ^e ^t ^k t. fc ic fl .s .p .b .c .l .a .h g1 s1 g2 s2 ?. l? -R -W -X -r
+     -w -x -e -o -O -z -s -M -A -C -S -c -b -f -d -p -l -u -g -k -t -T -B cd
+     co cr u. cm ut r. l@ s@ r@ mD uD oD rD tD sD wD cD f$ w$ p$ sh e$ k$ g3
+     g4 s4 g5 s5 T@ C@ L@ G@ A@ S@ Hg Hc Hr Hw Mg Mc Ms Mr Sg Sc So rq do {e
+     e} {t t} g6 G6 6e g7 G7 7e g8 G8 8e g9 G9 9e 6s 7s 8s 9s 6E 7E 8E 9E Pn
+     Pu GP SP EP Gn Gg GG SG EG g0 c$ lk t$ ;s n>';
+
+my $chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
+
+sub op_flags {
+    my($x) = @_;
+    my(@v);
+    push @v, "v" if ($x & 3) == 1;
+    push @v, "s" if ($x & 3) == 2;
+    push @v, "l" if ($x & 3) == 3;
+    push @v, "K" if $x & 4;
+    push @v, "P" if $x & 8;
+    push @v, "R" if $x & 16;
+    push @v, "M" if $x & 32;
+    push @v, "S" if $x & 64;
+    push @v, "*" if $x & 128;
+    return join("", @v);
+}
+
+sub base_n {
+    my $x = shift;
+    return "-" . base_n(-$x) if $x < 0;
+    my $str = "";
+    do { $str .= substr($chars, $x % $base, 1) } while $x = int($x / $base);
+    $str = reverse $str if $big_endian;
+    return $str;
+}
+
+sub seq { return $_[0]->seq ? base_n($_[0]->seq - $seq_base) : "-" }
+
+sub walk_topdown {
+    my($op, $sub, $level) = @_;
+    $sub->($op, $level);
+    if ($op->flags & OPf_KIDS) {
+       for (my $kid = $op->first; $$kid; $kid = $kid->sibling) {
+           walk_topdown($kid, $sub, $level + 1);
+       }
+    }
+    if (class($op) eq "PMOP" and $ {$op->pmreplroot}) {
+       walk_topdown($op->pmreplroot, $sub, $level + 1);
+    }
+}
+
+sub walklines {
+    my($ar, $level) = @_;
+    for my $l (@$ar) {
+       if (ref($l) eq "ARRAY") {
+           walklines($l, $level + 1);
+       } else {
+           $l->concise($level);
+       }
+    }
+}
+
+sub walk_exec {
+    my($top, $level) = @_;
+    my %opsseen;
+    my @lines;
+    my @todo = ([$top, \@lines]);
+    while (@todo and my($op, $targ) = @{shift @todo}) {
+       for (; $$op; $op = $op->next) {
+           last if $opsseen{$$op}++;
+           push @$targ, $op;
+           my $name = $op->name;
+           if ($name
+               =~ /^(or|and|(map|grep)while|entertry|range|cond_expr)$/) {
+               my $ar = [];
+               push @$targ, $ar;
+               push @todo, [$op->other, $ar];
+           } elsif ($name eq "subst" and $ {$op->pmreplstart}) {
+               my $ar = [];
+               push @$targ, $ar;
+               push @todo, [$op->pmreplstart, $ar];
+           } elsif ($name =~ /^enter(loop|iter)$/) {
+               $labels{$op->nextop->seq} = "NEXT";
+               $labels{$op->lastop->seq} = "LAST";
+               $labels{$op->redoop->seq} = "REDO";             
+           }
+       }
+    }
+    walklines(\@lines, 0);
+}
+
+sub fmt_line {
+    my($hr, $fmt, $level) = @_;
+    my $text = $fmt;
+    $text =~ s/\(\?\(([^\#]*?)\#(\w+)([^\#]*?)\)\?\)/
+      $hr->{$2} ? $1.$hr->{$2}.$3 : ""/eg;
+    $text =~ s/\(x\((.*?);(.*?)\)x\)/$order eq "exec" ? $1 : $2/egs;
+    $text =~ s/\(\*\(([^;]*?)\)\*\)/$1 x $level/egs;
+    $text =~ s/\(\*\((.*?);(.*?)\)\*\)/$1 x ($level - 1) . $2 x ($level>0)/egs;
+    $text =~ s/#([a-zA-Z]+)(\d+)/sprintf("%-$2s", $hr->{$1})/eg;
+    $text =~ s/#([a-zA-Z]+)/$hr->{$1}/eg;
+    $text =~ s/[ \t]*~+[ \t]*/ /g;
+    return $text;
+}
+
+my %priv;
+$priv{$_}{128} = "LVINTRO"
+  for ("pos", "substr", "vec", "threadsv", "gvsv", "rv2sv", "rv2hv", "rv2gv",
+       "rv2av", "rv2arylen", "aelem", "helem", "aslice", "hslice", "padsv",
+       "padav", "padhv");
+$priv{$_}{64} = "REFC" for ("leave", "leavesub", "leavesublv", "leavewrite");
+$priv{"aassign"}{64} = "COMMON";
+$priv{"aassign"}{32} = "PHASH";
+$priv{"sassign"}{64} = "BKWARD";
+$priv{$_}{64} = "RTIME" for ("match", "subst", "substcont");
+@{$priv{"trans"}}{1,2,4,8,16,64} = ("<UTF", ">UTF", "IDENT", "SQUASH", "DEL",
+                                   "COMPL", "GROWS");
+$priv{"repeat"}{64} = "DOLIST";
+$priv{"leaveloop"}{64} = "CONT";
+@{$priv{$_}}{32,64,96} = ("DREFAV", "DREFHV", "DREFSV")
+  for ("entersub", map("rv2${_}v", "a", "s", "h", "g"), "aelem", "helem");
+$priv{"entersub"}{16} = "DBG";
+$priv{"entersub"}{32} = "TARG";
+@{$priv{$_}}{4,8,128} = ("INARGS","AMPER","NO()") for ("entersub", "rv2cv");
+$priv{"gv"}{32} = "EARLYCV";
+$priv{"aelem"}{16} = $priv{"helem"}{16} = "LVDEFER";
+$priv{$_}{16} = "OURINTR" for ("gvsv", "rv2sv", "rv2av", "rv2hv", "r2gv");
+$priv{$_}{16} = "TARGMY"
+  for (map(($_,"s$_"),"chop", "chomp"),
+       map(($_,"i_$_"), "postinc", "postdec", "multiply", "divide", "modulo",
+          "add", "subtract", "negate"), "pow", "concat", "stringify",
+       "left_shift", "right_shift", "bit_and", "bit_xor", "bit_or",
+       "complement", "atan2", "sin", "cos", "rand", "exp", "log", "sqrt",
+       "int", "hex", "oct", "abs", "length", "index", "rindex", "sprintf",
+       "ord", "chr", "crypt", "quotemeta", "join", "push", "unshift", "flock",
+       "chdir", "chown", "chroot", "unlink", "chmod", "utime", "rename",
+       "link", "symlink", "mkdir", "rmdir", "wait", "waitpid", "system",
+       "exec", "kill", "getppid", "getpgrp", "setpgrp", "getpriority",
+       "setpriority", "time", "sleep");
+@{$priv{"const"}}{8,16,32,64,128} = ("STRICT","ENTERED", "$[", "BARE", "WARN");
+$priv{"flip"}{64} = $priv{"flop"}{64} = "LINENUM";
+$priv{"list"}{64} = "GUESSED";
+$priv{"delete"}{64} = "SLICE";
+$priv{"exists"}{64} = "SUB";
+$priv{$_}{64} = "LOCALE"
+  for ("sort", "prtf", "sprintf", "slt", "sle", "seq", "sne", "sgt", "sge",
+       "scmp", "lc", "uc", "lcfirst", "ucfirst");
+@{$priv{"sort"}}{1,2,4} = ("NUM", "INT", "REV");
+$priv{"threadsv"}{64} = "SVREFd";
+$priv{$_}{16} = "INBIN" for ("open", "backtick");
+$priv{$_}{32} = "INCR" for ("open", "backtick");
+$priv{$_}{64} = "OUTBIN" for ("open", "backtick");
+$priv{$_}{128} = "OUTCR" for ("open", "backtick");
+$priv{"exit"}{128} = "VMS";
+
+sub private_flags {
+    my($name, $x) = @_;
+    my @s;
+    for my $flag (128, 96, 64, 32, 16, 8, 4, 2, 1) {
+       if ($priv{$name}{$flag} and $x & $flag and $x >= $flag) {
+           $x -= $flag;
+           push @s, $priv{$name}{$flag};
+       }
+    }
+    push @s, $x if $x;
+    return join(",", @s);
+}
+
+sub concise_op {
+    my ($op, $level, $format) = @_;
+    my %h;
+    $h{exname} = $h{name} = $op->name;
+    $h{NAME} = uc $h{name};
+    $h{class} = class($op);
+    $h{extarg} = $h{targ} = $op->targ;
+    $h{extarg} = "" unless $h{extarg};
+    if ($h{name} eq "null" and $h{targ}) {
+       $h{exname} = "ex-" . substr(ppname($h{targ}), 3);
+       $h{extarg} = "";
+    } elsif ($h{targ}) {
+       my $padname = (($curcv->PADLIST->ARRAY)[0]->ARRAY)[$h{targ}];
+       if (defined $padname and class($padname) ne "SPECIAL") {
+           $h{targarg}  = $padname->PV;
+           my $intro = $padname->NVX - $cop_seq_base;
+           my $finish = int($padname->IVX) - $cop_seq_base;
+           $finish = "end" if $finish == 999999999 - $cop_seq_base;
+           $h{targarglife} = "$h{targarg}:$intro,$finish";
+       } else {
+           $h{targarglife} = $h{targarg} = "t" . $h{targ};
+       }
+    }
+    $h{arg} = "";
+    $h{svclass} = $h{svaddr} = $h{svval} = "";
+    if ($h{class} eq "PMOP") {
+       my $precomp = $op->precomp;
+       $precomp = defined($precomp) ? "/$precomp/" : "";
+       my $pmreplstart;
+       if ($ {$op->pmreplstart}) {
+           undef $lastnext;
+           $pmreplstart = "replstart->" . seq($op->pmreplstart);
+           $h{arg} = "(" . join(" ", $precomp, $pmreplstart) . ")";
+       } else {
+           $h{arg} = "($precomp)";
+       }
+    } elsif ($h{class} eq "PVOP" and $h{name} ne "trans") {
+       $h{arg} = '("' . $op->pv . '")';
+       $h{svval} = '"' . $op->pv . '"';
+    } elsif ($h{class} eq "COP") {
+       my $label = $op->label;
+       $h{coplabel} = $label;
+       $label = $label ? "$label: " : "";
+       my $loc = $op->file;
+       $loc =~ s[.*/][];
+       $loc .= ":" . $op->line;
+       my($stash, $cseq) = ($op->stash->NAME, $op->cop_seq - $cop_seq_base);
+       my $arybase = $op->arybase;
+       $arybase = $arybase ? ' $[=' . $arybase : "";
+       $h{arg} = "($label$stash $cseq $loc$arybase)";
+    } elsif ($h{class} eq "LOOP") {
+       $h{arg} = "(next->" . seq($op->nextop) . " last->" . seq($op->lastop)
+         . " redo->" . seq($op->redoop) . ")";
+    } elsif ($h{class} eq "LOGOP") {
+       undef $lastnext;
+       $h{arg} = "(other->" . seq($op->other) . ")";
+    } elsif ($h{class} eq "SVOP") {
+       my $sv = $op->sv;
+       $h{svclass} = class($sv);
+       $h{svaddr} = sprintf("%#x", $$sv);
+       if ($h{svclass} eq "GV") {
+           my $gv = $sv;
+           my $stash = $gv->STASH->NAME;
+           if ($stash eq "main") {
+               $stash = "";
+           } else {
+               $stash = $stash . "::";
+           }
+           $h{arg} = "(*$stash" . $gv->NAME . ")";
+           $h{svval} = "*$stash" . $gv->NAME;
+       } else {
+           while (class($sv) eq "RV") {
+               $h{svval} .= "\\";
+               $sv = $sv->RV;
+           }
+           if (class($sv) eq "SPECIAL") {
+               $h{svval} = ["Null", "sv_undef", "sv_yes", "sv_no"]->[$$sv];
+           } elsif ($sv->FLAGS & SVf_NOK) {
+               $h{svval} = $sv->NV;
+           } elsif ($sv->FLAGS & SVf_IOK) {
+               $h{svval} = $sv->IV;
+           } elsif ($sv->FLAGS & SVf_POK) {
+               $h{svval} = cstring($sv->PV);
+           }
+           $h{arg} = "($h{svclass} $h{svval})";
+       }
+    }
+    $h{seq} = $h{hyphseq} = seq($op);
+    $h{seq} = "" if $h{seq} eq "-";
+    $h{seqnum} = $op->seq;
+    $h{next} = $op->next;
+    $h{next} = (class($h{next}) eq "NULL") ? "(end)" : seq($h{next});
+    $h{nextaddr} = sprintf("%#x", $ {$op->next});
+    $h{sibaddr} = sprintf("%#x", $ {$op->sibling});
+    $h{firstaddr} = sprintf("%#x", $ {$op->first}) if $op->can("first");
+    $h{lastaddr} = sprintf("%#x", $ {$op->last}) if $op->can("last");
+
+    $h{classsym} = $opclass{$h{class}};
+    $h{flagval} = $op->flags;
+    $h{flags} = op_flags($op->flags);
+    $h{privval} = $op->private;
+    $h{private} = private_flags($h{name}, $op->private);
+    $h{addr} = sprintf("%#x", $$op);
+    $h{label} = $labels{$op->seq};
+    $h{typenum} = $op->type;
+    $h{noise} = $linenoise[$op->type];
+    return fmt_line(\%h, $format, $level);
+}
+
+sub B::OP::concise {
+    my($op, $level) = @_;
+    if ($order eq "exec" and $lastnext and $$lastnext != $$op) {
+       my $h = {"seq" => seq($lastnext), "class" => class($lastnext),
+                "addr" => sprintf("%#x", $$lastnext)};
+       print fmt_line($h, $gotofmt, $level+1);
+    }
+    $lastnext = $op->next;
+    print concise_op($op, $level, $format);
+}
+
+sub tree {
+    my $op = shift;
+    my $level = shift;
+    my $style = $tree_decorations[$tree_style];
+    my($space, $single, $kids, $kid, $nokid, $last, $lead, $size) = @$style;
+    my $name = concise_op($op, $level, $treefmt);
+    if (not $op->flags & OPf_KIDS) {
+       return $name . "\n";
+    }
+    my @lines;
+    for (my $kid = $op->first; $$kid; $kid = $kid->sibling) {
+       push @lines, tree($kid, $level+1);
+    }
+    my $i;
+    for ($i = $#lines; substr($lines[$i], 0, 1) eq " "; $i--) {
+       $lines[$i] = $space . $lines[$i];
+    }
+    if ($i > 0) {
+       $lines[$i] = $last . $lines[$i];
+       while ($i-- > 1) {
+           if (substr($lines[$i], 0, 1) eq " ") {
+               $lines[$i] = $nokid . $lines[$i];
+           } else {
+               $lines[$i] = $kid . $lines[$i];         
+           }
+       }
+       $lines[$i] = $kids . $lines[$i];
+    } else {
+       $lines[0] = $single . $lines[0];
+    }
+    return("$name$lead" . shift @lines,
+           map(" " x (length($name)+$size) . $_, @lines));
+}
+
+# This is a bit of a hack; the 2 and 15 were determined empirically.
+# These need to stay the last things in the module.
+$cop_seq_base = svref_2object(eval 'sub{0;}')->START->cop_seq + 2;
+$seq_base = svref_2object(eval 'sub{}')->START->seq + 15;
+
+1;
+
+__END__
+
+=head1 NAME
+
+B::Concise - Walk Perl syntax tree, printing concise info about ops
+
+=head1 SYNOPSIS
+
+    perl -MO=Concise[,OPTIONS] foo.pl
+
+=head1 DESCRIPTION
+
+This compiler backend prints the internal OPs of a Perl program's syntax
+tree in one of several space-efficient text formats suitable for debugging
+the inner workings of perl or other compiler backends. It can print OPs in
+the order they appear in the OP tree, in the order they will execute, or
+in a text approximation to their tree structure, and the format of the
+information displyed is customizable. Its function is similar to that of
+perl's B<-Dx> debugging flag or the B<B::Terse> module, but it is more
+sophisticated and flexible.
+
+=head1 OPTIONS
+
+Arguments that don't start with a hyphen are taken to be the names of
+subroutines to print the OPs of; if no such functions are specified, the
+main body of the program (outside any subroutines, and not including use'd
+or require'd files) is printed.
+
+=over 4
+
+=item B<-basic>
+
+Print OPs in the order they appear in the OP tree (a preorder
+traversal, starting at the root). The indentation of each OP shows its
+level in the tree.  This mode is the default, so the flag is included
+simply for completeness.
+
+=item B<-exec>
+
+Print OPs in the order they would normally execute (for the majority
+of constructs this is a postorder traversal of the tree, ending at the
+root). In most cases the OP that usually follows a given OP will
+appear directly below it; alternate paths are shown by indentation. In
+cases like loops when control jumps out of a linear path, a 'goto'
+line is generated.
+
+=item B<-tree>
+
+Print OPs in a text approximation of a tree, with the root of the tree
+at the left and 'left-to-right' order of children transformed into
+'top-to-bottom'. Because this mode grows both to the right and down,
+it isn't suitable for large programs (unless you have a very wide
+terminal).
+
+=item B<-compact>
+
+Use a tree format in which the minimum amount of space is used for the
+lines connecting nodes (one character in most cases). This squeezes out
+a few precious columns of screen real estate.
+
+=item B<-loose>
+
+Use a tree format that uses longer edges to separate OP nodes. This format
+tends to look better than the compact one, especially in ASCII, and is
+the default.
+
+=item B<-vt>
+
+Use tree connecting characters drawn from the VT100 line-drawing set.
+This looks better if your terminal supports it.
+
+=item B<-ascii>
+
+Draw the tree with standard ASCII characters like C<+> and C<|>. These don't
+look as clean as the VT100 characters, but they'll work with almost any
+terminal (or the horizontal scrolling mode of less(1)) and are suitable
+for text documentation or email. This is the default.
+
+=item B<-main>
+
+Include the main program in the output, even if subroutines were also
+specified.
+
+=item B<-base>I<n>
+
+Print OP sequence numbers in base I<n>. If I<n> is greater than 10, the
+digit for 11 will be 'a', and so on. If I<n> is greater than 36, the digit
+for 37 will be 'A', and so on until 62. Values greater than 62 are not
+currently supported. The default is 36.
+
+=item B<-bigendian>
+
+Print sequence numbers with the most significant digit first. This is the
+usual convention for Arabic numerals, and the default.
+
+=item B<-littleendian>
+
+Print seqence numbers with the least significant digit first.
+
+=item B<-concise>
+
+Use the author's favorite set of formatting conventions. This is the
+default, of course.
+
+=item B<-terse>
+
+Use formatting conventions that emulate the ouput of B<B::Terse>. The
+basic mode is almost indistinguishable from the real B<B::Terse>, and the
+exec mode looks very similar, but is in a more logical order and lacks
+curly brackets. B<B::Terse> doesn't have a tree mode, so the tree mode
+is only vaguely reminiscient of B<B::Terse>.
+
+=item B<-linenoise>
+
+Use formatting conventions in which the name of each OP, rather than being
+written out in full, is represented by a one- or two-character abbreviation.
+This is mainly a joke.
+
+=item B<-debug>
+
+Use formatting conventions reminiscient of B<B::Debug>; these aren't
+very concise at all.
+
+=item B<-env>
+
+Use formatting conventions read from the environment variables
+C<B_CONCISE_FORMAT>, C<B_CONCISE_GOTO_FORMAT>, and C<B_CONCISE_TREE_FORMAT>.
+
+=back
+
+=head1 FORMATTING SPECIFICATIONS
+
+For each general style ('concise', 'terse', 'linenoise', etc.) there are
+three specifications: one of how OPs should appear in the basic or exec
+modes, one of how 'goto' lines should appear (these occur in the exec
+mode only), and one of how nodes should appear in tree mode. Each has the
+same format, described below. Any text that doesn't match a special
+pattern is copied verbatim.
+
+=over 4
+
+=item B<(x(>I<exec_text>B<;>I<basic_text>B<)x)>
+
+Generates I<exec_text> in exec mode, or I<basic_text> in basic mode.
+
+=item B<(*(>I<text>B<)*)>
+
+Generates one copy of I<text> for each indentation level.
+
+=item B<(*(>I<text1>B<;>I<text2>B<)*)>
+
+Generates one fewer copies of I<text1> than the indentation level, followed
+by one copy of I<text2> if the indentation level is more than 0.
+
+=item B<(?(>I<text1>B<#>I<var>I<Text2>B<)?)>
+
+If the value of I<var> is true (not empty or zero), generates the
+value of I<var> surrounded by I<text1> and I<Text2>, otherwise
+nothing.
+
+=item B<#>I<var>
+
+Generates the value of the variable I<var>.
+
+=item B<#>I<var>I<N>
+
+Generates the value of I<var>, left jutified to fill I<N> spaces.
+
+=item B<~>
+
+Any number of tildes and surrounding whitespace will be collapsed to
+a single space.
+
+=back
+
+The following variables are recognized:
+
+=over 4
+
+=item B<#addr>
+
+The address of the OP, in hexidecimal.
+
+=item B<#arg>
+
+The OP-specific information of the OP (such as the SV for an SVOP, the
+non-local exit pointers for a LOOP, etc.) enclosed in paretheses.
+
+=item B<#class>
+
+The B-determined class of the OP, in all caps.
+
+=item B<#classym>
+
+A single symbol abbreviating the class of the OP.
+
+=item B<#coplabel>
+
+The label of the statement or block the OP is the start of, if any.
+
+=item B<#exname>
+
+The name of the OP, or 'ex-foo' if the OP is a null that used to be a foo.
+
+=item B<#extarg>
+
+The target of the OP, or nothing for a nulled OP.
+
+=item B<#firstaddr>
+
+The address of the OP's first child, in hexidecimal.
+
+=item B<#flags>
+
+The OP's flags, abbreviated as a series of symbols.
+
+=item B<#flagval>
+
+The numeric value of the OP's flags.
+
+=item B<#hyphenseq>
+
+The sequence number of the OP, or a hyphen if it doesn't have one.
+
+=item B<#label>
+
+'NEXT', 'LAST', or 'REDO' if the OP is a target of one of those in exec
+mode, or empty otherwise.
+
+=item B<#lastaddr>
+
+The address of the OP's last child, in hexidecimal.
+
+=item B<#name>
+
+The OP's name.
+
+=item B<#NAME>
+
+The OP's name, in all caps.
+
+=item B<#next>
+
+The sequence number of the OP's next OP.
+
+=item B<#nextaddr>
+
+The address of the OP's next OP, in hexidecimal.
+
+=item B<#noise>
+
+The two-character abbreviation for the OP's name.
+
+=item B<#private>
+
+The OP's private flags, rendered with abbreviated names if possible.
+
+=item B<#privval>
+
+The numeric value of the OP's private flags.
+
+=item B<#seq>
+
+The sequence number of the OP.
+
+=item B<#seqnum>
+
+The real sequence number of the OP, as a regular number and not adjusted
+to be relative to the start of the real program. (This will generally be
+a fairly large number because all of B<B::Concise> is compiled before
+your program is).
+
+=item B<#sibaddr>
+
+The address of the OP's next youngest sibling, in hexidecimal.
+
+=item B<#svaddr>
+
+The address of the OP's SV, if it has an SV, in hexidecimal.
+
+=item B<#svclass>
+
+The class of the OP's SV, if it has one, in all caps (e.g., 'IV').
+
+=item B<#svval>
+
+The value of the OP's SV, if it has one, in a short human-readable format.
+
+=item B<#targ>
+
+The numeric value of the OP's targ.
+
+=item B<#targarg>
+
+The name of the variable the OP's targ refers to, if any, otherwise the
+letter t followed by the OP's targ in decimal.
+
+=item B<#targarglife>
+
+Same as B<#targarg>, but followed by the COP sequence numbers that delimit
+the variable's lifetime (or 'end' for a variable in an open scope) for a
+variable.
+
+=item B<#typenum>
+
+The numeric value of the OP's type, in decimal.
+
+=back
+
+=head1 ABBREVIATIONS
+
+=head2 OP flags abbreviations
+
+    v      OPf_WANT_VOID    Want nothing (void context)
+    s      OPf_WANT_SCALAR  Want single value (scalar context)
+    l      OPf_WANT_LIST    Want list of any length (list context)
+    K      OPf_KIDS         There is a firstborn child.
+    P      OPf_PARENS       This operator was parenthesized.
+                             (Or block needs explicit scope entry.)
+    R      OPf_REF          Certified reference.
+                             (Return container, not containee).
+    M      OPf_MOD          Will modify (lvalue).
+    S      OPf_STACKED      Some arg is arriving on the stack.
+    *      OPf_SPECIAL      Do something weird for this op (see op.h)
+
+=head2 OP class abbreviations
+
+    0      OP (aka BASEOP)  An OP with no children
+    1      UNOP             An OP with one child
+    2      BINOP            An OP with two children
+    |      LOGOP            A control branch OP
+    @      LISTOP           An OP that could have lots of children
+    /      PMOP             An OP with a regular expression
+    $      SVOP             An OP with an SV
+    "      PVOP             An OP with a string
+    {      LOOP             An OP that holds pointers for a loop
+    ;      COP              An OP that marks the start of a statement
+
+=head1 AUTHOR
+
+Stephen McCamant, C<smcc@CSUA.Berkeley.EDU>
+
+=cut
index 3e12790..71cd8aa 100644 (file)
@@ -719,196 +719,189 @@ byterun(pTHXo_ register struct byteloader_state *bstate)
                cLOGOP->op_other = arg;
                break;
            }
-         case INSN_OP_CHILDREN:                /* 94 */
-           {
-               U32 arg;
-               BGET_U32(arg);
-               cLISTOP->op_children = arg;
-               break;
-           }
-         case INSN_OP_PMREPLROOT:              /* 95 */
+         case INSN_OP_PMREPLROOT:              /* 94 */
            {
                opindex arg;
                BGET_opindex(arg);
                cPMOP->op_pmreplroot = arg;
                break;
            }
-         case INSN_OP_PMREPLROOTGV:            /* 96 */
+         case INSN_OP_PMREPLROOTGV:            /* 95 */
            {
                svindex arg;
                BGET_svindex(arg);
                *(SV**)&cPMOP->op_pmreplroot = arg;
                break;
            }
-         case INSN_OP_PMREPLSTART:             /* 97 */
+         case INSN_OP_PMREPLSTART:             /* 96 */
            {
                opindex arg;
                BGET_opindex(arg);
                cPMOP->op_pmreplstart = arg;
                break;
            }
-         case INSN_OP_PMNEXT:          /* 98 */
+         case INSN_OP_PMNEXT:          /* 97 */
            {
                opindex arg;
                BGET_opindex(arg);
                *(OP**)&cPMOP->op_pmnext = arg;
                break;
            }
-         case INSN_PREGCOMP:           /* 99 */
+         case INSN_PREGCOMP:           /* 98 */
            {
                pvcontents arg;
                BGET_pvcontents(arg);
                BSET_pregcomp(PL_op, arg);
                break;
            }
-         case INSN_OP_PMFLAGS:         /* 100 */
+         case INSN_OP_PMFLAGS:         /* 99 */
            {
                U16 arg;
                BGET_U16(arg);
                cPMOP->op_pmflags = arg;
                break;
            }
-         case INSN_OP_PMPERMFLAGS:             /* 101 */
+         case INSN_OP_PMPERMFLAGS:             /* 100 */
            {
                U16 arg;
                BGET_U16(arg);
                cPMOP->op_pmpermflags = arg;
                break;
            }
-         case INSN_OP_SV:              /* 102 */
+         case INSN_OP_SV:              /* 101 */
            {
                svindex arg;
                BGET_svindex(arg);
                cSVOP->op_sv = arg;
                break;
            }
-         case INSN_OP_PADIX:           /* 103 */
+         case INSN_OP_PADIX:           /* 102 */
            {
                PADOFFSET arg;
                BGET_U32(arg);
                cPADOP->op_padix = arg;
                break;
            }
-         case INSN_OP_PV:              /* 104 */
+         case INSN_OP_PV:              /* 103 */
            {
                pvcontents arg;
                BGET_pvcontents(arg);
                cPVOP->op_pv = arg;
                break;
            }
-         case INSN_OP_PV_TR:           /* 105 */
+         case INSN_OP_PV_TR:           /* 104 */
            {
                op_tr_array arg;
                BGET_op_tr_array(arg);
                cPVOP->op_pv = arg;
                break;
            }
-         case INSN_OP_REDOOP:          /* 106 */
+         case INSN_OP_REDOOP:          /* 105 */
            {
                opindex arg;
                BGET_opindex(arg);
                cLOOP->op_redoop = arg;
                break;
            }
-         case INSN_OP_NEXTOP:          /* 107 */
+         case INSN_OP_NEXTOP:          /* 106 */
            {
                opindex arg;
                BGET_opindex(arg);
                cLOOP->op_nextop = arg;
                break;
            }
-         case INSN_OP_LASTOP:          /* 108 */
+         case INSN_OP_LASTOP:          /* 107 */
            {
                opindex arg;
                BGET_opindex(arg);
                cLOOP->op_lastop = arg;
                break;
            }
-         case INSN_COP_LABEL:          /* 109 */
+         case INSN_COP_LABEL:          /* 108 */
            {
                pvindex arg;
                BGET_pvindex(arg);
                cCOP->cop_label = arg;
                break;
            }
-         case INSN_COP_STASHPV:                /* 110 */
+         case INSN_COP_STASHPV:                /* 109 */
            {
                pvindex arg;
                BGET_pvindex(arg);
                BSET_cop_stashpv(cCOP, arg);
                break;
            }
-         case INSN_COP_FILE:           /* 111 */
+         case INSN_COP_FILE:           /* 110 */
            {
                pvindex arg;
                BGET_pvindex(arg);
                BSET_cop_file(cCOP, arg);
                break;
            }
-         case INSN_COP_SEQ:            /* 112 */
+         case INSN_COP_SEQ:            /* 111 */
            {
                U32 arg;
                BGET_U32(arg);
                cCOP->cop_seq = arg;
                break;
            }
-         case INSN_COP_ARYBASE:                /* 113 */
+         case INSN_COP_ARYBASE:                /* 112 */
            {
                I32 arg;
                BGET_I32(arg);
                cCOP->cop_arybase = arg;
                break;
            }
-         case INSN_COP_LINE:           /* 114 */
+         case INSN_COP_LINE:           /* 113 */
            {
                line_t arg;
                BGET_U16(arg);
                BSET_cop_line(cCOP, arg);
                break;
            }
-         case INSN_COP_WARNINGS:               /* 115 */
+         case INSN_COP_WARNINGS:               /* 114 */
            {
                svindex arg;
                BGET_svindex(arg);
                cCOP->cop_warnings = arg;
                break;
            }
-         case INSN_MAIN_START:         /* 116 */
+         case INSN_MAIN_START:         /* 115 */
            {
                opindex arg;
                BGET_opindex(arg);
                PL_main_start = arg;
                break;
            }
-         case INSN_MAIN_ROOT:          /* 117 */
+         case INSN_MAIN_ROOT:          /* 116 */
            {
                opindex arg;
                BGET_opindex(arg);
                PL_main_root = arg;
                break;
            }
-         case INSN_CURPAD:             /* 118 */
+         case INSN_CURPAD:             /* 117 */
            {
                svindex arg;
                BGET_svindex(arg);
                BSET_curpad(PL_curpad, arg);
                break;
            }
-         case INSN_PUSH_BEGIN:         /* 119 */
+         case INSN_PUSH_BEGIN:         /* 118 */
            {
                svindex arg;
                BGET_svindex(arg);
                BSET_push_begin(PL_beginav, arg);
                break;
            }
-         case INSN_PUSH_INIT:          /* 120 */
+         case INSN_PUSH_INIT:          /* 119 */
            {
                svindex arg;
                BGET_svindex(arg);
                BSET_push_init(PL_initav, arg);
                break;
            }
-         case INSN_PUSH_END:           /* 121 */
+         case INSN_PUSH_END:           /* 120 */
            {
                svindex arg;
                BGET_svindex(arg);
index 1e67b89..f074f2d 100644 (file)
@@ -122,35 +122,34 @@ enum {
     INSN_OP_FIRST,                     /* 91 */
     INSN_OP_LAST,                      /* 92 */
     INSN_OP_OTHER,                     /* 93 */
-    INSN_OP_CHILDREN,                  /* 94 */
-    INSN_OP_PMREPLROOT,                        /* 95 */
-    INSN_OP_PMREPLROOTGV,                      /* 96 */
-    INSN_OP_PMREPLSTART,                       /* 97 */
-    INSN_OP_PMNEXT,                    /* 98 */
-    INSN_PREGCOMP,                     /* 99 */
-    INSN_OP_PMFLAGS,                   /* 100 */
-    INSN_OP_PMPERMFLAGS,                       /* 101 */
-    INSN_OP_SV,                        /* 102 */
-    INSN_OP_PADIX,                     /* 103 */
-    INSN_OP_PV,                        /* 104 */
-    INSN_OP_PV_TR,                     /* 105 */
-    INSN_OP_REDOOP,                    /* 106 */
-    INSN_OP_NEXTOP,                    /* 107 */
-    INSN_OP_LASTOP,                    /* 108 */
-    INSN_COP_LABEL,                    /* 109 */
-    INSN_COP_STASHPV,                  /* 110 */
-    INSN_COP_FILE,                     /* 111 */
-    INSN_COP_SEQ,                      /* 112 */
-    INSN_COP_ARYBASE,                  /* 113 */
-    INSN_COP_LINE,                     /* 114 */
-    INSN_COP_WARNINGS,                 /* 115 */
-    INSN_MAIN_START,                   /* 116 */
-    INSN_MAIN_ROOT,                    /* 117 */
-    INSN_CURPAD,                       /* 118 */
-    INSN_PUSH_BEGIN,                   /* 119 */
-    INSN_PUSH_INIT,                    /* 120 */
-    INSN_PUSH_END,                     /* 121 */
-    MAX_INSN = 121
+    INSN_OP_PMREPLROOT,                        /* 94 */
+    INSN_OP_PMREPLROOTGV,                      /* 95 */
+    INSN_OP_PMREPLSTART,                       /* 96 */
+    INSN_OP_PMNEXT,                    /* 97 */
+    INSN_PREGCOMP,                     /* 98 */
+    INSN_OP_PMFLAGS,                   /* 99 */
+    INSN_OP_PMPERMFLAGS,                       /* 100 */
+    INSN_OP_SV,                        /* 101 */
+    INSN_OP_PADIX,                     /* 102 */
+    INSN_OP_PV,                        /* 103 */
+    INSN_OP_PV_TR,                     /* 104 */
+    INSN_OP_REDOOP,                    /* 105 */
+    INSN_OP_NEXTOP,                    /* 106 */
+    INSN_OP_LASTOP,                    /* 107 */
+    INSN_COP_LABEL,                    /* 108 */
+    INSN_COP_STASHPV,                  /* 109 */
+    INSN_COP_FILE,                     /* 110 */
+    INSN_COP_SEQ,                      /* 111 */
+    INSN_COP_ARYBASE,                  /* 112 */
+    INSN_COP_LINE,                     /* 113 */
+    INSN_COP_WARNINGS,                 /* 114 */
+    INSN_MAIN_START,                   /* 115 */
+    INSN_MAIN_ROOT,                    /* 116 */
+    INSN_CURPAD,                       /* 117 */
+    INSN_PUSH_BEGIN,                   /* 118 */
+    INSN_PUSH_INIT,                    /* 119 */
+    INSN_PUSH_END,                     /* 120 */
+    MAX_INSN = 120
 };
 
 enum {
index 89b8439..b2c92d8 100644 (file)
@@ -305,7 +305,7 @@ static void caterr(char *s)
                p++;
        switch(atoi(s)) {
        case L_ERROR_TOOMANY:
-               strcat(errbuf, "to many errors");
+               strcat(errbuf, "too many errors");
                break;
        case L_ERROR_NOLIB:
                strcat(errbuf, "can't load library");
diff --git a/ext/DynaLoader/dl_dllload.xs b/ext/DynaLoader/dl_dllload.xs
new file mode 100644 (file)
index 0000000..fe6957a
--- /dev/null
@@ -0,0 +1,189 @@
+/* dl_dllload.xs
+ *
+ * Platform:   OS/390, possibly others that use dllload(),dllfree() (VM/ESA?).
+ * Authors:    John Goodyear && Peter Prymmer
+ * Created:     28 October 2000
+ * Modified:
+ * 16 January 2001 - based loosely on dl_dlopen.xs.
+ */
+/* Porting notes:
+
+   OS/390 Dynamic Loading functions: 
+
+   dllload
+   -------
+     dllhandle * dllload(const char *dllName)
+
+     This function takes the name of a dynamic object file and returns
+     a descriptor which can be used by dlllqueryfn() and/or dllqueryvar() 
+     later.  If dllName contains a slash, it is used to locate the dll.
+     If not then the LIBPATH environment variable is used to
+     search for the requested dll (at least within the HFS).
+     It returns NULL on error and sets errno.
+
+   dllfree
+   -------
+     int dllfree(dllhandle *handle);
+
+     dllfree() decrements the load count for the dll and frees
+     it if the count is 0.  It returns zero on success, and 
+     non-zero on failure.
+
+   dllqueryfn && dllqueryvar
+   -------------------------
+     void (* dllqueryfn(dllhandle *handle, const char *function))();
+     void * dllqueryvar(dllhandle *handle, const char *symbol);
+
+     dllqueryfn() takes the handle returned from dllload() and the name 
+     of a function to get the address of.  If the function was found 
+     a pointer is returned, otherwise NULL is returned.
+
+     dllqueryvar() takes the handle returned from dllload() and the name 
+     of a symbol to get the address of.  If the variable was found a 
+     pointer is returned, otherwise NULL is returned.
+
+     The XS dl_find_symbol() first calls dllqueryfn().  If it fails
+     dlqueryvar() is then called.
+
+   strerror
+   --------
+     char * strerror(int errno)
+
+     Returns a null-terminated string which describes the last error
+     that occurred with other functions (not necessarily unique to
+     dll loading).
+
+   Return Types
+   ============
+   In this implementation the two functions, dl_load_file() &&
+   dl_find_symbol(), return (void *).  This is primarily because the 
+   dlopen() && dlsym() style dynamic linker calls return (void *).
+   We suspect that casting to (void *) may be easier than teaching XS
+   typemaps about the (dllhandle *) type.
+
+   Dealing with Error Messages
+   ===========================
+   In order to make the handling of dynamic linking errors as generic as
+   possible you should store any error messages associated with your
+   implementation with the StoreError function.
+
+   In the case of OS/390 the function strerror(errno) returns the error 
+   message associated with the last dynamic link error.  As the S/390 
+   dynamic linker functions dllload() && dllqueryvar() both return NULL 
+   on error every call to an S/390 dynamic link routine is coded 
+   like this:
+
+       RETVAL = dllload(filename) ;
+       if (RETVAL == NULL)
+           SaveError("%s",strerror(errno)) ;
+
+   Note that SaveError() takes a printf format string. Use a "%s" as
+   the first parameter if the error may contain any % characters.
+
+   Other comments within the dl_dlopen.xs file may be helpful as well.
+*/
+
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+#include <dll.h>       /* the dynamic linker include file for S/390 */
+#include <errno.h>     /* strerror() and friends */
+
+#include "dlutils.c"   /* SaveError() etc */
+
+static void
+dl_private_init(pTHX)
+{
+    (void)dl_generic_private_init(aTHX);
+}
+
+MODULE = DynaLoader    PACKAGE = DynaLoader
+
+BOOT:
+    (void)dl_private_init(aTHX);
+
+
+void *
+dl_load_file(filename, flags=0)
+    char *     filename
+    int                flags
+  PREINIT:
+    int mode = 0;
+  CODE:
+{
+    DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_load_file(%s,%x):\n", filename,flags));
+    /* add a (void *) dllload(filename) ; cast if needed */
+    RETVAL = dllload(filename) ;
+    DLDEBUG(2,PerlIO_printf(Perl_debug_log, " libref=%lx\n", (unsigned long) RETVAL));
+    ST(0) = sv_newmortal() ;
+    if (RETVAL == NULL)
+       SaveError(aTHX_ "%s",strerror(errno)) ;
+    else
+       sv_setiv( ST(0), PTR2IV(RETVAL));
+}
+
+
+int
+dl_unload_file(libref)
+    void *     libref
+  CODE:
+    DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_unload_file(%lx):\n", PTR2ul(libref)));
+    /* RETVAL = (dllfree((dllhandle *)libref) == 0 ? 1 : 0); */
+    RETVAL = (dllfree(libref) == 0 ? 1 : 0);
+    if (!RETVAL)
+        SaveError(aTHX_ "%s", strerror(errno)) ;
+    DLDEBUG(2,PerlIO_printf(Perl_debug_log, " retval = %d\n", RETVAL));
+  OUTPUT:
+    RETVAL
+
+
+void *
+dl_find_symbol(libhandle, symbolname)
+    void *     libhandle
+    char *     symbolname
+    CODE:
+    DLDEBUG(2, PerlIO_printf(Perl_debug_log,
+                            "dl_find_symbol(handle=%lx, symbol=%s)\n",
+                            (unsigned long) libhandle, symbolname));
+    if((RETVAL = (void*)dllqueryfn(libhandle, symbolname)) == NULL)
+    RETVAL = dllqueryvar(libhandle, symbolname);
+    DLDEBUG(2, PerlIO_printf(Perl_debug_log,
+                            "  symbolref = %lx\n", (unsigned long) RETVAL));
+    ST(0) = sv_newmortal() ;
+    if (RETVAL == NULL)
+       SaveError(aTHX_ "%s",strerror(errno)) ;
+    else
+       sv_setiv( ST(0), PTR2IV(RETVAL));
+
+
+void
+dl_undef_symbols()
+    PPCODE:
+
+
+
+# These functions should not need changing on any platform:
+
+void
+dl_install_xsub(perl_name, symref, filename="$Package")
+    char *             perl_name
+    void *             symref 
+    char *             filename
+    CODE:
+    DLDEBUG(2,PerlIO_printf(Perl_debug_log, "dl_install_xsub(name=%s, symref=%lx)\n",
+               perl_name, (unsigned long) symref));
+    ST(0) = sv_2mortal(newRV((SV*)newXS(perl_name,
+                                       (void(*)(pTHX_ CV *))symref,
+                                       filename)));
+
+
+char *
+dl_error()
+    CODE:
+    RETVAL = LastError ;
+    OUTPUT:
+    RETVAL
+
+# end.
index 350b0d5..e1b2a82 100644 (file)
            SaveError("%s",dlerror()) ;
 
    Note that SaveError() takes a printf format string. Use a "%s" as
-   the first parameter if the error may contain and % characters.
+   the first parameter if the error may contain any % characters.
 
 */
 
index a7acd88..8aa51ff 100644 (file)
@@ -64,12 +64,21 @@ PerlIOEncode_pushed(PerlIO *f, const char *mode,const char *arg,STRLEN len)
  XPUSHs(sv_2mortal(newSVpvn(arg,len)));
  PUTBACK;
  if (perl_call_method("getEncoding",G_SCALAR) != 1)
-  return -1;
+  {
+   /* should never happen */
+   Perl_die(aTHX_ "Encode::getEncoding did not return a value");
+   return -1;
+  }
  SPAGAIN;
  e->enc = POPs;
  PUTBACK;
  if (!SvROK(e->enc))
-  return -1;
+  {
+   e->enc = Nullsv;
+   errno  = EINVAL;
+   Perl_warner(aTHX_ WARN_IO, "Cannot find encoding \"%.*s\"", (int) len, arg);
+   return -1;
+  }
  SvREFCNT_inc(e->enc);
  FREETMPS;
  LEAVE;
@@ -324,7 +333,13 @@ Encode_Define(pTHX_ encode_t *enc)
  HV *hash  = get_hv("Encode::encoding",GV_ADD|GV_ADDMULTI);
  HV *stash = gv_stashpv("Encode::XS", TRUE);
  SV *sv    = sv_bless(newRV_noinc(newSViv(PTR2IV(enc))),stash);
- hv_store(hash,enc->name,strlen(enc->name),sv,0);
+ int i = 0;
+ while (enc->name[i])
+  {
+   const char *name = enc->name[i++];
+   hv_store(hash,name,strlen(name),SvREFCNT_inc(sv),0);
+  }
+ SvREFCNT_dec(sv);
 }
 
 void call_failure (SV *routine, U8* done, U8* dest, U8* orig) {}
@@ -368,7 +383,7 @@ encode_method(pTHX_ encode_t *enc, encpage_t *dir, SV *src, int check)
            {
             STRLEN clen;
             UV ch = utf8_to_uv(s+slen,(SvCUR(src)-slen),&clen,0);
-            Perl_warner(aTHX_ WARN_UTF8, "\"\\x{%x}\" does not map to %s", ch, enc->name);
+            Perl_warner(aTHX_ WARN_UTF8, "\"\\x{%"UVxf"}\" does not map to %s", ch, enc->name[0]);
             /* FIXME: Skip over the character, copy in replacement and continue
              * but that is messy so for now just fail.
              */
@@ -383,7 +398,7 @@ encode_method(pTHX_ encode_t *enc, encpage_t *dir, SV *src, int check)
          {
           /* UTF-8 is supposed to be "Universal" so should not happen */
           Perl_croak(aTHX_ "%s '%.*s' does not map to UTF-8",
-                 enc->name(SvCUR(src)-slen),s+slen);
+                 enc->name[0], (int)(SvCUR(src)-slen),s+slen);
          }
         break;
 
@@ -391,13 +406,13 @@ encode_method(pTHX_ encode_t *enc, encpage_t *dir, SV *src, int check)
          if (!check && ckWARN_d(WARN_UTF8))
           {
            Perl_warner(aTHX_ WARN_UTF8, "Partial %s character",
-                       (dir == enc->f_utf8) ? "UTF-8" : enc->name);
+                       (dir == enc->f_utf8) ? "UTF-8" : enc->name[0]);
           }
          return &PL_sv_undef;
 
        default:
         Perl_croak(aTHX_ "Unexpected code %d converting %s %s",
-                 code, (dir == enc->f_utf8) ? "to" : "from",enc->name);
+                 code, (dir == enc->f_utf8) ? "to" : "from",enc->name[0]);
         return &PL_sv_undef;
       }
     }
diff --git a/ext/Encode/Encode/ascii.ucm b/ext/Encode/Encode/ascii.ucm
new file mode 100644 (file)
index 0000000..b2b6d14
--- /dev/null
@@ -0,0 +1,136 @@
+# Written by compile -n ascii -o Encode/ascii.ucm Encode/ascii.enc
+<code_set_name> "ascii"
+<mb_cur_min> 1
+<mb_cur_max> 1
+<subchar> \x3F
+#
+CHARMAP
+<U0000> \x00 |0
+<U0001> \x01 |0
+<U0002> \x02 |0
+<U0003> \x03 |0
+<U0004> \x04 |0
+<U0005> \x05 |0
+<U0006> \x06 |0
+<U0007> \x07 |0
+<U0008> \x08 |0
+<U0009> \x09 |0
+<U000A> \x0A |0
+<U000B> \x0B |0
+<U000C> \x0C |0
+<U000D> \x0D |0
+<U000E> \x0E |0
+<U000F> \x0F |0
+<U0010> \x10 |0
+<U0011> \x11 |0
+<U0012> \x12 |0
+<U0013> \x13 |0
+<U0014> \x14 |0
+<U0015> \x15 |0
+<U0016> \x16 |0
+<U0017> \x17 |0
+<U0018> \x18 |0
+<U0019> \x19 |0
+<U001A> \x1A |0
+<U001B> \x1B |0
+<U001C> \x1C |0
+<U001D> \x1D |0
+<U001E> \x1E |0
+<U001F> \x1F |0
+<U0020> \x20 |0
+<U0021> \x21 |0
+<U0022> \x22 |0
+<U0023> \x23 |0
+<U0024> \x24 |0
+<U0025> \x25 |0
+<U0026> \x26 |0
+<U0027> \x27 |0
+<U0028> \x28 |0
+<U0029> \x29 |0
+<U002A> \x2A |0
+<U002B> \x2B |0
+<U002C> \x2C |0
+<U002D> \x2D |0
+<U002E> \x2E |0
+<U002F> \x2F |0
+<U0030> \x30 |0
+<U0031> \x31 |0
+<U0032> \x32 |0
+<U0033> \x33 |0
+<U0034> \x34 |0
+<U0035> \x35 |0
+<U0036> \x36 |0
+<U0037> \x37 |0
+<U0038> \x38 |0
+<U0039> \x39 |0
+<U003A> \x3A |0
+<U003B> \x3B |0
+<U003C> \x3C |0
+<U003D> \x3D |0
+<U003E> \x3E |0
+<U003F> \x3F |0
+<U0040> \x40 |0
+<U0041> \x41 |0
+<U0042> \x42 |0
+<U0043> \x43 |0
+<U0044> \x44 |0
+<U0045> \x45 |0
+<U0046> \x46 |0
+<U0047> \x47 |0
+<U0048> \x48 |0
+<U0049> \x49 |0
+<U004A> \x4A |0
+<U004B> \x4B |0
+<U004C> \x4C |0
+<U004D> \x4D |0
+<U004E> \x4E |0
+<U004F> \x4F |0
+<U0050> \x50 |0
+<U0051> \x51 |0
+<U0052> \x52 |0
+<U0053> \x53 |0
+<U0054> \x54 |0
+<U0055> \x55 |0
+<U0056> \x56 |0
+<U0057> \x57 |0
+<U0058> \x58 |0
+<U0059> \x59 |0
+<U005A> \x5A |0
+<U005B> \x5B |0
+<U005C> \x5C |0
+<U005D> \x5D |0
+<U005E> \x5E |0
+<U005F> \x5F |0
+<U0060> \x60 |0
+<U0061> \x61 |0
+<U0062> \x62 |0
+<U0063> \x63 |0
+<U0064> \x64 |0
+<U0065> \x65 |0
+<U0066> \x66 |0
+<U0067> \x67 |0
+<U0068> \x68 |0
+<U0069> \x69 |0
+<U006A> \x6A |0
+<U006B> \x6B |0
+<U006C> \x6C |0
+<U006D> \x6D |0
+<U006E> \x6E |0
+<U006F> \x6F |0
+<U0070> \x70 |0
+<U0071> \x71 |0
+<U0072> \x72 |0
+<U0073> \x73 |0
+<U0074> \x74 |0
+<U0075> \x75 |0
+<U0076> \x76 |0
+<U0077> \x77 |0
+<U0078> \x78 |0
+<U0079> \x79 |0
+<U007A> \x7A |0
+<U007B> \x7B |0
+<U007C> \x7C |0
+<U007D> \x7D |0
+<U007E> \x7E |0
+<U007F> \x7F |0
+END CHARMAP
diff --git a/ext/Encode/Encode/cp1047.ucm b/ext/Encode/Encode/cp1047.ucm
new file mode 100644 (file)
index 0000000..6675f36
--- /dev/null
@@ -0,0 +1,264 @@
+# Written by compile -n cp1047 -o Encode/cp1047.ucm Encode/cp1047.enc
+<code_set_name> "cp1047"
+<mb_cur_min> 1
+<mb_cur_max> 1
+<subchar> \x6F
+#
+CHARMAP
+<U0000> \x00 |0
+<U0001> \x01 |0
+<U0002> \x02 |0
+<U0003> \x03 |0
+<U0004> \x37 |0
+<U0005> \x2D |0
+<U0006> \x2E |0
+<U0007> \x2F |0
+<U0008> \x16 |0
+<U0009> \x05 |0
+<U000A> \x15 |0
+<U000B> \x0B |0
+<U000C> \x0C |0
+<U000D> \x0D |0
+<U000E> \x0E |0
+<U000F> \x0F |0
+<U0010> \x10 |0
+<U0011> \x11 |0
+<U0012> \x12 |0
+<U0013> \x13 |0
+<U0014> \x3C |0
+<U0015> \x3D |0
+<U0016> \x32 |0
+<U0017> \x26 |0
+<U0018> \x18 |0
+<U0019> \x19 |0
+<U001A> \x3F |0
+<U001B> \x27 |0
+<U001C> \x1C |0
+<U001D> \x1D |0
+<U001E> \x1E |0
+<U001F> \x1F |0
+<U0020> \x40 |0
+<U0021> \x5A |0
+<U0022> \x7F |0
+<U0023> \x7B |0
+<U0024> \x5B |0
+<U0025> \x6C |0
+<U0026> \x50 |0
+<U0027> \x7D |0
+<U0028> \x4D |0
+<U0029> \x5D |0
+<U002A> \x5C |0
+<U002B> \x4E |0
+<U002C> \x6B |0
+<U002D> \x60 |0
+<U002E> \x4B |0
+<U002F> \x61 |0
+<U0030> \xF0 |0
+<U0031> \xF1 |0
+<U0032> \xF2 |0
+<U0033> \xF3 |0
+<U0034> \xF4 |0
+<U0035> \xF5 |0
+<U0036> \xF6 |0
+<U0037> \xF7 |0
+<U0038> \xF8 |0
+<U0039> \xF9 |0
+<U003A> \x7A |0
+<U003B> \x5E |0
+<U003C> \x4C |0
+<U003D> \x7E |0
+<U003E> \x6E |0
+<U003F> \x6F |0
+<U0040> \x7C |0
+<U0041> \xC1 |0
+<U0042> \xC2 |0
+<U0043> \xC3 |0
+<U0044> \xC4 |0
+<U0045> \xC5 |0
+<U0046> \xC6 |0
+<U0047> \xC7 |0
+<U0048> \xC8 |0
+<U0049> \xC9 |0
+<U004A> \xD1 |0
+<U004B> \xD2 |0
+<U004C> \xD3 |0
+<U004D> \xD4 |0
+<U004E> \xD5 |0
+<U004F> \xD6 |0
+<U0050> \xD7 |0
+<U0051> \xD8 |0
+<U0052> \xD9 |0
+<U0053> \xE2 |0
+<U0054> \xE3 |0
+<U0055> \xE4 |0
+<U0056> \xE5 |0
+<U0057> \xE6 |0
+<U0058> \xE7 |0
+<U0059> \xE8 |0
+<U005A> \xE9 |0
+<U005B> \xAD |0
+<U005C> \xE0 |0
+<U005D> \xBD |0
+<U005E> \x5F |0
+<U005F> \x6D |0
+<U0060> \x79 |0
+<U0061> \x81 |0
+<U0062> \x82 |0
+<U0063> \x83 |0
+<U0064> \x84 |0
+<U0065> \x85 |0
+<U0066> \x86 |0
+<U0067> \x87 |0
+<U0068> \x88 |0
+<U0069> \x89 |0
+<U006A> \x91 |0
+<U006B> \x92 |0
+<U006C> \x93 |0
+<U006D> \x94 |0
+<U006E> \x95 |0
+<U006F> \x96 |0
+<U0070> \x97 |0
+<U0071> \x98 |0
+<U0072> \x99 |0
+<U0073> \xA2 |0
+<U0074> \xA3 |0
+<U0075> \xA4 |0
+<U0076> \xA5 |0
+<U0077> \xA6 |0
+<U0078> \xA7 |0
+<U0079> \xA8 |0
+<U007A> \xA9 |0
+<U007B> \xC0 |0
+<U007C> \x4F |0
+<U007D> \xD0 |0
+<U007E> \xA1 |0
+<U007F> \x07 |0
+<U0080> \x20 |0
+<U0081> \x21 |0
+<U0082> \x22 |0
+<U0083> \x23 |0
+<U0084> \x24 |0
+<U0085> \x25 |0
+<U0086> \x06 |0
+<U0087> \x17 |0
+<U0088> \x28 |0
+<U0089> \x29 |0
+<U008A> \x2A |0
+<U008B> \x2B |0
+<U008C> \x2C |0
+<U008D> \x09 |0
+<U008E> \x0A |0
+<U008F> \x1B |0
+<U0090> \x30 |0
+<U0091> \x31 |0
+<U0092> \x1A |0
+<U0093> \x33 |0
+<U0094> \x34 |0
+<U0095> \x35 |0
+<U0096> \x36 |0
+<U0097> \x08 |0
+<U0098> \x38 |0
+<U0099> \x39 |0
+<U009A> \x3A |0
+<U009B> \x3B |0
+<U009C> \x04 |0
+<U009D> \x14 |0
+<U009E> \x3E |0
+<U009F> \xFF |0
+<U00A0> \x41 |0
+<U00A1> \xAA |0
+<U00A2> \x4A |0
+<U00A3> \xB1 |0
+<U00A4> \x9F |0
+<U00A5> \xB2 |0
+<U00A6> \x6A |0
+<U00A7> \xB5 |0
+<U00A8> \xBB |0
+<U00A9> \xB4 |0
+<U00AA> \x9A |0
+<U00AB> \x8A |0
+<U00AC> \xB0 |0
+<U00AD> \xCA |0
+<U00AE> \xAF |0
+<U00AF> \xBC |0
+<U00B0> \x90 |0
+<U00B1> \x8F |0
+<U00B2> \xEA |0
+<U00B3> \xFA |0
+<U00B4> \xBE |0
+<U00B5> \xA0 |0
+<U00B6> \xB6 |0
+<U00B7> \xB3 |0
+<U00B8> \x9D |0
+<U00B9> \xDA |0
+<U00BA> \x9B |0
+<U00BB> \x8B |0
+<U00BC> \xB7 |0
+<U00BD> \xB8 |0
+<U00BE> \xB9 |0
+<U00BF> \xAB |0
+<U00C0> \x64 |0
+<U00C1> \x65 |0
+<U00C2> \x62 |0
+<U00C3> \x66 |0
+<U00C4> \x63 |0
+<U00C5> \x67 |0
+<U00C6> \x9E |0
+<U00C7> \x68 |0
+<U00C8> \x74 |0
+<U00C9> \x71 |0
+<U00CA> \x72 |0
+<U00CB> \x73 |0
+<U00CC> \x78 |0
+<U00CD> \x75 |0
+<U00CE> \x76 |0
+<U00CF> \x77 |0
+<U00D0> \xAC |0
+<U00D1> \x69 |0
+<U00D2> \xED |0
+<U00D3> \xEE |0
+<U00D4> \xEB |0
+<U00D5> \xEF |0
+<U00D6> \xEC |0
+<U00D7> \xBF |0
+<U00D8> \x80 |0
+<U00D9> \xFD |0
+<U00DA> \xFE |0
+<U00DB> \xFB |0
+<U00DC> \xFC |0
+<U00DD> \xBA |0
+<U00DE> \xAE |0
+<U00DF> \x59 |0
+<U00E0> \x44 |0
+<U00E1> \x45 |0
+<U00E2> \x42 |0
+<U00E3> \x46 |0
+<U00E4> \x43 |0
+<U00E5> \x47 |0
+<U00E6> \x9C |0
+<U00E7> \x48 |0
+<U00E8> \x54 |0
+<U00E9> \x51 |0
+<U00EA> \x52 |0
+<U00EB> \x53 |0
+<U00EC> \x58 |0
+<U00ED> \x55 |0
+<U00EE> \x56 |0
+<U00EF> \x57 |0
+<U00F0> \x8C |0
+<U00F1> \x49 |0
+<U00F2> \xCD |0
+<U00F3> \xCE |0
+<U00F4> \xCB |0
+<U00F5> \xCF |0
+<U00F6> \xCC |0
+<U00F7> \xE1 |0
+<U00F8> \x70 |0
+<U00F9> \xDD |0
+<U00FA> \xDE |0
+<U00FB> \xDB |0
+<U00FC> \xDC |0
+<U00FD> \x8D |0
+<U00FE> \x8E |0
+<U00FF> \xDF |0
+END CHARMAP
diff --git a/ext/Encode/Encode/cp1250.ucm b/ext/Encode/Encode/cp1250.ucm
new file mode 100644 (file)
index 0000000..61015ae
--- /dev/null
@@ -0,0 +1,263 @@
+# Written by compile -n cp1250 -o Encode/cp1250.ucm Encode/cp1250.enc
+<code_set_name> "cp1250"
+<mb_cur_min> 1
+<mb_cur_max> 1
+<subchar> \x3F
+#
+CHARMAP
+<U0000> \x00 |0
+<U0001> \x01 |0
+<U0002> \x02 |0
+<U0003> \x03 |0
+<U0004> \x04 |0
+<U0005> \x05 |0
+<U0006> \x06 |0
+<U0007> \x07 |0
+<U0008> \x08 |0
+<U0009> \x09 |0
+<U000A> \x0A |0
+<U000B> \x0B |0
+<U000C> \x0C |0
+<U000D> \x0D |0
+<U000E> \x0E |0
+<U000F> \x0F |0
+<U0010> \x10 |0
+<U0011> \x11 |0
+<U0012> \x12 |0
+<U0013> \x13 |0
+<U0014> \x14 |0
+<U0015> \x15 |0
+<U0016> \x16 |0
+<U0017> \x17 |0
+<U0018> \x18 |0
+<U0019> \x19 |0
+<U001A> \x1A |0
+<U001B> \x1B |0
+<U001C> \x1C |0
+<U001D> \x1D |0
+<U001E> \x1E |0
+<U001F> \x1F |0
+<U0020> \x20 |0
+<U0021> \x21 |0
+<U0022> \x22 |0
+<U0023> \x23 |0
+<U0024> \x24 |0
+<U0025> \x25 |0
+<U0026> \x26 |0
+<U0027> \x27 |0
+<U0028> \x28 |0
+<U0029> \x29 |0
+<U002A> \x2A |0
+<U002B> \x2B |0
+<U002C> \x2C |0
+<U002D> \x2D |0
+<U002E> \x2E |0
+<U002F> \x2F |0
+<U0030> \x30 |0
+<U0031> \x31 |0
+<U0032> \x32 |0
+<U0033> \x33 |0
+<U0034> \x34 |0
+<U0035> \x35 |0
+<U0036> \x36 |0
+<U0037> \x37 |0
+<U0038> \x38 |0
+<U0039> \x39 |0
+<U003A> \x3A |0
+<U003B> \x3B |0
+<U003C> \x3C |0
+<U003D> \x3D |0
+<U003E> \x3E |0
+<U003F> \x3F |0
+<U0040> \x40 |0
+<U0041> \x41 |0
+<U0042> \x42 |0
+<U0043> \x43 |0
+<U0044> \x44 |0
+<U0045> \x45 |0
+<U0046> \x46 |0
+<U0047> \x47 |0
+<U0048> \x48 |0
+<U0049> \x49 |0
+<U004A> \x4A |0
+<U004B> \x4B |0
+<U004C> \x4C |0
+<U004D> \x4D |0
+<U004E> \x4E |0
+<U004F> \x4F |0
+<U0050> \x50 |0
+<U0051> \x51 |0
+<U0052> \x52 |0
+<U0053> \x53 |0
+<U0054> \x54 |0
+<U0055> \x55 |0
+<U0056> \x56 |0
+<U0057> \x57 |0
+<U0058> \x58 |0
+<U0059> \x59 |0
+<U005A> \x5A |0
+<U005B> \x5B |0
+<U005C> \x5C |0
+<U005D> \x5D |0
+<U005E> \x5E |0
+<U005F> \x5F |0
+<U0060> \x60 |0
+<U0061> \x61 |0
+<U0062> \x62 |0
+<U0063> \x63 |0
+<U0064> \x64 |0
+<U0065> \x65 |0
+<U0066> \x66 |0
+<U0067> \x67 |0
+<U0068> \x68 |0
+<U0069> \x69 |0
+<U006A> \x6A |0
+<U006B> \x6B |0
+<U006C> \x6C |0
+<U006D> \x6D |0
+<U006E> \x6E |0
+<U006F> \x6F |0
+<U0070> \x70 |0
+<U0071> \x71 |0
+<U0072> \x72 |0
+<U0073> \x73 |0
+<U0074> \x74 |0
+<U0075> \x75 |0
+<U0076> \x76 |0
+<U0077> \x77 |0
+<U0078> \x78 |0
+<U0079> \x79 |0
+<U007A> \x7A |0
+<U007B> \x7B |0
+<U007C> \x7C |0
+<U007D> \x7D |0
+<U007E> \x7E |0
+<U007F> \x7F |0
+<U0080> \x80 |0
+<U0081> \x81 |0
+<U0083> \x83 |0
+<U0088> \x88 |0
+<U0090> \x90 |0
+<U0098> \x98 |0
+<U00A0> \xA0 |0
+<U00A4> \xA4 |0
+<U00A6> \xA6 |0
+<U00A7> \xA7 |0
+<U00A8> \xA8 |0
+<U00A9> \xA9 |0
+<U00AB> \xAB |0
+<U00AD> \xAD |0
+<U00AE> \xAE |0
+<U00B0> \xB0 |0
+<U00B1> \xB1 |0
+<U00B4> \xB4 |0
+<U00B5> \xB5 |0
+<U00B6> \xB6 |0
+<U00B7> \xB7 |0
+<U00B8> \xB8 |0
+<U00BB> \xBB |0
+<U00C1> \xC1 |0
+<U00C2> \xC2 |0
+<U00C4> \xC4 |0
+<U00C7> \xC7 |0
+<U00C9> \xC9 |0
+<U00CB> \xCB |0
+<U00CD> \xCD |0
+<U00CE> \xCE |0
+<U00D3> \xD3 |0
+<U00D4> \xD4 |0
+<U00D6> \xD6 |0
+<U00D7> \xD7 |0
+<U00DA> \xDA |0
+<U00DC> \xDC |0
+<U00DD> \xDD |0
+<U00DF> \xDF |0
+<U00E1> \xE1 |0
+<U00E2> \xE2 |0
+<U00E4> \xE4 |0
+<U00E7> \xE7 |0
+<U00E9> \xE9 |0
+<U00EB> \xEB |0
+<U00ED> \xED |0
+<U00EE> \xEE |0
+<U00F3> \xF3 |0
+<U00F4> \xF4 |0
+<U00F6> \xF6 |0
+<U00F7> \xF7 |0
+<U00FA> \xFA |0
+<U00FC> \xFC |0
+<U00FD> \xFD |0
+<U0102> \xC3 |0
+<U0103> \xE3 |0
+<U0104> \xA5 |0
+<U0105> \xB9 |0
+<U0106> \xC6 |0
+<U0107> \xE6 |0
+<U010C> \xC8 |0
+<U010D> \xE8 |0
+<U010E> \xCF |0
+<U010F> \xEF |0
+<U0110> \xD0 |0
+<U0111> \xF0 |0
+<U0118> \xCA |0
+<U0119> \xEA |0
+<U011A> \xCC |0
+<U011B> \xEC |0
+<U0139> \xC5 |0
+<U013A> \xE5 |0
+<U013D> \xBC |0
+<U013E> \xBE |0
+<U0141> \xA3 |0
+<U0142> \xB3 |0
+<U0143> \xD1 |0
+<U0144> \xF1 |0
+<U0147> \xD2 |0
+<U0148> \xF2 |0
+<U0150> \xD5 |0
+<U0151> \xF5 |0
+<U0154> \xC0 |0
+<U0155> \xE0 |0
+<U0158> \xD8 |0
+<U0159> \xF8 |0
+<U015A> \x8C |0
+<U015B> \x9C |0
+<U015E> \xAA |0
+<U015F> \xBA |0
+<U0160> \x8A |0
+<U0161> \x9A |0
+<U0162> \xDE |0
+<U0163> \xFE |0
+<U0164> \x8D |0
+<U0165> \x9D |0
+<U016E> \xD9 |0
+<U016F> \xF9 |0
+<U0170> \xDB |0
+<U0171> \xFB |0
+<U0179> \x8F |0
+<U017A> \x9F |0
+<U017B> \xAF |0
+<U017C> \xBF |0
+<U017D> \x8E |0
+<U017E> \x9E |0
+<U02C7> \xA1 |0
+<U02D8> \xA2 |0
+<U02D9> \xFF |0
+<U02DB> \xB2 |0
+<U02DD> \xBD |0
+<U2013> \x96 |0
+<U2014> \x97 |0
+<U2018> \x91 |0
+<U2019> \x92 |0
+<U201A> \x82 |0
+<U201C> \x93 |0
+<U201D> \x94 |0
+<U201E> \x84 |0
+<U2020> \x86 |0
+<U2021> \x87 |0
+<U2022> \x95 |0
+<U2026> \x85 |0
+<U2030> \x89 |0
+<U2039> \x8B |0
+<U203A> \x9B |0
+<U2122> \x99 |0
+END CHARMAP
diff --git a/ext/Encode/Encode/cp37.ucm b/ext/Encode/Encode/cp37.ucm
new file mode 100644 (file)
index 0000000..3ce139b
--- /dev/null
@@ -0,0 +1,264 @@
+# Written by compile -n cp37 -o Encode/cp37.ucm Encode/cp37.enc
+<code_set_name> "cp37"
+<mb_cur_min> 1
+<mb_cur_max> 1
+<subchar> \x6F
+#
+CHARMAP
+<U0000> \x00 |0
+<U0001> \x01 |0
+<U0002> \x02 |0
+<U0003> \x03 |0
+<U0004> \x37 |0
+<U0005> \x2D |0
+<U0006> \x2E |0
+<U0007> \x2F |0
+<U0008> \x16 |0
+<U0009> \x05 |0
+<U000A> \x25 |0
+<U000B> \x0B |0
+<U000C> \x0C |0
+<U000D> \x0D |0
+<U000E> \x0E |0
+<U000F> \x0F |0
+<U0010> \x10 |0
+<U0011> \x11 |0
+<U0012> \x12 |0
+<U0013> \x13 |0
+<U0014> \x3C |0
+<U0015> \x3D |0
+<U0016> \x32 |0
+<U0017> \x26 |0
+<U0018> \x18 |0
+<U0019> \x19 |0
+<U001A> \x3F |0
+<U001B> \x27 |0
+<U001C> \x1C |0
+<U001D> \x1D |0
+<U001E> \x1E |0
+<U001F> \x1F |0
+<U0020> \x40 |0
+<U0021> \x5A |0
+<U0022> \x7F |0
+<U0023> \x7B |0
+<U0024> \x5B |0
+<U0025> \x6C |0
+<U0026> \x50 |0
+<U0027> \x7D |0
+<U0028> \x4D |0
+<U0029> \x5D |0
+<U002A> \x5C |0
+<U002B> \x4E |0
+<U002C> \x6B |0
+<U002D> \x60 |0
+<U002E> \x4B |0
+<U002F> \x61 |0
+<U0030> \xF0 |0
+<U0031> \xF1 |0
+<U0032> \xF2 |0
+<U0033> \xF3 |0
+<U0034> \xF4 |0
+<U0035> \xF5 |0
+<U0036> \xF6 |0
+<U0037> \xF7 |0
+<U0038> \xF8 |0
+<U0039> \xF9 |0
+<U003A> \x7A |0
+<U003B> \x5E |0
+<U003C> \x4C |0
+<U003D> \x7E |0
+<U003E> \x6E |0
+<U003F> \x6F |0
+<U0040> \x7C |0
+<U0041> \xC1 |0
+<U0042> \xC2 |0
+<U0043> \xC3 |0
+<U0044> \xC4 |0
+<U0045> \xC5 |0
+<U0046> \xC6 |0
+<U0047> \xC7 |0
+<U0048> \xC8 |0
+<U0049> \xC9 |0
+<U004A> \xD1 |0
+<U004B> \xD2 |0
+<U004C> \xD3 |0
+<U004D> \xD4 |0
+<U004E> \xD5 |0
+<U004F> \xD6 |0
+<U0050> \xD7 |0
+<U0051> \xD8 |0
+<U0052> \xD9 |0
+<U0053> \xE2 |0
+<U0054> \xE3 |0
+<U0055> \xE4 |0
+<U0056> \xE5 |0
+<U0057> \xE6 |0
+<U0058> \xE7 |0
+<U0059> \xE8 |0
+<U005A> \xE9 |0
+<U005B> \xBA |0
+<U005C> \xE0 |0
+<U005D> \xBB |0
+<U005E> \xB0 |0
+<U005F> \x6D |0
+<U0060> \x79 |0
+<U0061> \x81 |0
+<U0062> \x82 |0
+<U0063> \x83 |0
+<U0064> \x84 |0
+<U0065> \x85 |0
+<U0066> \x86 |0
+<U0067> \x87 |0
+<U0068> \x88 |0
+<U0069> \x89 |0
+<U006A> \x91 |0
+<U006B> \x92 |0
+<U006C> \x93 |0
+<U006D> \x94 |0
+<U006E> \x95 |0
+<U006F> \x96 |0
+<U0070> \x97 |0
+<U0071> \x98 |0
+<U0072> \x99 |0
+<U0073> \xA2 |0
+<U0074> \xA3 |0
+<U0075> \xA4 |0
+<U0076> \xA5 |0
+<U0077> \xA6 |0
+<U0078> \xA7 |0
+<U0079> \xA8 |0
+<U007A> \xA9 |0
+<U007B> \xC0 |0
+<U007C> \x4F |0
+<U007D> \xD0 |0
+<U007E> \xA1 |0
+<U007F> \x07 |0
+<U0080> \x20 |0
+<U0081> \x21 |0
+<U0082> \x22 |0
+<U0083> \x23 |0
+<U0084> \x24 |0
+<U0085> \x15 |0
+<U0086> \x06 |0
+<U0087> \x17 |0
+<U0088> \x28 |0
+<U0089> \x29 |0
+<U008A> \x2A |0
+<U008B> \x2B |0
+<U008C> \x2C |0
+<U008D> \x09 |0
+<U008E> \x0A |0
+<U008F> \x1B |0
+<U0090> \x30 |0
+<U0091> \x31 |0
+<U0092> \x1A |0
+<U0093> \x33 |0
+<U0094> \x34 |0
+<U0095> \x35 |0
+<U0096> \x36 |0
+<U0097> \x08 |0
+<U0098> \x38 |0
+<U0099> \x39 |0
+<U009A> \x3A |0
+<U009B> \x3B |0
+<U009C> \x04 |0
+<U009D> \x14 |0
+<U009E> \x3E |0
+<U009F> \xFF |0
+<U00A0> \x41 |0
+<U00A1> \xAA |0
+<U00A2> \x4A |0
+<U00A3> \xB1 |0
+<U00A4> \x9F |0
+<U00A5> \xB2 |0
+<U00A6> \x6A |0
+<U00A7> \xB5 |0
+<U00A8> \xBD |0
+<U00A9> \xB4 |0
+<U00AA> \x9A |0
+<U00AB> \x8A |0
+<U00AC> \x5F |0
+<U00AD> \xCA |0
+<U00AE> \xAF |0
+<U00AF> \xBC |0
+<U00B0> \x90 |0
+<U00B1> \x8F |0
+<U00B2> \xEA |0
+<U00B3> \xFA |0
+<U00B4> \xBE |0
+<U00B5> \xA0 |0
+<U00B6> \xB6 |0
+<U00B7> \xB3 |0
+<U00B8> \x9D |0
+<U00B9> \xDA |0
+<U00BA> \x9B |0
+<U00BB> \x8B |0
+<U00BC> \xB7 |0
+<U00BD> \xB8 |0
+<U00BE> \xB9 |0
+<U00BF> \xAB |0
+<U00C0> \x64 |0
+<U00C1> \x65 |0
+<U00C2> \x62 |0
+<U00C3> \x66 |0
+<U00C4> \x63 |0
+<U00C5> \x67 |0
+<U00C6> \x9E |0
+<U00C7> \x68 |0
+<U00C8> \x74 |0
+<U00C9> \x71 |0
+<U00CA> \x72 |0
+<U00CB> \x73 |0
+<U00CC> \x78 |0
+<U00CD> \x75 |0
+<U00CE> \x76 |0
+<U00CF> \x77 |0
+<U00D0> \xAC |0
+<U00D1> \x69 |0
+<U00D2> \xED |0
+<U00D3> \xEE |0
+<U00D4> \xEB |0
+<U00D5> \xEF |0
+<U00D6> \xEC |0
+<U00D7> \xBF |0
+<U00D8> \x80 |0
+<U00D9> \xFD |0
+<U00DA> \xFE |0
+<U00DB> \xFB |0
+<U00DC> \xFC |0
+<U00DD> \xAD |0
+<U00DE> \xAE |0
+<U00DF> \x59 |0
+<U00E0> \x44 |0
+<U00E1> \x45 |0
+<U00E2> \x42 |0
+<U00E3> \x46 |0
+<U00E4> \x43 |0
+<U00E5> \x47 |0
+<U00E6> \x9C |0
+<U00E7> \x48 |0
+<U00E8> \x54 |0
+<U00E9> \x51 |0
+<U00EA> \x52 |0
+<U00EB> \x53 |0
+<U00EC> \x58 |0
+<U00ED> \x55 |0
+<U00EE> \x56 |0
+<U00EF> \x57 |0
+<U00F0> \x8C |0
+<U00F1> \x49 |0
+<U00F2> \xCD |0
+<U00F3> \xCE |0
+<U00F4> \xCB |0
+<U00F5> \xCF |0
+<U00F6> \xCC |0
+<U00F7> \xE1 |0
+<U00F8> \x70 |0
+<U00F9> \xDD |0
+<U00FA> \xDE |0
+<U00FB> \xDB |0
+<U00FC> \xDC |0
+<U00FD> \x8D |0
+<U00FE> \x8E |0
+<U00FF> \xDF |0
+END CHARMAP
diff --git a/ext/Encode/Encode/dingbats.ucm b/ext/Encode/Encode/dingbats.ucm
new file mode 100644 (file)
index 0000000..767292a
--- /dev/null
@@ -0,0 +1,261 @@
+# Written by compile -n dingbats -o Encode/dingbats.ucm Encode/dingbats.enc
+<code_set_name> "dingbats"
+<mb_cur_min> 1
+<mb_cur_max> 1
+<subchar> \x3F
+#
+CHARMAP
+<U0000> \x00 |0
+<U0001> \x01 |0
+<U0002> \x02 |0
+<U0003> \x03 |0
+<U0004> \x04 |0
+<U0005> \x05 |0
+<U0006> \x06 |0
+<U0007> \x07 |0
+<U0008> \x08 |0
+<U0009> \x09 |0
+<U000A> \x0A |0
+<U000B> \x0B |0
+<U000C> \x0C |0
+<U000D> \x0D |0
+<U000E> \x0E |0
+<U000F> \x0F |0
+<U0010> \x10 |0
+<U0011> \x11 |0
+<U0012> \x12 |0
+<U0013> \x13 |0
+<U0014> \x14 |0
+<U0015> \x15 |0
+<U0016> \x16 |0
+<U0017> \x17 |0
+<U0018> \x18 |0
+<U0019> \x19 |0
+<U001A> \x1A |0
+<U001B> \x1B |0
+<U001C> \x1C |0
+<U001D> \x1D |0
+<U001E> \x1E |0
+<U001F> \x1F |0
+<U0020> \x20 |0
+<U007F> \x7F |0
+<U0080> \x80 |0
+<U0081> \x81 |0
+<U0082> \x82 |0
+<U0083> \x83 |0
+<U0084> \x84 |0
+<U0085> \x85 |0
+<U0086> \x86 |0
+<U0087> \x87 |0
+<U0088> \x88 |0
+<U0089> \x89 |0
+<U008A> \x8A |0
+<U008B> \x8B |0
+<U008C> \x8C |0
+<U008D> \x8D |0
+<U008E> \x8E |0
+<U008F> \x8F |0
+<U0090> \x90 |0
+<U0091> \x91 |0
+<U0092> \x92 |0
+<U0093> \x93 |0
+<U0094> \x94 |0
+<U0095> \x95 |0
+<U0096> \x96 |0
+<U0097> \x97 |0
+<U0098> \x98 |0
+<U0099> \x99 |0
+<U009A> \x9A |0
+<U009B> \x9B |0
+<U009C> \x9C |0
+<U009D> \x9D |0
+<U009E> \x9E |0
+<U009F> \x9F |0
+<U2192> \xD5 |0
+<U2194> \xD6 |0
+<U2195> \xD7 |0
+<U2460> \xAC |0
+<U2461> \xAD |0
+<U2462> \xAE |0
+<U2463> \xAF |0
+<U2464> \xB0 |0
+<U2465> \xB1 |0
+<U2466> \xB2 |0
+<U2467> \xB3 |0
+<U2468> \xB4 |0
+<U2469> \xB5 |0
+<U25A0> \x6E |0
+<U25B2> \x73 |0
+<U25BC> \x74 |0
+<U25C6> \x75 |0
+<U25CF> \x6C |0
+<U25D7> \x77 |0
+<U2605> \x48 |0
+<U260E> \x25 |0
+<U261B> \x2A |0
+<U261E> \x2B |0
+<U2660> \xAB |0
+<U2663> \xA8 |0
+<U2665> \xAA |0
+<U2666> \xA9 |0
+<U2701> \x21 |0
+<U2702> \x22 |0
+<U2703> \x23 |0
+<U2704> \x24 |0
+<U2706> \x26 |0
+<U2707> \x27 |0
+<U2708> \x28 |0
+<U2709> \x29 |0
+<U270C> \x2C |0
+<U270D> \x2D |0
+<U270E> \x2E |0
+<U270F> \x2F |0
+<U2710> \x30 |0
+<U2711> \x31 |0
+<U2712> \x32 |0
+<U2713> \x33 |0
+<U2714> \x34 |0
+<U2715> \x35 |0
+<U2716> \x36 |0
+<U2717> \x37 |0
+<U2718> \x38 |0
+<U2719> \x39 |0
+<U271A> \x3A |0
+<U271B> \x3B |0
+<U271C> \x3C |0
+<U271D> \x3D |0
+<U271E> \x3E |0
+<U271F> \x3F |0
+<U2720> \x40 |0
+<U2721> \x41 |0
+<U2722> \x42 |0
+<U2723> \x43 |0
+<U2724> \x44 |0
+<U2725> \x45 |0
+<U2726> \x46 |0
+<U2727> \x47 |0
+<U2729> \x49 |0
+<U272A> \x4A |0
+<U272B> \x4B |0
+<U272C> \x4C |0
+<U272D> \x4D |0
+<U272E> \x4E |0
+<U272F> \x4F |0
+<U2730> \x50 |0
+<U2731> \x51 |0
+<U2732> \x52 |0
+<U2733> \x53 |0
+<U2734> \x54 |0
+<U2735> \x55 |0
+<U2736> \x56 |0
+<U2737> \x57 |0
+<U2738> \x58 |0
+<U2739> \x59 |0
+<U273A> \x5A |0
+<U273B> \x5B |0
+<U273C> \x5C |0
+<U273D> \x5D |0
+<U273E> \x5E |0
+<U273F> \x5F |0
+<U2740> \x60 |0
+<U2741> \x61 |0
+<U2742> \x62 |0
+<U2743> \x63 |0
+<U2744> \x64 |0
+<U2745> \x65 |0
+<U2746> \x66 |0
+<U2747> \x67 |0
+<U2748> \x68 |0
+<U2749> \x69 |0
+<U274A> \x6A |0
+<U274B> \x6B |0
+<U274D> \x6D |0
+<U274F> \x6F |0
+<U2750> \x70 |0
+<U2751> \x71 |0
+<U2752> \x72 |0
+<U2756> \x76 |0
+<U2758> \x78 |0
+<U2759> \x79 |0
+<U275A> \x7A |0
+<U275B> \x7B |0
+<U275C> \x7C |0
+<U275D> \x7D |0
+<U275E> \x7E |0
+<U2761> \xA1 |0
+<U2762> \xA2 |0
+<U2763> \xA3 |0
+<U2764> \xA4 |0
+<U2765> \xA5 |0
+<U2766> \xA6 |0
+<U2767> \xA7 |0
+<U2776> \xB6 |0
+<U2777> \xB7 |0
+<U2778> \xB8 |0
+<U2779> \xB9 |0
+<U277A> \xBA |0
+<U277B> \xBB |0
+<U277C> \xBC |0
+<U277D> \xBD |0
+<U277E> \xBE |0
+<U277F> \xBF |0
+<U2780> \xC0 |0
+<U2781> \xC1 |0
+<U2782> \xC2 |0
+<U2783> \xC3 |0
+<U2784> \xC4 |0
+<U2785> \xC5 |0
+<U2786> \xC6 |0
+<U2787> \xC7 |0
+<U2788> \xC8 |0
+<U2789> \xC9 |0
+<U278A> \xCA |0
+<U278B> \xCB |0
+<U278C> \xCC |0
+<U278D> \xCD |0
+<U278E> \xCE |0
+<U278F> \xCF |0
+<U2790> \xD0 |0
+<U2791> \xD1 |0
+<U2792> \xD2 |0
+<U2793> \xD3 |0
+<U2794> \xD4 |0
+<U2798> \xD8 |0
+<U2799> \xD9 |0
+<U279A> \xDA |0
+<U279B> \xDB |0
+<U279C> \xDC |0
+<U279D> \xDD |0
+<U279E> \xDE |0
+<U279F> \xDF |0
+<U27A0> \xE0 |0
+<U27A1> \xE1 |0
+<U27A2> \xE2 |0
+<U27A3> \xE3 |0
+<U27A4> \xE4 |0
+<U27A5> \xE5 |0
+<U27A6> \xE6 |0
+<U27A7> \xE7 |0
+<U27A8> \xE8 |0
+<U27A9> \xE9 |0
+<U27AA> \xEA |0
+<U27AB> \xEB |0
+<U27AC> \xEC |0
+<U27AD> \xED |0
+<U27AE> \xEE |0
+<U27AF> \xEF |0
+<U27B1> \xF1 |0
+<U27B2> \xF2 |0
+<U27B3> \xF3 |0
+<U27B4> \xF4 |0
+<U27B5> \xF5 |0
+<U27B6> \xF6 |0
+<U27B7> \xF7 |0
+<U27B8> \xF8 |0
+<U27B9> \xF9 |0
+<U27BA> \xFA |0
+<U27BB> \xFB |0
+<U27BC> \xFC |0
+<U27BD> \xFD |0
+<U27BE> \xFE |0
+END CHARMAP
diff --git a/ext/Encode/Encode/iso8859-1.ucm b/ext/Encode/Encode/iso8859-1.ucm
new file mode 100644 (file)
index 0000000..dff4715
--- /dev/null
@@ -0,0 +1,264 @@
+# Written by compile -n iso8859-1 -o Encode/iso8859-1.ucm Encode/iso8859-1.enc
+<code_set_name> "iso8859-1"
+<mb_cur_min> 1
+<mb_cur_max> 1
+<subchar> \x3F
+#
+CHARMAP
+<U0000> \x00 |0
+<U0001> \x01 |0
+<U0002> \x02 |0
+<U0003> \x03 |0
+<U0004> \x04 |0
+<U0005> \x05 |0
+<U0006> \x06 |0
+<U0007> \x07 |0
+<U0008> \x08 |0
+<U0009> \x09 |0
+<U000A> \x0A |0
+<U000B> \x0B |0
+<U000C> \x0C |0
+<U000D> \x0D |0
+<U000E> \x0E |0
+<U000F> \x0F |0
+<U0010> \x10 |0
+<U0011> \x11 |0
+<U0012> \x12 |0
+<U0013> \x13 |0
+<U0014> \x14 |0
+<U0015> \x15 |0
+<U0016> \x16 |0
+<U0017> \x17 |0
+<U0018> \x18 |0
+<U0019> \x19 |0
+<U001A> \x1A |0
+<U001B> \x1B |0
+<U001C> \x1C |0
+<U001D> \x1D |0
+<U001E> \x1E |0
+<U001F> \x1F |0
+<U0020> \x20 |0
+<U0021> \x21 |0
+<U0022> \x22 |0
+<U0023> \x23 |0
+<U0024> \x24 |0
+<U0025> \x25 |0
+<U0026> \x26 |0
+<U0027> \x27 |0
+<U0028> \x28 |0
+<U0029> \x29 |0
+<U002A> \x2A |0
+<U002B> \x2B |0
+<U002C> \x2C |0
+<U002D> \x2D |0
+<U002E> \x2E |0
+<U002F> \x2F |0
+<U0030> \x30 |0
+<U0031> \x31 |0
+<U0032> \x32 |0
+<U0033> \x33 |0
+<U0034> \x34 |0
+<U0035> \x35 |0
+<U0036> \x36 |0
+<U0037> \x37 |0
+<U0038> \x38 |0
+<U0039> \x39 |0
+<U003A> \x3A |0
+<U003B> \x3B |0
+<U003C> \x3C |0
+<U003D> \x3D |0
+<U003E> \x3E |0
+<U003F> \x3F |0
+<U0040> \x40 |0
+<U0041> \x41 |0
+<U0042> \x42 |0
+<U0043> \x43 |0
+<U0044> \x44 |0
+<U0045> \x45 |0
+<U0046> \x46 |0
+<U0047> \x47 |0
+<U0048> \x48 |0
+<U0049> \x49 |0
+<U004A> \x4A |0
+<U004B> \x4B |0
+<U004C> \x4C |0
+<U004D> \x4D |0
+<U004E> \x4E |0
+<U004F> \x4F |0
+<U0050> \x50 |0
+<U0051> \x51 |0
+<U0052> \x52 |0
+<U0053> \x53 |0
+<U0054> \x54 |0
+<U0055> \x55 |0
+<U0056> \x56 |0
+<U0057> \x57 |0
+<U0058> \x58 |0
+<U0059> \x59 |0
+<U005A> \x5A |0
+<U005B> \x5B |0
+<U005C> \x5C |0
+<U005D> \x5D |0
+<U005E> \x5E |0
+<U005F> \x5F |0
+<U0060> \x60 |0
+<U0061> \x61 |0
+<U0062> \x62 |0
+<U0063> \x63 |0
+<U0064> \x64 |0
+<U0065> \x65 |0
+<U0066> \x66 |0
+<U0067> \x67 |0
+<U0068> \x68 |0
+<U0069> \x69 |0
+<U006A> \x6A |0
+<U006B> \x6B |0
+<U006C> \x6C |0
+<U006D> \x6D |0
+<U006E> \x6E |0
+<U006F> \x6F |0
+<U0070> \x70 |0
+<U0071> \x71 |0
+<U0072> \x72 |0
+<U0073> \x73 |0
+<U0074> \x74 |0
+<U0075> \x75 |0
+<U0076> \x76 |0
+<U0077> \x77 |0
+<U0078> \x78 |0
+<U0079> \x79 |0
+<U007A> \x7A |0
+<U007B> \x7B |0
+<U007C> \x7C |0
+<U007D> \x7D |0
+<U007E> \x7E |0
+<U007F> \x7F |0
+<U0080> \x80 |0
+<U0081> \x81 |0
+<U0082> \x82 |0
+<U0083> \x83 |0
+<U0084> \x84 |0
+<U0085> \x85 |0
+<U0086> \x86 |0
+<U0087> \x87 |0
+<U0088> \x88 |0
+<U0089> \x89 |0
+<U008A> \x8A |0
+<U008B> \x8B |0
+<U008C> \x8C |0
+<U008D> \x8D |0
+<U008E> \x8E |0
+<U008F> \x8F |0
+<U0090> \x90 |0
+<U0091> \x91 |0
+<U0092> \x92 |0
+<U0093> \x93 |0
+<U0094> \x94 |0
+<U0095> \x95 |0
+<U0096> \x96 |0
+<U0097> \x97 |0
+<U0098> \x98 |0
+<U0099> \x99 |0
+<U009A> \x9A |0
+<U009B> \x9B |0
+<U009C> \x9C |0
+<U009D> \x9D |0
+<U009E> \x9E |0
+<U009F> \x9F |0
+<U00A0> \xA0 |0
+<U00A1> \xA1 |0
+<U00A2> \xA2 |0
+<U00A3> \xA3 |0
+<U00A4> \xA4 |0
+<U00A5> \xA5 |0
+<U00A6> \xA6 |0
+<U00A7> \xA7 |0
+<U00A8> \xA8 |0
+<U00A9> \xA9 |0
+<U00AA> \xAA |0
+<U00AB> \xAB |0
+<U00AC> \xAC |0
+<U00AD> \xAD |0
+<U00AE> \xAE |0
+<U00AF> \xAF |0
+<U00B0> \xB0 |0
+<U00B1> \xB1 |0
+<U00B2> \xB2 |0
+<U00B3> \xB3 |0
+<U00B4> \xB4 |0
+<U00B5> \xB5 |0
+<U00B6> \xB6 |0
+<U00B7> \xB7 |0
+<U00B8> \xB8 |0
+<U00B9> \xB9 |0
+<U00BA> \xBA |0
+<U00BB> \xBB |0
+<U00BC> \xBC |0
+<U00BD> \xBD |0
+<U00BE> \xBE |0
+<U00BF> \xBF |0
+<U00C0> \xC0 |0
+<U00C1> \xC1 |0
+<U00C2> \xC2 |0
+<U00C3> \xC3 |0
+<U00C4> \xC4 |0
+<U00C5> \xC5 |0
+<U00C6> \xC6 |0
+<U00C7> \xC7 |0
+<U00C8> \xC8 |0
+<U00C9> \xC9 |0
+<U00CA> \xCA |0
+<U00CB> \xCB |0
+<U00CC> \xCC |0
+<U00CD> \xCD |0
+<U00CE> \xCE |0
+<U00CF> \xCF |0
+<U00D0> \xD0 |0
+<U00D1> \xD1 |0
+<U00D2> \xD2 |0
+<U00D3> \xD3 |0
+<U00D4> \xD4 |0
+<U00D5> \xD5 |0
+<U00D6> \xD6 |0
+<U00D7> \xD7 |0
+<U00D8> \xD8 |0
+<U00D9> \xD9 |0
+<U00DA> \xDA |0
+<U00DB> \xDB |0
+<U00DC> \xDC |0
+<U00DD> \xDD |0
+<U00DE> \xDE |0
+<U00DF> \xDF |0
+<U00E0> \xE0 |0
+<U00E1> \xE1 |0
+<U00E2> \xE2 |0
+<U00E3> \xE3 |0
+<U00E4> \xE4 |0
+<U00E5> \xE5 |0
+<U00E6> \xE6 |0
+<U00E7> \xE7 |0
+<U00E8> \xE8 |0
+<U00E9> \xE9 |0
+<U00EA> \xEA |0
+<U00EB> \xEB |0
+<U00EC> \xEC |0
+<U00ED> \xED |0
+<U00EE> \xEE |0
+<U00EF> \xEF |0
+<U00F0> \xF0 |0
+<U00F1> \xF1 |0
+<U00F2> \xF2 |0
+<U00F3> \xF3 |0
+<U00F4> \xF4 |0
+<U00F5> \xF5 |0
+<U00F6> \xF6 |0
+<U00F7> \xF7 |0
+<U00F8> \xF8 |0
+<U00F9> \xF9 |0
+<U00FA> \xFA |0
+<U00FB> \xFB |0
+<U00FC> \xFC |0
+<U00FD> \xFD |0
+<U00FE> \xFE |0
+<U00FF> \xFF |0
+END CHARMAP
diff --git a/ext/Encode/Encode/iso8859-10.ucm b/ext/Encode/Encode/iso8859-10.ucm
new file mode 100644 (file)
index 0000000..9d4fb82
--- /dev/null
@@ -0,0 +1,264 @@
+# Written by compile -n iso8859-10 -o Encode/iso8859-10.ucm Encode/iso8859-10.enc
+<code_set_name> "iso8859-10"
+<mb_cur_min> 1
+<mb_cur_max> 1
+<subchar> \x3F
+#
+CHARMAP
+<U0000> \x00 |0
+<U0001> \x01 |0
+<U0002> \x02 |0
+<U0003> \x03 |0
+<U0004> \x04 |0
+<U0005> \x05 |0
+<U0006> \x06 |0
+<U0007> \x07 |0
+<U0008> \x08 |0
+<U0009> \x09 |0
+<U000A> \x0A |0
+<U000B> \x0B |0
+<U000C> \x0C |0
+<U000D> \x0D |0
+<U000E> \x0E |0
+<U000F> \x0F |0
+<U0010> \x10 |0
+<U0011> \x11 |0
+<U0012> \x12 |0
+<U0013> \x13 |0
+<U0014> \x14 |0
+<U0015> \x15 |0
+<U0016> \x16 |0
+<U0017> \x17 |0
+<U0018> \x18 |0
+<U0019> \x19 |0
+<U001A> \x1A |0
+<U001B> \x1B |0
+<U001C> \x1C |0
+<U001D> \x1D |0
+<U001E> \x1E |0
+<U001F> \x1F |0
+<U0020> \x20 |0
+<U0021> \x21 |0
+<U0022> \x22 |0
+<U0023> \x23 |0
+<U0024> \x24 |0
+<U0025> \x25 |0
+<U0026> \x26 |0
+<U0027> \x27 |0
+<U0028> \x28 |0
+<U0029> \x29 |0
+<U002A> \x2A |0
+<U002B> \x2B |0
+<U002C> \x2C |0
+<U002D> \x2D |0
+<U002E> \x2E |0
+<U002F> \x2F |0
+<U0030> \x30 |0
+<U0031> \x31 |0
+<U0032> \x32 |0
+<U0033> \x33 |0
+<U0034> \x34 |0
+<U0035> \x35 |0
+<U0036> \x36 |0
+<U0037> \x37 |0
+<U0038> \x38 |0
+<U0039> \x39 |0
+<U003A> \x3A |0
+<U003B> \x3B |0
+<U003C> \x3C |0
+<U003D> \x3D |0
+<U003E> \x3E |0
+<U003F> \x3F |0
+<U0040> \x40 |0
+<U0041> \x41 |0
+<U0042> \x42 |0
+<U0043> \x43 |0
+<U0044> \x44 |0
+<U0045> \x45 |0
+<U0046> \x46 |0
+<U0047> \x47 |0
+<U0048> \x48 |0
+<U0049> \x49 |0
+<U004A> \x4A |0
+<U004B> \x4B |0
+<U004C> \x4C |0
+<U004D> \x4D |0
+<U004E> \x4E |0
+<U004F> \x4F |0
+<U0050> \x50 |0
+<U0051> \x51 |0
+<U0052> \x52 |0
+<U0053> \x53 |0
+<U0054> \x54 |0
+<U0055> \x55 |0
+<U0056> \x56 |0
+<U0057> \x57 |0
+<U0058> \x58 |0
+<U0059> \x59 |0
+<U005A> \x5A |0
+<U005B> \x5B |0
+<U005C> \x5C |0
+<U005D> \x5D |0
+<U005E> \x5E |0
+<U005F> \x5F |0
+<U0060> \x60 |0
+<U0061> \x61 |0
+<U0062> \x62 |0
+<U0063> \x63 |0
+<U0064> \x64 |0
+<U0065> \x65 |0
+<U0066> \x66 |0
+<U0067> \x67 |0
+<U0068> \x68 |0
+<U0069> \x69 |0
+<U006A> \x6A |0
+<U006B> \x6B |0
+<U006C> \x6C |0
+<U006D> \x6D |0
+<U006E> \x6E |0
+<U006F> \x6F |0
+<U0070> \x70 |0
+<U0071> \x71 |0
+<U0072> \x72 |0
+<U0073> \x73 |0
+<U0074> \x74 |0
+<U0075> \x75 |0
+<U0076> \x76 |0
+<U0077> \x77 |0
+<U0078> \x78 |0
+<U0079> \x79 |0
+<U007A> \x7A |0
+<U007B> \x7B |0
+<U007C> \x7C |0
+<U007D> \x7D |0
+<U007E> \x7E |0
+<U007F> \x7F |0
+<U0080> \x80 |0
+<U0081> \x81 |0
+<U0082> \x82 |0
+<U0083> \x83 |0
+<U0084> \x84 |0
+<U0085> \x85 |0
+<U0086> \x86 |0
+<U0087> \x87 |0
+<U0088> \x88 |0
+<U0089> \x89 |0
+<U008A> \x8A |0
+<U008B> \x8B |0
+<U008C> \x8C |0
+<U008D> \x8D |0
+<U008E> \x8E |0
+<U008F> \x8F |0
+<U0090> \x90 |0
+<U0091> \x91 |0
+<U0092> \x92 |0
+<U0093> \x93 |0
+<U0094> \x94 |0
+<U0095> \x95 |0
+<U0096> \x96 |0
+<U0097> \x97 |0
+<U0098> \x98 |0
+<U0099> \x99 |0
+<U009A> \x9A |0
+<U009B> \x9B |0
+<U009C> \x9C |0
+<U009D> \x9D |0
+<U009E> \x9E |0
+<U009F> \x9F |0
+<U00A0> \xA0 |0
+<U00A7> \xA7 |0
+<U00AD> \xAD |0
+<U00B0> \xB0 |0
+<U00B7> \xB7 |0
+<U00C1> \xC1 |0
+<U00C2> \xC2 |0
+<U00C3> \xC3 |0
+<U00C4> \xC4 |0
+<U00C5> \xC5 |0
+<U00C6> \xC6 |0
+<U00C9> \xC9 |0
+<U00CB> \xCB |0
+<U00CD> \xCD |0
+<U00CE> \xCE |0
+<U00CF> \xCF |0
+<U00D0> \xD0 |0
+<U00D3> \xD3 |0
+<U00D4> \xD4 |0
+<U00D5> \xD5 |0
+<U00D6> \xD6 |0
+<U00D8> \xD8 |0
+<U00DA> \xDA |0
+<U00DB> \xDB |0
+<U00DC> \xDC |0
+<U00DD> \xDD |0
+<U00DE> \xDE |0
+<U00DF> \xDF |0
+<U00E1> \xE1 |0
+<U00E2> \xE2 |0
+<U00E3> \xE3 |0
+<U00E4> \xE4 |0
+<U00E5> \xE5 |0
+<U00E6> \xE6 |0
+<U00E9> \xE9 |0
+<U00EB> \xEB |0
+<U00ED> \xED |0
+<U00EE> \xEE |0
+<U00EF> \xEF |0
+<U00F0> \xF0 |0
+<U00F3> \xF3 |0
+<U00F4> \xF4 |0
+<U00F5> \xF5 |0
+<U00F6> \xF6 |0
+<U00F8> \xF8 |0
+<U00FA> \xFA |0
+<U00FB> \xFB |0
+<U00FC> \xFC |0
+<U00FD> \xFD |0
+<U00FE> \xFE |0
+<U0100> \xC0 |0
+<U0101> \xE0 |0
+<U0104> \xA1 |0
+<U0105> \xB1 |0
+<U010C> \xC8 |0
+<U010D> \xE8 |0
+<U0110> \xA9 |0
+<U0111> \xB9 |0
+<U0112> \xA2 |0
+<U0113> \xB2 |0
+<U0116> \xCC |0
+<U0117> \xEC |0
+<U0118> \xCA |0
+<U0119> \xEA |0
+<U0122> \xA3 |0
+<U0123> \xB3 |0
+<U0128> \xA5 |0
+<U0129> \xB5 |0
+<U012A> \xA4 |0
+<U012B> \xB4 |0
+<U012E> \xC7 |0
+<U012F> \xE7 |0
+<U0136> \xA6 |0
+<U0137> \xB6 |0
+<U0138> \xFF |0
+<U013B> \xA8 |0
+<U013C> \xB8 |0
+<U0145> \xD1 |0
+<U0146> \xF1 |0
+<U014A> \xAF |0
+<U014B> \xBF |0
+<U014C> \xD2 |0
+<U014D> \xF2 |0
+<U0160> \xAA |0
+<U0161> \xBA |0
+<U0166> \xAB |0
+<U0167> \xBB |0
+<U0168> \xD7 |0
+<U0169> \xF7 |0
+<U016A> \xAE |0
+<U016B> \xBE |0
+<U0172> \xD9 |0
+<U0173> \xF9 |0
+<U017D> \xAC |0
+<U017E> \xBC |0
+<U2015> \xBD |0
+END CHARMAP
diff --git a/ext/Encode/Encode/iso8859-13.ucm b/ext/Encode/Encode/iso8859-13.ucm
new file mode 100644 (file)
index 0000000..8464623
--- /dev/null
@@ -0,0 +1,264 @@
+# Written by compile -n iso8859-13 -o Encode/iso8859-13.ucm Encode/iso8859-13.enc
+<code_set_name> "iso8859-13"
+<mb_cur_min> 1
+<mb_cur_max> 1
+<subchar> \x3F
+#
+CHARMAP
+<U0000> \x00 |0
+<U0001> \x01 |0
+<U0002> \x02 |0
+<U0003> \x03 |0
+<U0004> \x04 |0
+<U0005> \x05 |0
+<U0006> \x06 |0
+<U0007> \x07 |0
+<U0008> \x08 |0
+<U0009> \x09 |0
+<U000A> \x0A |0
+<U000B> \x0B |0
+<U000C> \x0C |0
+<U000D> \x0D |0
+<U000E> \x0E |0
+<U000F> \x0F |0
+<U0010> \x10 |0
+<U0011> \x11 |0
+<U0012> \x12 |0
+<U0013> \x13 |0
+<U0014> \x14 |0
+<U0015> \x15 |0
+<U0016> \x16 |0
+<U0017> \x17 |0
+<U0018> \x18 |0
+<U0019> \x19 |0
+<U001A> \x1A |0
+<U001B> \x1B |0
+<U001C> \x1C |0
+<U001D> \x1D |0
+<U001E> \x1E |0
+<U001F> \x1F |0
+<U0020> \x20 |0
+<U0021> \x21 |0
+<U0022> \x22 |0
+<U0023> \x23 |0
+<U0024> \x24 |0
+<U0025> \x25 |0
+<U0026> \x26 |0
+<U0027> \x27 |0
+<U0028> \x28 |0
+<U0029> \x29 |0
+<U002A> \x2A |0
+<U002B> \x2B |0
+<U002C> \x2C |0
+<U002D> \x2D |0
+<U002E> \x2E |0
+<U002F> \x2F |0
+<U0030> \x30 |0
+<U0031> \x31 |0
+<U0032> \x32 |0
+<U0033> \x33 |0
+<U0034> \x34 |0
+<U0035> \x35 |0
+<U0036> \x36 |0
+<U0037> \x37 |0
+<U0038> \x38 |0
+<U0039> \x39 |0
+<U003A> \x3A |0
+<U003B> \x3B |0
+<U003C> \x3C |0
+<U003D> \x3D |0
+<U003E> \x3E |0
+<U003F> \x3F |0
+<U0040> \x40 |0
+<U0041> \x41 |0
+<U0042> \x42 |0
+<U0043> \x43 |0
+<U0044> \x44 |0
+<U0045> \x45 |0
+<U0046> \x46 |0
+<U0047> \x47 |0
+<U0048> \x48 |0
+<U0049> \x49 |0
+<U004A> \x4A |0
+<U004B> \x4B |0
+<U004C> \x4C |0
+<U004D> \x4D |0
+<U004E> \x4E |0
+<U004F> \x4F |0
+<U0050> \x50 |0
+<U0051> \x51 |0
+<U0052> \x52 |0
+<U0053> \x53 |0
+<U0054> \x54 |0
+<U0055> \x55 |0
+<U0056> \x56 |0
+<U0057> \x57 |0
+<U0058> \x58 |0
+<U0059> \x59 |0
+<U005A> \x5A |0
+<U005B> \x5B |0
+<U005C> \x5C |0
+<U005D> \x5D |0
+<U005E> \x5E |0
+<U005F> \x5F |0
+<U0060> \x60 |0
+<U0061> \x61 |0
+<U0062> \x62 |0
+<U0063> \x63 |0
+<U0064> \x64 |0
+<U0065> \x65 |0
+<U0066> \x66 |0
+<U0067> \x67 |0
+<U0068> \x68 |0
+<U0069> \x69 |0
+<U006A> \x6A |0
+<U006B> \x6B |0
+<U006C> \x6C |0
+<U006D> \x6D |0
+<U006E> \x6E |0
+<U006F> \x6F |0
+<U0070> \x70 |0
+<U0071> \x71 |0
+<U0072> \x72 |0
+<U0073> \x73 |0
+<U0074> \x74 |0
+<U0075> \x75 |0
+<U0076> \x76 |0
+<U0077> \x77 |0
+<U0078> \x78 |0
+<U0079> \x79 |0
+<U007A> \x7A |0
+<U007B> \x7B |0
+<U007C> \x7C |0
+<U007D> \x7D |0
+<U007E> \x7E |0
+<U007F> \x7F |0
+<U0080> \x80 |0
+<U0081> \x81 |0
+<U0082> \x82 |0
+<U0083> \x83 |0
+<U0084> \x84 |0
+<U0085> \x85 |0
+<U0086> \x86 |0
+<U0087> \x87 |0
+<U0088> \x88 |0
+<U0089> \x89 |0
+<U008A> \x8A |0
+<U008B> \x8B |0
+<U008C> \x8C |0
+<U008D> \x8D |0
+<U008E> \x8E |0
+<U008F> \x8F |0
+<U0090> \x90 |0
+<U0091> \x91 |0
+<U0092> \x92 |0
+<U0093> \x93 |0
+<U0094> \x94 |0
+<U0095> \x95 |0
+<U0096> \x96 |0
+<U0097> \x97 |0
+<U0098> \x98 |0
+<U0099> \x99 |0
+<U009A> \x9A |0
+<U009B> \x9B |0
+<U009C> \x9C |0
+<U009D> \x9D |0
+<U009E> \x9E |0
+<U009F> \x9F |0
+<U00A0> \xA0 |0
+<U00A2> \xA2 |0
+<U00A3> \xA3 |0
+<U00A4> \xA4 |0
+<U00A6> \xA6 |0
+<U00A7> \xA7 |0
+<U00A9> \xA9 |0
+<U00AB> \xAB |0
+<U00AC> \xAC |0
+<U00AD> \xAD |0
+<U00AE> \xAE |0
+<U00B0> \xB0 |0
+<U00B1> \xB1 |0
+<U00B2> \xB2 |0
+<U00B3> \xB3 |0
+<U00B5> \xB5 |0
+<U00B6> \xB6 |0
+<U00B7> \xB7 |0
+<U00B9> \xB9 |0
+<U00BB> \xBB |0
+<U00BC> \xBC |0
+<U00BD> \xBD |0
+<U00BE> \xBE |0
+<U00C4> \xC4 |0
+<U00C5> \xC5 |0
+<U00C6> \xAF |0
+<U00C9> \xC9 |0
+<U00D3> \xD3 |0
+<U00D5> \xD5 |0
+<U00D6> \xD6 |0
+<U00D7> \xD7 |0
+<U00D8> \xA8 |0
+<U00DC> \xDC |0
+<U00DF> \xDF |0
+<U00E4> \xE4 |0
+<U00E5> \xE5 |0
+<U00E6> \xBF |0
+<U00E9> \xE9 |0
+<U00F3> \xF3 |0
+<U00F5> \xF5 |0
+<U00F6> \xF6 |0
+<U00F7> \xF7 |0
+<U00F8> \xB8 |0
+<U00FC> \xFC |0
+<U0100> \xC2 |0
+<U0101> \xE2 |0
+<U0104> \xC0 |0
+<U0105> \xE0 |0
+<U0106> \xC3 |0
+<U0107> \xE3 |0
+<U010C> \xC8 |0
+<U010D> \xE8 |0
+<U0112> \xC7 |0
+<U0113> \xE7 |0
+<U0116> \xCB |0
+<U0117> \xEB |0
+<U0118> \xC6 |0
+<U0119> \xE6 |0
+<U0122> \xCC |0
+<U0123> \xEC |0
+<U012A> \xCE |0
+<U012B> \xEE |0
+<U012E> \xC1 |0
+<U012F> \xE1 |0
+<U0136> \xCD |0
+<U0137> \xED |0
+<U013B> \xCF |0
+<U013C> \xEF |0
+<U0141> \xD9 |0
+<U0142> \xF9 |0
+<U0143> \xD1 |0
+<U0144> \xF1 |0
+<U0145> \xD2 |0
+<U0146> \xF2 |0
+<U014C> \xD4 |0
+<U014D> \xF4 |0
+<U0156> \xAA |0
+<U0157> \xBA |0
+<U015A> \xDA |0
+<U015B> \xFA |0
+<U0160> \xD0 |0
+<U0161> \xF0 |0
+<U016A> \xDB |0
+<U016B> \xFB |0
+<U0172> \xD8 |0
+<U0173> \xF8 |0
+<U0179> \xCA |0
+<U017A> \xEA |0
+<U017B> \xDD |0
+<U017C> \xFD |0
+<U017D> \xDE |0
+<U017E> \xFE |0
+<U2019> \xFF |0
+<U201C> \xB4 |0
+<U201D> \xA1 |0
+<U201E> \xA5 |0
+END CHARMAP
diff --git a/ext/Encode/Encode/iso8859-14.ucm b/ext/Encode/Encode/iso8859-14.ucm
new file mode 100644 (file)
index 0000000..c6d5574
--- /dev/null
@@ -0,0 +1,264 @@
+# Written by compile -n iso8859-14 -o Encode/iso8859-14.ucm Encode/iso8859-14.enc
+<code_set_name> "iso8859-14"
+<mb_cur_min> 1
+<mb_cur_max> 1
+<subchar> \x3F
+#
+CHARMAP
+<U0000> \x00 |0
+<U0001> \x01 |0
+<U0002> \x02 |0
+<U0003> \x03 |0
+<U0004> \x04 |0
+<U0005> \x05 |0
+<U0006> \x06 |0
+<U0007> \x07 |0
+<U0008> \x08 |0
+<U0009> \x09 |0
+<U000A> \x0A |0
+<U000B> \x0B |0
+<U000C> \x0C |0
+<U000D> \x0D |0
+<U000E> \x0E |0
+<U000F> \x0F |0
+<U0010> \x10 |0
+<U0011> \x11 |0
+<U0012> \x12 |0
+<U0013> \x13 |0
+<U0014> \x14 |0
+<U0015> \x15 |0
+<U0016> \x16 |0
+<U0017> \x17 |0
+<U0018> \x18 |0
+<U0019> \x19 |0
+<U001A> \x1A |0
+<U001B> \x1B |0
+<U001C> \x1C |0
+<U001D> \x1D |0
+<U001E> \x1E |0
+<U001F> \x1F |0
+<U0020> \x20 |0
+<U0021> \x21 |0
+<U0022> \x22 |0
+<U0023> \x23 |0
+<U0024> \x24 |0
+<U0025> \x25 |0
+<U0026> \x26 |0
+<U0027> \x27 |0
+<U0028> \x28 |0
+<U0029> \x29 |0
+<U002A> \x2A |0
+<U002B> \x2B |0
+<U002C> \x2C |0
+<U002D> \x2D |0
+<U002E> \x2E |0
+<U002F> \x2F |0
+<U0030> \x30 |0
+<U0031> \x31 |0
+<U0032> \x32 |0
+<U0033> \x33 |0
+<U0034> \x34 |0
+<U0035> \x35 |0
+<U0036> \x36 |0
+<U0037> \x37 |0
+<U0038> \x38 |0
+<U0039> \x39 |0
+<U003A> \x3A |0
+<U003B> \x3B |0
+<U003C> \x3C |0
+<U003D> \x3D |0
+<U003E> \x3E |0
+<U003F> \x3F |0
+<U0040> \x40 |0
+<U0041> \x41 |0
+<U0042> \x42 |0
+<U0043> \x43 |0
+<U0044> \x44 |0
+<U0045> \x45 |0
+<U0046> \x46 |0
+<U0047> \x47 |0
+<U0048> \x48 |0
+<U0049> \x49 |0
+<U004A> \x4A |0
+<U004B> \x4B |0
+<U004C> \x4C |0
+<U004D> \x4D |0
+<U004E> \x4E |0
+<U004F> \x4F |0
+<U0050> \x50 |0
+<U0051> \x51 |0
+<U0052> \x52 |0
+<U0053> \x53 |0
+<U0054> \x54 |0
+<U0055> \x55 |0
+<U0056> \x56 |0
+<U0057> \x57 |0
+<U0058> \x58 |0
+<U0059> \x59 |0
+<U005A> \x5A |0
+<U005B> \x5B |0
+<U005C> \x5C |0
+<U005D> \x5D |0
+<U005E> \x5E |0
+<U005F> \x5F |0
+<U0060> \x60 |0
+<U0061> \x61 |0
+<U0062> \x62 |0
+<U0063> \x63 |0
+<U0064> \x64 |0
+<U0065> \x65 |0
+<U0066> \x66 |0
+<U0067> \x67 |0
+<U0068> \x68 |0
+<U0069> \x69 |0
+<U006A> \x6A |0
+<U006B> \x6B |0
+<U006C> \x6C |0
+<U006D> \x6D |0
+<U006E> \x6E |0
+<U006F> \x6F |0
+<U0070> \x70 |0
+<U0071> \x71 |0
+<U0072> \x72 |0
+<U0073> \x73 |0
+<U0074> \x74 |0
+<U0075> \x75 |0
+<U0076> \x76 |0
+<U0077> \x77 |0
+<U0078> \x78 |0
+<U0079> \x79 |0
+<U007A> \x7A |0
+<U007B> \x7B |0
+<U007C> \x7C |0
+<U007D> \x7D |0
+<U007E> \x7E |0
+<U007F> \x7F |0
+<U0080> \x80 |0
+<U0081> \x81 |0
+<U0082> \x82 |0
+<U0083> \x83 |0
+<U0084> \x84 |0
+<U0085> \x85 |0
+<U0086> \x86 |0
+<U0087> \x87 |0
+<U0088> \x88 |0
+<U0089> \x89 |0
+<U008A> \x8A |0
+<U008B> \x8B |0
+<U008C> \x8C |0
+<U008D> \x8D |0
+<U008E> \x8E |0
+<U008F> \x8F |0
+<U0090> \x90 |0
+<U0091> \x91 |0
+<U0092> \x92 |0
+<U0093> \x93 |0
+<U0094> \x94 |0
+<U0095> \x95 |0
+<U0096> \x96 |0
+<U0097> \x97 |0
+<U0098> \x98 |0
+<U0099> \x99 |0
+<U009A> \x9A |0
+<U009B> \x9B |0
+<U009C> \x9C |0
+<U009D> \x9D |0
+<U009E> \x9E |0
+<U009F> \x9F |0
+<U00A0> \xA0 |0
+<U00A3> \xA3 |0
+<U00A7> \xA7 |0
+<U00A9> \xA9 |0
+<U00AD> \xAD |0
+<U00AE> \xAE |0
+<U00B6> \xB6 |0
+<U00C0> \xC0 |0
+<U00C1> \xC1 |0
+<U00C2> \xC2 |0
+<U00C3> \xC3 |0
+<U00C4> \xC4 |0
+<U00C5> \xC5 |0
+<U00C6> \xC6 |0
+<U00C7> \xC7 |0
+<U00C8> \xC8 |0
+<U00C9> \xC9 |0
+<U00CA> \xCA |0
+<U00CB> \xCB |0
+<U00CC> \xCC |0
+<U00CD> \xCD |0
+<U00CE> \xCE |0
+<U00CF> \xCF |0
+<U00D1> \xD1 |0
+<U00D2> \xD2 |0
+<U00D3> \xD3 |0
+<U00D4> \xD4 |0
+<U00D5> \xD5 |0
+<U00D6> \xD6 |0
+<U00D8> \xD8 |0
+<U00D9> \xD9 |0
+<U00DA> \xDA |0
+<U00DB> \xDB |0
+<U00DC> \xDC |0
+<U00DD> \xDD |0
+<U00DF> \xDF |0
+<U00E0> \xE0 |0
+<U00E1> \xE1 |0
+<U00E2> \xE2 |0
+<U00E3> \xE3 |0
+<U00E4> \xE4 |0
+<U00E5> \xE5 |0
+<U00E6> \xE6 |0
+<U00E7> \xE7 |0
+<U00E8> \xE8 |0
+<U00E9> \xE9 |0
+<U00EA> \xEA |0
+<U00EB> \xEB |0
+<U00EC> \xEC |0
+<U00ED> \xED |0
+<U00EE> \xEE |0
+<U00EF> \xEF |0
+<U00F1> \xF1 |0
+<U00F2> \xF2 |0
+<U00F3> \xF3 |0
+<U00F4> \xF4 |0
+<U00F5> \xF5 |0
+<U00F6> \xF6 |0
+<U00F8> \xF8 |0
+<U00F9> \xF9 |0
+<U00FA> \xFA |0
+<U00FB> \xFB |0
+<U00FC> \xFC |0
+<U00FD> \xFD |0
+<U00FF> \xFF |0
+<U010A> \xA4 |0
+<U010B> \xA5 |0
+<U0120> \xB2 |0
+<U0121> \xB3 |0
+<U0174> \xD0 |0
+<U0175> \xF0 |0
+<U0176> \xDE |0
+<U0177> \xFE |0
+<U0178> \xAF |0
+<U1E02> \xA1 |0
+<U1E03> \xA2 |0
+<U1E0A> \xA6 |0
+<U1E0B> \xAB |0
+<U1E1E> \xB0 |0
+<U1E1F> \xB1 |0
+<U1E40> \xB4 |0
+<U1E41> \xB5 |0
+<U1E56> \xB7 |0
+<U1E57> \xB9 |0
+<U1E60> \xBB |0
+<U1E61> \xBF |0
+<U1E6A> \xD7 |0
+<U1E6B> \xF7 |0
+<U1E80> \xA8 |0
+<U1E81> \xB8 |0
+<U1E82> \xAA |0
+<U1E83> \xBA |0
+<U1E84> \xBD |0
+<U1E85> \xBE |0
+<U1EF2> \xAC |0
+<U1EF3> \xBC |0
+END CHARMAP
diff --git a/ext/Encode/Encode/iso8859-15.ucm b/ext/Encode/Encode/iso8859-15.ucm
new file mode 100644 (file)
index 0000000..a4c2206
--- /dev/null
@@ -0,0 +1,264 @@
+# Written by compile -n iso8859-15 -o Encode/iso8859-15.ucm Encode/iso8859-15.enc
+<code_set_name> "iso8859-15"
+<mb_cur_min> 1
+<mb_cur_max> 1
+<subchar> \x3F
+#
+CHARMAP
+<U0000> \x00 |0
+<U0001> \x01 |0
+<U0002> \x02 |0
+<U0003> \x03 |0
+<U0004> \x04 |0
+<U0005> \x05 |0
+<U0006> \x06 |0
+<U0007> \x07 |0
+<U0008> \x08 |0
+<U0009> \x09 |0
+<U000A> \x0A |0
+<U000B> \x0B |0
+<U000C> \x0C |0
+<U000D> \x0D |0
+<U000E> \x0E |0
+<U000F> \x0F |0
+<U0010> \x10 |0
+<U0011> \x11 |0
+<U0012> \x12 |0
+<U0013> \x13 |0
+<U0014> \x14 |0
+<U0015> \x15 |0
+<U0016> \x16 |0
+<U0017> \x17 |0
+<U0018> \x18 |0
+<U0019> \x19 |0
+<U001A> \x1A |0
+<U001B> \x1B |0
+<U001C> \x1C |0
+<U001D> \x1D |0
+<U001E> \x1E |0
+<U001F> \x1F |0
+<U0020> \x20 |0
+<U0021> \x21 |0
+<U0022> \x22 |0
+<U0023> \x23 |0
+<U0024> \x24 |0
+<U0025> \x25 |0
+<U0026> \x26 |0
+<U0027> \x27 |0
+<U0028> \x28 |0
+<U0029> \x29 |0
+<U002A> \x2A |0
+<U002B> \x2B |0
+<U002C> \x2C |0
+<U002D> \x2D |0
+<U002E> \x2E |0
+<U002F> \x2F |0
+<U0030> \x30 |0
+<U0031> \x31 |0
+<U0032> \x32 |0
+<U0033> \x33 |0
+<U0034> \x34 |0
+<U0035> \x35 |0
+<U0036> \x36 |0
+<U0037> \x37 |0
+<U0038> \x38 |0
+<U0039> \x39 |0
+<U003A> \x3A |0
+<U003B> \x3B |0
+<U003C> \x3C |0
+<U003D> \x3D |0
+<U003E> \x3E |0
+<U003F> \x3F |0
+<U0040> \x40 |0
+<U0041> \x41 |0
+<U0042> \x42 |0
+<U0043> \x43 |0
+<U0044> \x44 |0
+<U0045> \x45 |0
+<U0046> \x46 |0
+<U0047> \x47 |0
+<U0048> \x48 |0
+<U0049> \x49 |0
+<U004A> \x4A |0
+<U004B> \x4B |0
+<U004C> \x4C |0
+<U004D> \x4D |0
+<U004E> \x4E |0
+<U004F> \x4F |0
+<U0050> \x50 |0
+<U0051> \x51 |0
+<U0052> \x52 |0
+<U0053> \x53 |0
+<U0054> \x54 |0
+<U0055> \x55 |0
+<U0056> \x56 |0
+<U0057> \x57 |0
+<U0058> \x58 |0
+<U0059> \x59 |0
+<U005A> \x5A |0
+<U005B> \x5B |0
+<U005C> \x5C |0
+<U005D> \x5D |0
+<U005E> \x5E |0
+<U005F> \x5F |0
+<U0060> \x60 |0
+<U0061> \x61 |0
+<U0062> \x62 |0
+<U0063> \x63 |0
+<U0064> \x64 |0
+<U0065> \x65 |0
+<U0066> \x66 |0
+<U0067> \x67 |0
+<U0068> \x68 |0
+<U0069> \x69 |0
+<U006A> \x6A |0
+<U006B> \x6B |0
+<U006C> \x6C |0
+<U006D> \x6D |0
+<U006E> \x6E |0
+<U006F> \x6F |0
+<U0070> \x70 |0
+<U0071> \x71 |0
+<U0072> \x72 |0
+<U0073> \x73 |0
+<U0074> \x74 |0
+<U0075> \x75 |0
+<U0076> \x76 |0
+<U0077> \x77 |0
+<U0078> \x78 |0
+<U0079> \x79 |0
+<U007A> \x7A |0
+<U007B> \x7B |0
+<U007C> \x7C |0
+<U007D> \x7D |0
+<U007E> \x7E |0
+<U007F> \x7F |0
+<U0080> \x80 |0
+<U0081> \x81 |0
+<U0082> \x82 |0
+<U0083> \x83 |0
+<U0084> \x84 |0
+<U0085> \x85 |0
+<U0086> \x86 |0
+<U0087> \x87 |0
+<U0088> \x88 |0
+<U0089> \x89 |0
+<U008A> \x8A |0
+<U008B> \x8B |0
+<U008C> \x8C |0
+<U008D> \x8D |0
+<U008E> \x8E |0
+<U008F> \x8F |0
+<U0090> \x90 |0
+<U0091> \x91 |0
+<U0092> \x92 |0
+<U0093> \x93 |0
+<U0094> \x94 |0
+<U0095> \x95 |0
+<U0096> \x96 |0
+<U0097> \x97 |0
+<U0098> \x98 |0
+<U0099> \x99 |0
+<U009A> \x9A |0
+<U009B> \x9B |0
+<U009C> \x9C |0
+<U009D> \x9D |0
+<U009E> \x9E |0
+<U009F> \x9F |0
+<U00A0> \xA0 |0
+<U00A1> \xA1 |0
+<U00A2> \xA2 |0
+<U00A3> \xA3 |0
+<U00A5> \xA5 |0
+<U00A7> \xA7 |0
+<U00A9> \xA9 |0
+<U00AA> \xAA |0
+<U00AB> \xAB |0
+<U00AC> \xAC |0
+<U00AD> \xAD |0
+<U00AE> \xAE |0
+<U00AF> \xAF |0
+<U00B0> \xB0 |0
+<U00B1> \xB1 |0
+<U00B2> \xB2 |0
+<U00B3> \xB3 |0
+<U00B5> \xB5 |0
+<U00B6> \xB6 |0
+<U00B7> \xB7 |0
+<U00B9> \xB9 |0
+<U00BA> \xBA |0
+<U00BB> \xBB |0
+<U00BF> \xBF |0
+<U00C0> \xC0 |0
+<U00C1> \xC1 |0
+<U00C2> \xC2 |0
+<U00C3> \xC3 |0
+<U00C4> \xC4 |0
+<U00C5> \xC5 |0
+<U00C6> \xC6 |0
+<U00C7> \xC7 |0
+<U00C8> \xC8 |0
+<U00C9> \xC9 |0
+<U00CA> \xCA |0
+<U00CB> \xCB |0
+<U00CC> \xCC |0
+<U00CD> \xCD |0
+<U00CE> \xCE |0
+<U00CF> \xCF |0
+<U00D0> \xD0 |0
+<U00D1> \xD1 |0
+<U00D2> \xD2 |0
+<U00D3> \xD3 |0
+<U00D4> \xD4 |0
+<U00D5> \xD5 |0
+<U00D6> \xD6 |0
+<U00D7> \xD7 |0
+<U00D8> \xD8 |0
+<U00D9> \xD9 |0
+<U00DA> \xDA |0
+<U00DB> \xDB |0
+<U00DC> \xDC |0
+<U00DD> \xDD |0
+<U00DE> \xDE |0
+<U00DF> \xDF |0
+<U00E0> \xE0 |0
+<U00E1> \xE1 |0
+<U00E2> \xE2 |0
+<U00E3> \xE3 |0
+<U00E4> \xE4 |0
+<U00E5> \xE5 |0
+<U00E6> \xE6 |0
+<U00E7> \xE7 |0
+<U00E8> \xE8 |0
+<U00E9> \xE9 |0
+<U00EA> \xEA |0
+<U00EB> \xEB |0
+<U00EC> \xEC |0
+<U00ED> \xED |0
+<U00EE> \xEE |0
+<U00EF> \xEF |0
+<U00F0> \xF0 |0
+<U00F1> \xF1 |0
+<U00F2> \xF2 |0
+<U00F3> \xF3 |0
+<U00F4> \xF4 |0
+<U00F5> \xF5 |0
+<U00F6> \xF6 |0
+<U00F7> \xF7 |0
+<U00F8> \xF8 |0
+<U00F9> \xF9 |0
+<U00FA> \xFA |0
+<U00FB> \xFB |0
+<U00FC> \xFC |0
+<U00FD> \xFD |0
+<U00FE> \xFE |0
+<U00FF> \xFF |0
+<U0152> \xBC |0
+<U0153> \xBD |0
+<U0160> \xA6 |0
+<U0161> \xA8 |0
+<U0178> \xBE |0
+<U017D> \xB4 |0
+<U017E> \xB8 |0
+<U20AC> \xA4 |0
+END CHARMAP
diff --git a/ext/Encode/Encode/iso8859-16.ucm b/ext/Encode/Encode/iso8859-16.ucm
new file mode 100644 (file)
index 0000000..f11ae8b
--- /dev/null
@@ -0,0 +1,264 @@
+# Written by compile -n iso8859-16 -o Encode/iso8859-16.ucm Encode/iso8859-16.enc
+<code_set_name> "iso8859-16"
+<mb_cur_min> 1
+<mb_cur_max> 1
+<subchar> \x3F
+#
+CHARMAP
+<U0000> \x00 |0
+<U0001> \x01 |0
+<U0002> \x02 |0
+<U0003> \x03 |0
+<U0004> \x04 |0
+<U0005> \x05 |0
+<U0006> \x06 |0
+<U0007> \x07 |0
+<U0008> \x08 |0
+<U0009> \x09 |0
+<U000A> \x0A |0
+<U000B> \x0B |0
+<U000C> \x0C |0
+<U000D> \x0D |0
+<U000E> \x0E |0
+<U000F> \x0F |0
+<U0010> \x10 |0
+<U0011> \x11 |0
+<U0012> \x12 |0
+<U0013> \x13 |0
+<U0014> \x14 |0
+<U0015> \x15 |0
+<U0016> \x16 |0
+<U0017> \x17 |0
+<U0018> \x18 |0
+<U0019> \x19 |0
+<U001A> \x1A |0
+<U001B> \x1B |0
+<U001C> \x1C |0
+<U001D> \x1D |0
+<U001E> \x1E |0
+<U001F> \x1F |0
+<U0020> \x20 |0
+<U0021> \x21 |0
+<U0022> \x22 |0
+<U0023> \x23 |0
+<U0024> \x24 |0
+<U0025> \x25 |0
+<U0026> \x26 |0
+<U0027> \x27 |0
+<U0028> \x28 |0
+<U0029> \x29 |0
+<U002A> \x2A |0
+<U002B> \x2B |0
+<U002C> \x2C |0
+<U002D> \x2D |0
+<U002E> \x2E |0
+<U002F> \x2F |0
+<U0030> \x30 |0
+<U0031> \x31 |0
+<U0032> \x32 |0
+<U0033> \x33 |0
+<U0034> \x34 |0
+<U0035> \x35 |0
+<U0036> \x36 |0
+<U0037> \x37 |0
+<U0038> \x38 |0
+<U0039> \x39 |0
+<U003A> \x3A |0
+<U003B> \x3B |0
+<U003C> \x3C |0
+<U003D> \x3D |0
+<U003E> \x3E |0
+<U003F> \x3F |0
+<U0040> \x40 |0
+<U0041> \x41 |0
+<U0042> \x42 |0
+<U0043> \x43 |0
+<U0044> \x44 |0
+<U0045> \x45 |0
+<U0046> \x46 |0
+<U0047> \x47 |0
+<U0048> \x48 |0
+<U0049> \x49 |0
+<U004A> \x4A |0
+<U004B> \x4B |0
+<U004C> \x4C |0
+<U004D> \x4D |0
+<U004E> \x4E |0
+<U004F> \x4F |0
+<U0050> \x50 |0
+<U0051> \x51 |0
+<U0052> \x52 |0
+<U0053> \x53 |0
+<U0054> \x54 |0
+<U0055> \x55 |0
+<U0056> \x56 |0
+<U0057> \x57 |0
+<U0058> \x58 |0
+<U0059> \x59 |0
+<U005A> \x5A |0
+<U005B> \x5B |0
+<U005C> \x5C |0
+<U005D> \x5D |0
+<U005E> \x5E |0
+<U005F> \x5F |0
+<U0060> \x60 |0
+<U0061> \x61 |0
+<U0062> \x62 |0
+<U0063> \x63 |0
+<U0064> \x64 |0
+<U0065> \x65 |0
+<U0066> \x66 |0
+<U0067> \x67 |0
+<U0068> \x68 |0
+<U0069> \x69 |0
+<U006A> \x6A |0
+<U006B> \x6B |0
+<U006C> \x6C |0
+<U006D> \x6D |0
+<U006E> \x6E |0
+<U006F> \x6F |0
+<U0070> \x70 |0
+<U0071> \x71 |0
+<U0072> \x72 |0
+<U0073> \x73 |0
+<U0074> \x74 |0
+<U0075> \x75 |0
+<U0076> \x76 |0
+<U0077> \x77 |0
+<U0078> \x78 |0
+<U0079> \x79 |0
+<U007A> \x7A |0
+<U007B> \x7B |0
+<U007C> \x7C |0
+<U007D> \x7D |0
+<U007E> \x7E |0
+<U007F> \x7F |0
+<U0080> \x80 |0
+<U0081> \x81 |0
+<U0082> \x82 |0
+<U0083> \x83 |0
+<U0084> \x84 |0
+<U0085> \x85 |0
+<U0086> \x86 |0
+<U0087> \x87 |0
+<U0088> \x88 |0
+<U0089> \x89 |0
+<U008A> \x8A |0
+<U008B> \x8B |0
+<U008C> \x8C |0
+<U008D> \x8D |0
+<U008E> \x8E |0
+<U008F> \x8F |0
+<U0090> \x90 |0
+<U0091> \x91 |0
+<U0092> \x92 |0
+<U0093> \x93 |0
+<U0094> \x94 |0
+<U0095> \x95 |0
+<U0096> \x96 |0
+<U0097> \x97 |0
+<U0098> \x98 |0
+<U0099> \x99 |0
+<U009A> \x9A |0
+<U009B> \x9B |0
+<U009C> \x9C |0
+<U009D> \x9D |0
+<U009E> \x9E |0
+<U009F> \x9F |0
+<U00A0> \xA0 |0
+<U00A7> \xA7 |0
+<U00A9> \xA9 |0
+<U00AB> \xA5 |0
+<U00AD> \xAD |0
+<U00B0> \xB0 |0
+<U00B1> \xB1 |0
+<U00B6> \xB6 |0
+<U00B7> \xB7 |0
+<U00BB> \xBB |0
+<U00C0> \xC0 |0
+<U00C1> \xC1 |0
+<U00C2> \xC2 |0
+<U00C4> \xC4 |0
+<U00C6> \xC6 |0
+<U00C7> \xC7 |0
+<U00C8> \xC8 |0
+<U00C9> \xC9 |0
+<U00CA> \xCA |0
+<U00CB> \xCB |0
+<U00CC> \xCC |0
+<U00CD> \xCD |0
+<U00CE> \xCE |0
+<U00CF> \xCF |0
+<U00D2> \xD2 |0
+<U00D3> \xD3 |0
+<U00D4> \xD4 |0
+<U00D6> \xD6 |0
+<U00D9> \xD9 |0
+<U00DA> \xDA |0
+<U00DB> \xDB |0
+<U00DC> \xDC |0
+<U00DF> \xDF |0
+<U00E0> \xE0 |0
+<U00E1> \xE1 |0
+<U00E2> \xE2 |0
+<U00E4> \xE4 |0
+<U00E6> \xE6 |0
+<U00E7> \xE7 |0
+<U00E8> \xE8 |0
+<U00E9> \xE9 |0
+<U00EA> \xEA |0
+<U00EB> \xEB |0
+<U00EC> \xEC |0
+<U00ED> \xED |0
+<U00EE> \xEE |0
+<U00EF> \xEF |0
+<U00F2> \xF2 |0
+<U00F3> \xF3 |0
+<U00F4> \xF4 |0
+<U00F6> \xF6 |0
+<U00F9> \xF9 |0
+<U00FA> \xFA |0
+<U00FB> \xFB |0
+<U00FC> \xFC |0
+<U00FF> \xFF |0
+<U0102> \xC3 |0
+<U0103> \xE3 |0
+<U0104> \xA1 |0
+<U0105> \xA2 |0
+<U0106> \xC5 |0
+<U0107> \xE5 |0
+<U010C> \xB2 |0
+<U010D> \xB9 |0
+<U0110> \xD0 |0
+<U0111> \xF0 |0
+<U0118> \xDD |0
+<U0119> \xFD |0
+<U0141> \xA3 |0
+<U0142> \xB3 |0
+<U0143> \xD1 |0
+<U0144> \xF1 |0
+<U0150> \xD5 |0
+<U0151> \xF5 |0
+<U0152> \xBC |0
+<U0153> \xBD |0
+<U015A> \xD7 |0
+<U015B> \xF7 |0
+<U0160> \xA6 |0
+<U0161> \xA8 |0
+<U0170> \xD8 |0
+<U0171> \xF8 |0
+<U0178> \xBE |0
+<U0179> \xAC |0
+<U017A> \xAE |0
+<U017B> \xAF |0
+<U017C> \xBF |0
+<U017D> \xB4 |0
+<U017E> \xB8 |0
+<U0218> \xAA |0
+<U0219> \xBA |0
+<U021A> \xDE |0
+<U021B> \xFE |0
+<U201D> \xB5 |0
+<U201E> \xAB |0
+<U20AC> \xA4 |0
+END CHARMAP
diff --git a/ext/Encode/Encode/iso8859-2.ucm b/ext/Encode/Encode/iso8859-2.ucm
new file mode 100644 (file)
index 0000000..2e689b1
--- /dev/null
@@ -0,0 +1,264 @@
+# Written by compile -n iso8859-2 -o Encode/iso8859-2.ucm Encode/iso8859-2.enc
+<code_set_name> "iso8859-2"
+<mb_cur_min> 1
+<mb_cur_max> 1
+<subchar> \x3F
+#
+CHARMAP
+<U0000> \x00 |0
+<U0001> \x01 |0
+<U0002> \x02 |0
+<U0003> \x03 |0
+<U0004> \x04 |0
+<U0005> \x05 |0
+<U0006> \x06 |0
+<U0007> \x07 |0
+<U0008> \x08 |0
+<U0009> \x09 |0
+<U000A> \x0A |0
+<U000B> \x0B |0
+<U000C> \x0C |0
+<U000D> \x0D |0
+<U000E> \x0E |0
+<U000F> \x0F |0
+<U0010> \x10 |0
+<U0011> \x11 |0
+<U0012> \x12 |0
+<U0013> \x13 |0
+<U0014> \x14 |0
+<U0015> \x15 |0
+<U0016> \x16 |0
+<U0017> \x17 |0
+<U0018> \x18 |0
+<U0019> \x19 |0
+<U001A> \x1A |0
+<U001B> \x1B |0
+<U001C> \x1C |0
+<U001D> \x1D |0
+<U001E> \x1E |0
+<U001F> \x1F |0
+<U0020> \x20 |0
+<U0021> \x21 |0
+<U0022> \x22 |0
+<U0023> \x23 |0
+<U0024> \x24 |0
+<U0025> \x25 |0
+<U0026> \x26 |0
+<U0027> \x27 |0
+<U0028> \x28 |0
+<U0029> \x29 |0
+<U002A> \x2A |0
+<U002B> \x2B |0
+<U002C> \x2C |0
+<U002D> \x2D |0
+<U002E> \x2E |0
+<U002F> \x2F |0
+<U0030> \x30 |0
+<U0031> \x31 |0
+<U0032> \x32 |0
+<U0033> \x33 |0
+<U0034> \x34 |0
+<U0035> \x35 |0
+<U0036> \x36 |0
+<U0037> \x37 |0
+<U0038> \x38 |0
+<U0039> \x39 |0
+<U003A> \x3A |0
+<U003B> \x3B |0
+<U003C> \x3C |0
+<U003D> \x3D |0
+<U003E> \x3E |0
+<U003F> \x3F |0
+<U0040> \x40 |0
+<U0041> \x41 |0
+<U0042> \x42 |0
+<U0043> \x43 |0
+<U0044> \x44 |0
+<U0045> \x45 |0
+<U0046> \x46 |0
+<U0047> \x47 |0
+<U0048> \x48 |0
+<U0049> \x49 |0
+<U004A> \x4A |0
+<U004B> \x4B |0
+<U004C> \x4C |0
+<U004D> \x4D |0
+<U004E> \x4E |0
+<U004F> \x4F |0
+<U0050> \x50 |0
+<U0051> \x51 |0
+<U0052> \x52 |0
+<U0053> \x53 |0
+<U0054> \x54 |0
+<U0055> \x55 |0
+<U0056> \x56 |0
+<U0057> \x57 |0
+<U0058> \x58 |0
+<U0059> \x59 |0
+<U005A> \x5A |0
+<U005B> \x5B |0
+<U005C> \x5C |0
+<U005D> \x5D |0
+<U005E> \x5E |0
+<U005F> \x5F |0
+<U0060> \x60 |0
+<U0061> \x61 |0
+<U0062> \x62 |0
+<U0063> \x63 |0
+<U0064> \x64 |0
+<U0065> \x65 |0
+<U0066> \x66 |0
+<U0067> \x67 |0
+<U0068> \x68 |0
+<U0069> \x69 |0
+<U006A> \x6A |0
+<U006B> \x6B |0
+<U006C> \x6C |0
+<U006D> \x6D |0
+<U006E> \x6E |0
+<U006F> \x6F |0
+<U0070> \x70 |0
+<U0071> \x71 |0
+<U0072> \x72 |0
+<U0073> \x73 |0
+<U0074> \x74 |0
+<U0075> \x75 |0
+<U0076> \x76 |0
+<U0077> \x77 |0
+<U0078> \x78 |0
+<U0079> \x79 |0
+<U007A> \x7A |0
+<U007B> \x7B |0
+<U007C> \x7C |0
+<U007D> \x7D |0
+<U007E> \x7E |0
+<U007F> \x7F |0
+<U0080> \x80 |0
+<U0081> \x81 |0
+<U0082> \x82 |0
+<U0083> \x83 |0
+<U0084> \x84 |0
+<U0085> \x85 |0
+<U0086> \x86 |0
+<U0087> \x87 |0
+<U0088> \x88 |0
+<U0089> \x89 |0
+<U008A> \x8A |0
+<U008B> \x8B |0
+<U008C> \x8C |0
+<U008D> \x8D |0
+<U008E> \x8E |0
+<U008F> \x8F |0
+<U0090> \x90 |0
+<U0091> \x91 |0
+<U0092> \x92 |0
+<U0093> \x93 |0
+<U0094> \x94 |0
+<U0095> \x95 |0
+<U0096> \x96 |0
+<U0097> \x97 |0
+<U0098> \x98 |0
+<U0099> \x99 |0
+<U009A> \x9A |0
+<U009B> \x9B |0
+<U009C> \x9C |0
+<U009D> \x9D |0
+<U009E> \x9E |0
+<U009F> \x9F |0
+<U00A0> \xA0 |0
+<U00A4> \xA4 |0
+<U00A7> \xA7 |0
+<U00A8> \xA8 |0
+<U00AD> \xAD |0
+<U00B0> \xB0 |0
+<U00B4> \xB4 |0
+<U00B8> \xB8 |0
+<U00C1> \xC1 |0
+<U00C2> \xC2 |0
+<U00C4> \xC4 |0
+<U00C7> \xC7 |0
+<U00C9> \xC9 |0
+<U00CB> \xCB |0
+<U00CD> \xCD |0
+<U00CE> \xCE |0
+<U00D3> \xD3 |0
+<U00D4> \xD4 |0
+<U00D6> \xD6 |0
+<U00D7> \xD7 |0
+<U00DA> \xDA |0
+<U00DC> \xDC |0
+<U00DD> \xDD |0
+<U00DF> \xDF |0
+<U00E1> \xE1 |0
+<U00E2> \xE2 |0
+<U00E4> \xE4 |0
+<U00E7> \xE7 |0
+<U00E9> \xE9 |0
+<U00EB> \xEB |0
+<U00ED> \xED |0
+<U00EE> \xEE |0
+<U00F3> \xF3 |0
+<U00F4> \xF4 |0
+<U00F6> \xF6 |0
+<U00F7> \xF7 |0
+<U00FA> \xFA |0
+<U00FC> \xFC |0
+<U00FD> \xFD |0
+<U0102> \xC3 |0
+<U0103> \xE3 |0
+<U0104> \xA1 |0
+<U0105> \xB1 |0
+<U0106> \xC6 |0
+<U0107> \xE6 |0
+<U010C> \xC8 |0
+<U010D> \xE8 |0
+<U010E> \xCF |0
+<U010F> \xEF |0
+<U0110> \xD0 |0
+<U0111> \xF0 |0
+<U0118> \xCA |0
+<U0119> \xEA |0
+<U011A> \xCC |0
+<U011B> \xEC |0
+<U0139> \xC5 |0
+<U013A> \xE5 |0
+<U013D> \xA5 |0
+<U013E> \xB5 |0
+<U0141> \xA3 |0
+<U0142> \xB3 |0
+<U0143> \xD1 |0
+<U0144> \xF1 |0
+<U0147> \xD2 |0
+<U0148> \xF2 |0
+<U0150> \xD5 |0
+<U0151> \xF5 |0
+<U0154> \xC0 |0
+<U0155> \xE0 |0
+<U0158> \xD8 |0
+<U0159> \xF8 |0
+<U015A> \xA6 |0
+<U015B> \xB6 |0
+<U015E> \xAA |0
+<U015F> \xBA |0
+<U0160> \xA9 |0
+<U0161> \xB9 |0
+<U0162> \xDE |0
+<U0163> \xFE |0
+<U0164> \xAB |0
+<U0165> \xBB |0
+<U016E> \xD9 |0
+<U016F> \xF9 |0
+<U0170> \xDB |0
+<U0171> \xFB |0
+<U0179> \xAC |0
+<U017A> \xBC |0
+<U017B> \xAF |0
+<U017C> \xBF |0
+<U017D> \xAE |0
+<U017E> \xBE |0
+<U02C7> \xB7 |0
+<U02D8> \xA2 |0
+<U02D9> \xFF |0
+<U02DB> \xB2 |0
+<U02DD> \xBD |0
+END CHARMAP
diff --git a/ext/Encode/Encode/iso8859-3.ucm b/ext/Encode/Encode/iso8859-3.ucm
new file mode 100644 (file)
index 0000000..c22f69e
--- /dev/null
@@ -0,0 +1,257 @@
+# Written by compile -n iso8859-3 -o Encode/iso8859-3.ucm Encode/iso8859-3.enc
+<code_set_name> "iso8859-3"
+<mb_cur_min> 1
+<mb_cur_max> 1
+<subchar> \x3F
+#
+CHARMAP
+<U0000> \x00 |0
+<U0001> \x01 |0
+<U0002> \x02 |0
+<U0003> \x03 |0
+<U0004> \x04 |0
+<U0005> \x05 |0
+<U0006> \x06 |0
+<U0007> \x07 |0
+<U0008> \x08 |0
+<U0009> \x09 |0
+<U000A> \x0A |0
+<U000B> \x0B |0
+<U000C> \x0C |0
+<U000D> \x0D |0
+<U000E> \x0E |0
+<U000F> \x0F |0
+<U0010> \x10 |0
+<U0011> \x11 |0
+<U0012> \x12 |0
+<U0013> \x13 |0
+<U0014> \x14 |0
+<U0015> \x15 |0
+<U0016> \x16 |0
+<U0017> \x17 |0
+<U0018> \x18 |0
+<U0019> \x19 |0
+<U001A> \x1A |0
+<U001B> \x1B |0
+<U001C> \x1C |0
+<U001D> \x1D |0
+<U001E> \x1E |0
+<U001F> \x1F |0
+<U0020> \x20 |0
+<U0021> \x21 |0
+<U0022> \x22 |0
+<U0023> \x23 |0
+<U0024> \x24 |0
+<U0025> \x25 |0
+<U0026> \x26 |0
+<U0027> \x27 |0
+<U0028> \x28 |0
+<U0029> \x29 |0
+<U002A> \x2A |0
+<U002B> \x2B |0
+<U002C> \x2C |0
+<U002D> \x2D |0
+<U002E> \x2E |0
+<U002F> \x2F |0
+<U0030> \x30 |0
+<U0031> \x31 |0
+<U0032> \x32 |0
+<U0033> \x33 |0
+<U0034> \x34 |0
+<U0035> \x35 |0
+<U0036> \x36 |0
+<U0037> \x37 |0
+<U0038> \x38 |0
+<U0039> \x39 |0
+<U003A> \x3A |0
+<U003B> \x3B |0
+<U003C> \x3C |0
+<U003D> \x3D |0
+<U003E> \x3E |0
+<U003F> \x3F |0
+<U0040> \x40 |0
+<U0041> \x41 |0
+<U0042> \x42 |0
+<U0043> \x43 |0
+<U0044> \x44 |0
+<U0045> \x45 |0
+<U0046> \x46 |0
+<U0047> \x47 |0
+<U0048> \x48 |0
+<U0049> \x49 |0
+<U004A> \x4A |0
+<U004B> \x4B |0
+<U004C> \x4C |0
+<U004D> \x4D |0
+<U004E> \x4E |0
+<U004F> \x4F |0
+<U0050> \x50 |0
+<U0051> \x51 |0
+<U0052> \x52 |0
+<U0053> \x53 |0
+<U0054> \x54 |0
+<U0055> \x55 |0
+<U0056> \x56 |0
+<U0057> \x57 |0
+<U0058> \x58 |0
+<U0059> \x59 |0
+<U005A> \x5A |0
+<U005B> \x5B |0
+<U005C> \x5C |0
+<U005D> \x5D |0
+<U005E> \x5E |0
+<U005F> \x5F |0
+<U0060> \x60 |0
+<U0061> \x61 |0
+<U0062> \x62 |0
+<U0063> \x63 |0
+<U0064> \x64 |0
+<U0065> \x65 |0
+<U0066> \x66 |0
+<U0067> \x67 |0
+<U0068> \x68 |0
+<U0069> \x69 |0
+<U006A> \x6A |0
+<U006B> \x6B |0
+<U006C> \x6C |0
+<U006D> \x6D |0
+<U006E> \x6E |0
+<U006F> \x6F |0
+<U0070> \x70 |0
+<U0071> \x71 |0
+<U0072> \x72 |0
+<U0073> \x73 |0
+<U0074> \x74 |0
+<U0075> \x75 |0
+<U0076> \x76 |0
+<U0077> \x77 |0
+<U0078> \x78 |0
+<U0079> \x79 |0
+<U007A> \x7A |0
+<U007B> \x7B |0
+<U007C> \x7C |0
+<U007D> \x7D |0
+<U007E> \x7E |0
+<U007F> \x7F |0
+<U0080> \x80 |0
+<U0081> \x81 |0
+<U0082> \x82 |0
+<U0083> \x83 |0
+<U0084> \x84 |0
+<U0085> \x85 |0
+<U0086> \x86 |0
+<U0087> \x87 |0
+<U0088> \x88 |0
+<U0089> \x89 |0
+<U008A> \x8A |0
+<U008B> \x8B |0
+<U008C> \x8C |0
+<U008D> \x8D |0
+<U008E> \x8E |0
+<U008F> \x8F |0
+<U0090> \x90 |0
+<U0091> \x91 |0
+<U0092> \x92 |0
+<U0093> \x93 |0
+<U0094> \x94 |0
+<U0095> \x95 |0
+<U0096> \x96 |0
+<U0097> \x97 |0
+<U0098> \x98 |0
+<U0099> \x99 |0
+<U009A> \x9A |0
+<U009B> \x9B |0
+<U009C> \x9C |0
+<U009D> \x9D |0
+<U009E> \x9E |0
+<U009F> \x9F |0
+<U00A0> \xA0 |0
+<U00A3> \xA3 |0
+<U00A4> \xA4 |0
+<U00A7> \xA7 |0
+<U00A8> \xA8 |0
+<U00AD> \xAD |0
+<U00B0> \xB0 |0
+<U00B2> \xB2 |0
+<U00B3> \xB3 |0
+<U00B4> \xB4 |0
+<U00B5> \xB5 |0
+<U00B7> \xB7 |0
+<U00B8> \xB8 |0
+<U00BD> \xBD |0
+<U00C0> \xC0 |0
+<U00C1> \xC1 |0
+<U00C2> \xC2 |0
+<U00C4> \xC4 |0
+<U00C7> \xC7 |0
+<U00C8> \xC8 |0
+<U00C9> \xC9 |0
+<U00CA> \xCA |0
+<U00CB> \xCB |0
+<U00CC> \xCC |0
+<U00CD> \xCD |0
+<U00CE> \xCE |0
+<U00CF> \xCF |0
+<U00D1> \xD1 |0
+<U00D2> \xD2 |0
+<U00D3> \xD3 |0
+<U00D4> \xD4 |0
+<U00D6> \xD6 |0
+<U00D7> \xD7 |0
+<U00D9> \xD9 |0
+<U00DA> \xDA |0
+<U00DB> \xDB |0
+<U00DC> \xDC |0
+<U00DF> \xDF |0
+<U00E0> \xE0 |0
+<U00E1> \xE1 |0
+<U00E2> \xE2 |0
+<U00E4> \xE4 |0
+<U00E7> \xE7 |0
+<U00E8> \xE8 |0
+<U00E9> \xE9 |0
+<U00EA> \xEA |0
+<U00EB> \xEB |0
+<U00EC> \xEC |0
+<U00ED> \xED |0
+<U00EE> \xEE |0
+<U00EF> \xEF |0
+<U00F1> \xF1 |0
+<U00F2> \xF2 |0
+<U00F3> \xF3 |0
+<U00F4> \xF4 |0
+<U00F6> \xF6 |0
+<U00F7> \xF7 |0
+<U00F9> \xF9 |0
+<U00FA> \xFA |0
+<U00FB> \xFB |0
+<U00FC> \xFC |0
+<U0108> \xC6 |0
+<U0109> \xE6 |0
+<U010A> \xC5 |0
+<U010B> \xE5 |0
+<U011C> \xD8 |0
+<U011D> \xF8 |0
+<U011E> \xAB |0
+<U011F> \xBB |0
+<U0120> \xD5 |0
+<U0121> \xF5 |0
+<U0124> \xA6 |0
+<U0125> \xB6 |0
+<U0126> \xA1 |0
+<U0127> \xB1 |0
+<U0130> \xA9 |0
+<U0131> \xB9 |0
+<U0134> \xAC |0
+<U0135> \xBC |0
+<U015C> \xDE |0
+<U015D> \xFE |0
+<U015E> \xAA |0
+<U015F> \xBA |0
+<U016C> \xDD |0
+<U016D> \xFD |0
+<U017B> \xAF |0
+<U017C> \xBF |0
+<U02D8> \xA2 |0
+<U02D9> \xFF |0
+END CHARMAP
diff --git a/ext/Encode/Encode/iso8859-4.ucm b/ext/Encode/Encode/iso8859-4.ucm
new file mode 100644 (file)
index 0000000..32f02f5
--- /dev/null
@@ -0,0 +1,264 @@
+# Written by compile -n iso8859-4 -o Encode/iso8859-4.ucm Encode/iso8859-4.enc
+<code_set_name> "iso8859-4"
+<mb_cur_min> 1
+<mb_cur_max> 1
+<subchar> \x3F
+#
+CHARMAP
+<U0000> \x00 |0
+<U0001> \x01 |0
+<U0002> \x02 |0
+<U0003> \x03 |0
+<U0004> \x04 |0
+<U0005> \x05 |0
+<U0006> \x06 |0
+<U0007> \x07 |0
+<U0008> \x08 |0
+<U0009> \x09 |0
+<U000A> \x0A |0
+<U000B> \x0B |0
+<U000C> \x0C |0
+<U000D> \x0D |0
+<U000E> \x0E |0
+<U000F> \x0F |0
+<U0010> \x10 |0
+<U0011> \x11 |0
+<U0012> \x12 |0
+<U0013> \x13 |0
+<U0014> \x14 |0
+<U0015> \x15 |0
+<U0016> \x16 |0
+<U0017> \x17 |0
+<U0018> \x18 |0
+<U0019> \x19 |0
+<U001A> \x1A |0
+<U001B> \x1B |0
+<U001C> \x1C |0
+<U001D> \x1D |0
+<U001E> \x1E |0
+<U001F> \x1F |0
+<U0020> \x20 |0
+<U0021> \x21 |0
+<U0022> \x22 |0
+<U0023> \x23 |0
+<U0024> \x24 |0
+<U0025> \x25 |0
+<U0026> \x26 |0
+<U0027> \x27 |0
+<U0028> \x28 |0
+<U0029> \x29 |0
+<U002A> \x2A |0
+<U002B> \x2B |0
+<U002C> \x2C |0
+<U002D> \x2D |0
+<U002E> \x2E |0
+<U002F> \x2F |0
+<U0030> \x30 |0
+<U0031> \x31 |0
+<U0032> \x32 |0
+<U0033> \x33 |0
+<U0034> \x34 |0
+<U0035> \x35 |0
+<U0036> \x36 |0
+<U0037> \x37 |0
+<U0038> \x38 |0
+<U0039> \x39 |0
+<U003A> \x3A |0
+<U003B> \x3B |0
+<U003C> \x3C |0
+<U003D> \x3D |0
+<U003E> \x3E |0
+<U003F> \x3F |0
+<U0040> \x40 |0
+<U0041> \x41 |0
+<U0042> \x42 |0
+<U0043> \x43 |0
+<U0044> \x44 |0
+<U0045> \x45 |0
+<U0046> \x46 |0
+<U0047> \x47 |0
+<U0048> \x48 |0
+<U0049> \x49 |0
+<U004A> \x4A |0
+<U004B> \x4B |0
+<U004C> \x4C |0
+<U004D> \x4D |0
+<U004E> \x4E |0
+<U004F> \x4F |0
+<U0050> \x50 |0
+<U0051> \x51 |0
+<U0052> \x52 |0
+<U0053> \x53 |0
+<U0054> \x54 |0
+<U0055> \x55 |0
+<U0056> \x56 |0
+<U0057> \x57 |0
+<U0058> \x58 |0
+<U0059> \x59 |0
+<U005A> \x5A |0
+<U005B> \x5B |0
+<U005C> \x5C |0
+<U005D> \x5D |0
+<U005E> \x5E |0
+<U005F> \x5F |0
+<U0060> \x60 |0
+<U0061> \x61 |0
+<U0062> \x62 |0
+<U0063> \x63 |0
+<U0064> \x64 |0
+<U0065> \x65 |0
+<U0066> \x66 |0
+<U0067> \x67 |0
+<U0068> \x68 |0
+<U0069> \x69 |0
+<U006A> \x6A |0
+<U006B> \x6B |0
+<U006C> \x6C |0
+<U006D> \x6D |0
+<U006E> \x6E |0
+<U006F> \x6F |0
+<U0070> \x70 |0
+<U0071> \x71 |0
+<U0072> \x72 |0
+<U0073> \x73 |0
+<U0074> \x74 |0
+<U0075> \x75 |0
+<U0076> \x76 |0
+<U0077> \x77 |0
+<U0078> \x78 |0
+<U0079> \x79 |0
+<U007A> \x7A |0
+<U007B> \x7B |0
+<U007C> \x7C |0
+<U007D> \x7D |0
+<U007E> \x7E |0
+<U007F> \x7F |0
+<U0080> \x80 |0
+<U0081> \x81 |0
+<U0082> \x82 |0
+<U0083> \x83 |0
+<U0084> \x84 |0
+<U0085> \x85 |0
+<U0086> \x86 |0
+<U0087> \x87 |0
+<U0088> \x88 |0
+<U0089> \x89 |0
+<U008A> \x8A |0
+<U008B> \x8B |0
+<U008C> \x8C |0
+<U008D> \x8D |0
+<U008E> \x8E |0
+<U008F> \x8F |0
+<U0090> \x90 |0
+<U0091> \x91 |0
+<U0092> \x92 |0
+<U0093> \x93 |0
+<U0094> \x94 |0
+<U0095> \x95 |0
+<U0096> \x96 |0
+<U0097> \x97 |0
+<U0098> \x98 |0
+<U0099> \x99 |0
+<U009A> \x9A |0
+<U009B> \x9B |0
+<U009C> \x9C |0
+<U009D> \x9D |0
+<U009E> \x9E |0
+<U009F> \x9F |0
+<U00A0> \xA0 |0
+<U00A4> \xA4 |0
+<U00A7> \xA7 |0
+<U00A8> \xA8 |0
+<U00AD> \xAD |0
+<U00AF> \xAF |0
+<U00B0> \xB0 |0
+<U00B4> \xB4 |0
+<U00B8> \xB8 |0
+<U00C1> \xC1 |0
+<U00C2> \xC2 |0
+<U00C3> \xC3 |0
+<U00C4> \xC4 |0
+<U00C5> \xC5 |0
+<U00C6> \xC6 |0
+<U00C9> \xC9 |0
+<U00CB> \xCB |0
+<U00CD> \xCD |0
+<U00CE> \xCE |0
+<U00D4> \xD4 |0
+<U00D5> \xD5 |0
+<U00D6> \xD6 |0
+<U00D7> \xD7 |0
+<U00D8> \xD8 |0
+<U00DA> \xDA |0
+<U00DB> \xDB |0
+<U00DC> \xDC |0
+<U00DF> \xDF |0
+<U00E1> \xE1 |0
+<U00E2> \xE2 |0
+<U00E3> \xE3 |0
+<U00E4> \xE4 |0
+<U00E5> \xE5 |0
+<U00E6> \xE6 |0
+<U00E9> \xE9 |0
+<U00EB> \xEB |0
+<U00ED> \xED |0
+<U00EE> \xEE |0
+<U00F4> \xF4 |0
+<U00F5> \xF5 |0
+<U00F6> \xF6 |0
+<U00F7> \xF7 |0
+<U00F8> \xF8 |0
+<U00FA> \xFA |0
+<U00FB> \xFB |0
+<U00FC> \xFC |0
+<U0100> \xC0 |0
+<U0101> \xE0 |0
+<U0104> \xA1 |0
+<U0105> \xB1 |0
+<U010C> \xC8 |0
+<U010D> \xE8 |0
+<U0110> \xD0 |0
+<U0111> \xF0 |0
+<U0112> \xAA |0
+<U0113> \xBA |0
+<U0116> \xCC |0
+<U0117> \xEC |0
+<U0118> \xCA |0
+<U0119> \xEA |0
+<U0122> \xAB |0
+<U0123> \xBB |0
+<U0128> \xA5 |0
+<U0129> \xB5 |0
+<U012A> \xCF |0
+<U012B> \xEF |0
+<U012E> \xC7 |0
+<U012F> \xE7 |0
+<U0136> \xD3 |0
+<U0137> \xF3 |0
+<U0138> \xA2 |0
+<U013B> \xA6 |0
+<U013C> \xB6 |0
+<U0145> \xD1 |0
+<U0146> \xF1 |0
+<U014A> \xBD |0
+<U014B> \xBF |0
+<U014C> \xD2 |0
+<U014D> \xF2 |0
+<U0156> \xA3 |0
+<U0157> \xB3 |0
+<U0160> \xA9 |0
+<U0161> \xB9 |0
+<U0166> \xAC |0
+<U0167> \xBC |0
+<U0168> \xDD |0
+<U0169> \xFD |0
+<U016A> \xDE |0
+<U016B> \xFE |0
+<U0172> \xD9 |0
+<U0173> \xF9 |0
+<U017D> \xAE |0
+<U017E> \xBE |0
+<U02C7> \xB7 |0
+<U02D9> \xFF |0
+<U02DB> \xB2 |0
+END CHARMAP
diff --git a/ext/Encode/Encode/iso8859-5.ucm b/ext/Encode/Encode/iso8859-5.ucm
new file mode 100644 (file)
index 0000000..72d60d6
--- /dev/null
@@ -0,0 +1,264 @@
+# Written by compile -n iso8859-5 -o Encode/iso8859-5.ucm Encode/iso8859-5.enc
+<code_set_name> "iso8859-5"
+<mb_cur_min> 1
+<mb_cur_max> 1
+<subchar> \x3F
+#
+CHARMAP
+<U0000> \x00 |0
+<U0001> \x01 |0
+<U0002> \x02 |0
+<U0003> \x03 |0
+<U0004> \x04 |0
+<U0005> \x05 |0
+<U0006> \x06 |0
+<U0007> \x07 |0
+<U0008> \x08 |0
+<U0009> \x09 |0
+<U000A> \x0A |0
+<U000B> \x0B |0
+<U000C> \x0C |0
+<U000D> \x0D |0
+<U000E> \x0E |0
+<U000F> \x0F |0
+<U0010> \x10 |0
+<U0011> \x11 |0
+<U0012> \x12 |0
+<U0013> \x13 |0
+<U0014> \x14 |0
+<U0015> \x15 |0
+<U0016> \x16 |0
+<U0017> \x17 |0
+<U0018> \x18 |0
+<U0019> \x19 |0
+<U001A> \x1A |0
+<U001B> \x1B |0
+<U001C> \x1C |0
+<U001D> \x1D |0
+<U001E> \x1E |0
+<U001F> \x1F |0
+<U0020> \x20 |0
+<U0021> \x21 |0
+<U0022> \x22 |0
+<U0023> \x23 |0
+<U0024> \x24 |0
+<U0025> \x25 |0
+<U0026> \x26 |0
+<U0027> \x27 |0
+<U0028> \x28 |0
+<U0029> \x29 |0
+<U002A> \x2A |0
+<U002B> \x2B |0
+<U002C> \x2C |0
+<U002D> \x2D |0
+<U002E> \x2E |0
+<U002F> \x2F |0
+<U0030> \x30 |0
+<U0031> \x31 |0
+<U0032> \x32 |0
+<U0033> \x33 |0
+<U0034> \x34 |0
+<U0035> \x35 |0
+<U0036> \x36 |0
+<U0037> \x37 |0
+<U0038> \x38 |0
+<U0039> \x39 |0
+<U003A> \x3A |0
+<U003B> \x3B |0
+<U003C> \x3C |0
+<U003D> \x3D |0
+<U003E> \x3E |0
+<U003F> \x3F |0
+<U0040> \x40 |0
+<U0041> \x41 |0
+<U0042> \x42 |0
+<U0043> \x43 |0
+<U0044> \x44 |0
+<U0045> \x45 |0
+<U0046> \x46 |0
+<U0047> \x47 |0
+<U0048> \x48 |0
+<U0049> \x49 |0
+<U004A> \x4A |0
+<U004B> \x4B |0
+<U004C> \x4C |0
+<U004D> \x4D |0
+<U004E> \x4E |0
+<U004F> \x4F |0
+<U0050> \x50 |0
+<U0051> \x51 |0
+<U0052> \x52 |0
+<U0053> \x53 |0
+<U0054> \x54 |0
+<U0055> \x55 |0
+<U0056> \x56 |0
+<U0057> \x57 |0
+<U0058> \x58 |0
+<U0059> \x59 |0
+<U005A> \x5A |0
+<U005B> \x5B |0
+<U005C> \x5C |0
+<U005D> \x5D |0
+<U005E> \x5E |0
+<U005F> \x5F |0
+<U0060> \x60 |0
+<U0061> \x61 |0
+<U0062> \x62 |0
+<U0063> \x63 |0
+<U0064> \x64 |0
+<U0065> \x65 |0
+<U0066> \x66 |0
+<U0067> \x67 |0
+<U0068> \x68 |0
+<U0069> \x69 |0
+<U006A> \x6A |0
+<U006B> \x6B |0
+<U006C> \x6C |0
+<U006D> \x6D |0
+<U006E> \x6E |0
+<U006F> \x6F |0
+<U0070> \x70 |0
+<U0071> \x71 |0
+<U0072> \x72 |0
+<U0073> \x73 |0
+<U0074> \x74 |0
+<U0075> \x75 |0
+<U0076> \x76 |0
+<U0077> \x77 |0
+<U0078> \x78 |0
+<U0079> \x79 |0
+<U007A> \x7A |0
+<U007B> \x7B |0
+<U007C> \x7C |0
+<U007D> \x7D |0
+<U007E> \x7E |0
+<U007F> \x7F |0
+<U0080> \x80 |0
+<U0081> \x81 |0
+<U0082> \x82 |0
+<U0083> \x83 |0
+<U0084> \x84 |0
+<U0085> \x85 |0
+<U0086> \x86 |0
+<U0087> \x87 |0
+<U0088> \x88 |0
+<U0089> \x89 |0
+<U008A> \x8A |0
+<U008B> \x8B |0
+<U008C> \x8C |0
+<U008D> \x8D |0
+<U008E> \x8E |0
+<U008F> \x8F |0
+<U0090> \x90 |0
+<U0091> \x91 |0
+<U0092> \x92 |0
+<U0093> \x93 |0
+<U0094> \x94 |0
+<U0095> \x95 |0
+<U0096> \x96 |0
+<U0097> \x97 |0
+<U0098> \x98 |0
+<U0099> \x99 |0
+<U009A> \x9A |0
+<U009B> \x9B |0
+<U009C> \x9C |0
+<U009D> \x9D |0
+<U009E> \x9E |0
+<U009F> \x9F |0
+<U00A0> \xA0 |0
+<U00A7> \xFD |0
+<U00AD> \xAD |0
+<U0401> \xA1 |0
+<U0402> \xA2 |0
+<U0403> \xA3 |0
+<U0404> \xA4 |0
+<U0405> \xA5 |0
+<U0406> \xA6 |0
+<U0407> \xA7 |0
+<U0408> \xA8 |0
+<U0409> \xA9 |0
+<U040A> \xAA |0
+<U040B> \xAB |0
+<U040C> \xAC |0
+<U040E> \xAE |0
+<U040F> \xAF |0
+<U0410> \xB0 |0
+<U0411> \xB1 |0
+<U0412> \xB2 |0
+<U0413> \xB3 |0
+<U0414> \xB4 |0
+<U0415> \xB5 |0
+<U0416> \xB6 |0
+<U0417> \xB7 |0
+<U0418> \xB8 |0
+<U0419> \xB9 |0
+<U041A> \xBA |0
+<U041B> \xBB |0
+<U041C> \xBC |0
+<U041D> \xBD |0
+<U041E> \xBE |0
+<U041F> \xBF |0
+<U0420> \xC0 |0
+<U0421> \xC1 |0
+<U0422> \xC2 |0
+<U0423> \xC3 |0
+<U0424> \xC4 |0
+<U0425> \xC5 |0
+<U0426> \xC6 |0
+<U0427> \xC7 |0
+<U0428> \xC8 |0
+<U0429> \xC9 |0
+<U042A> \xCA |0
+<U042B> \xCB |0
+<U042C> \xCC |0
+<U042D> \xCD |0
+<U042E> \xCE |0
+<U042F> \xCF |0
+<U0430> \xD0 |0
+<U0431> \xD1 |0
+<U0432> \xD2 |0
+<U0433> \xD3 |0
+<U0434> \xD4 |0
+<U0435> \xD5 |0
+<U0436> \xD6 |0
+<U0437> \xD7 |0
+<U0438> \xD8 |0
+<U0439> \xD9 |0
+<U043A> \xDA |0
+<U043B> \xDB |0
+<U043C> \xDC |0
+<U043D> \xDD |0
+<U043E> \xDE |0
+<U043F> \xDF |0
+<U0440> \xE0 |0
+<U0441> \xE1 |0
+<U0442> \xE2 |0
+<U0443> \xE3 |0
+<U0444> \xE4 |0
+<U0445> \xE5 |0
+<U0446> \xE6 |0
+<U0447> \xE7 |0
+<U0448> \xE8 |0
+<U0449> \xE9 |0
+<U044A> \xEA |0
+<U044B> \xEB |0
+<U044C> \xEC |0
+<U044D> \xED |0
+<U044E> \xEE |0
+<U044F> \xEF |0
+<U0451> \xF1 |0
+<U0452> \xF2 |0
+<U0453> \xF3 |0
+<U0454> \xF4 |0
+<U0455> \xF5 |0
+<U0456> \xF6 |0
+<U0457> \xF7 |0
+<U0458> \xF8 |0
+<U0459> \xF9 |0
+<U045A> \xFA |0
+<U045B> \xFB |0
+<U045C> \xFC |0
+<U045E> \xFE |0
+<U045F> \xFF |0
+<U2116> \xF0 |0
+END CHARMAP
diff --git a/ext/Encode/Encode/iso8859-6.ucm b/ext/Encode/Encode/iso8859-6.ucm
new file mode 100644 (file)
index 0000000..60d449e
--- /dev/null
@@ -0,0 +1,219 @@
+# Written by compile -n iso8859-6 -o Encode/iso8859-6.ucm Encode/iso8859-6.enc
+<code_set_name> "iso8859-6"
+<mb_cur_min> 1
+<mb_cur_max> 1
+<subchar> \x3F
+#
+CHARMAP
+<U0000> \x00 |0
+<U0001> \x01 |0
+<U0002> \x02 |0
+<U0003> \x03 |0
+<U0004> \x04 |0
+<U0005> \x05 |0
+<U0006> \x06 |0
+<U0007> \x07 |0
+<U0008> \x08 |0
+<U0009> \x09 |0
+<U000A> \x0A |0
+<U000B> \x0B |0
+<U000C> \x0C |0
+<U000D> \x0D |0
+<U000E> \x0E |0
+<U000F> \x0F |0
+<U0010> \x10 |0
+<U0011> \x11 |0
+<U0012> \x12 |0
+<U0013> \x13 |0
+<U0014> \x14 |0
+<U0015> \x15 |0
+<U0016> \x16 |0
+<U0017> \x17 |0
+<U0018> \x18 |0
+<U0019> \x19 |0
+<U001A> \x1A |0
+<U001B> \x1B |0
+<U001C> \x1C |0
+<U001D> \x1D |0
+<U001E> \x1E |0
+<U001F> \x1F |0
+<U0020> \x20 |0
+<U0021> \x21 |0
+<U0022> \x22 |0
+<U0023> \x23 |0
+<U0024> \x24 |0
+<U0025> \x25 |0
+<U0026> \x26 |0
+<U0027> \x27 |0
+<U0028> \x28 |0
+<U0029> \x29 |0
+<U002A> \x2A |0
+<U002B> \x2B |0
+<U002C> \x2C |0
+<U002D> \x2D |0
+<U002E> \x2E |0
+<U002F> \x2F |0
+<U003A> \x3A |0
+<U003B> \x3B |0
+<U003C> \x3C |0
+<U003D> \x3D |0
+<U003E> \x3E |0
+<U003F> \x3F |0
+<U0040> \x40 |0
+<U0041> \x41 |0
+<U0042> \x42 |0
+<U0043> \x43 |0
+<U0044> \x44 |0
+<U0045> \x45 |0
+<U0046> \x46 |0
+<U0047> \x47 |0
+<U0048> \x48 |0
+<U0049> \x49 |0
+<U004A> \x4A |0
+<U004B> \x4B |0
+<U004C> \x4C |0
+<U004D> \x4D |0
+<U004E> \x4E |0
+<U004F> \x4F |0
+<U0050> \x50 |0
+<U0051> \x51 |0
+<U0052> \x52 |0
+<U0053> \x53 |0
+<U0054> \x54 |0
+<U0055> \x55 |0
+<U0056> \x56 |0
+<U0057> \x57 |0
+<U0058> \x58 |0
+<U0059> \x59 |0
+<U005A> \x5A |0
+<U005B> \x5B |0
+<U005C> \x5C |0
+<U005D> \x5D |0
+<U005E> \x5E |0
+<U005F> \x5F |0
+<U0060> \x60 |0
+<U0061> \x61 |0
+<U0062> \x62 |0
+<U0063> \x63 |0
+<U0064> \x64 |0
+<U0065> \x65 |0
+<U0066> \x66 |0
+<U0067> \x67 |0
+<U0068> \x68 |0
+<U0069> \x69 |0
+<U006A> \x6A |0
+<U006B> \x6B |0
+<U006C> \x6C |0
+<U006D> \x6D |0
+<U006E> \x6E |0
+<U006F> \x6F |0
+<U0070> \x70 |0
+<U0071> \x71 |0
+<U0072> \x72 |0
+<U0073> \x73 |0
+<U0074> \x74 |0
+<U0075> \x75 |0
+<U0076> \x76 |0
+<U0077> \x77 |0
+<U0078> \x78 |0
+<U0079> \x79 |0
+<U007A> \x7A |0
+<U007B> \x7B |0
+<U007C> \x7C |0
+<U007D> \x7D |0
+<U007E> \x7E |0
+<U007F> \x7F |0
+<U0080> \x80 |0
+<U0081> \x81 |0
+<U0082> \x82 |0
+<U0083> \x83 |0
+<U0084> \x84 |0
+<U0085> \x85 |0
+<U0086> \x86 |0
+<U0087> \x87 |0
+<U0088> \x88 |0
+<U0089> \x89 |0
+<U008A> \x8A |0
+<U008B> \x8B |0
+<U008C> \x8C |0
+<U008D> \x8D |0
+<U008E> \x8E |0
+<U008F> \x8F |0
+<U0090> \x90 |0
+<U0091> \x91 |0
+<U0092> \x92 |0
+<U0093> \x93 |0
+<U0094> \x94 |0
+<U0095> \x95 |0
+<U0096> \x96 |0
+<U0097> \x97 |0
+<U0098> \x98 |0
+<U0099> \x99 |0
+<U009A> \x9A |0
+<U009B> \x9B |0
+<U009C> \x9C |0
+<U009D> \x9D |0
+<U009E> \x9E |0
+<U009F> \x9F |0
+<U00A0> \xA0 |0
+<U00A4> \xA4 |0
+<U00AD> \xAD |0
+<U060C> \xAC |0
+<U061B> \xBB |0
+<U061F> \xBF |0
+<U0621> \xC1 |0
+<U0622> \xC2 |0
+<U0623> \xC3 |0
+<U0624> \xC4 |0
+<U0625> \xC5 |0
+<U0626> \xC6 |0
+<U0627> \xC7 |0
+<U0628> \xC8 |0
+<U0629> \xC9 |0
+<U062A> \xCA |0
+<U062B> \xCB |0
+<U062C> \xCC |0
+<U062D> \xCD |0
+<U062E> \xCE |0
+<U062F> \xCF |0
+<U0630> \xD0 |0
+<U0631> \xD1 |0
+<U0632> \xD2 |0
+<U0633> \xD3 |0
+<U0634> \xD4 |0
+<U0635> \xD5 |0
+<U0636> \xD6 |0
+<U0637> \xD7 |0
+<U0638> \xD8 |0
+<U0639> \xD9 |0
+<U063A> \xDA |0
+<U0640> \xE0 |0
+<U0641> \xE1 |0
+<U0642> \xE2 |0
+<U0643> \xE3 |0
+<U0644> \xE4 |0
+<U0645> \xE5 |0
+<U0646> \xE6 |0
+<U0647> \xE7 |0
+<U0648> \xE8 |0
+<U0649> \xE9 |0
+<U064A> \xEA |0
+<U064B> \xEB |0
+<U064C> \xEC |0
+<U064D> \xED |0
+<U064E> \xEE |0
+<U064F> \xEF |0
+<U0650> \xF0 |0
+<U0651> \xF1 |0
+<U0652> \xF2 |0
+<U0660> \x30 |0
+<U0661> \x31 |0
+<U0662> \x32 |0
+<U0663> \x33 |0
+<U0664> \x34 |0
+<U0665> \x35 |0
+<U0666> \x36 |0
+<U0667> \x37 |0
+<U0668> \x38 |0
+<U0669> \x39 |0
+END CHARMAP
diff --git a/ext/Encode/Encode/iso8859-7.ucm b/ext/Encode/Encode/iso8859-7.ucm
new file mode 100644 (file)
index 0000000..047083d
--- /dev/null
@@ -0,0 +1,258 @@
+# Written by compile -n iso8859-7 -o Encode/iso8859-7.ucm Encode/iso8859-7.enc
+<code_set_name> "iso8859-7"
+<mb_cur_min> 1
+<mb_cur_max> 1
+<subchar> \x3F
+#
+CHARMAP
+<U0000> \x00 |0
+<U0001> \x01 |0
+<U0002> \x02 |0
+<U0003> \x03 |0
+<U0004> \x04 |0
+<U0005> \x05 |0
+<U0006> \x06 |0
+<U0007> \x07 |0
+<U0008> \x08 |0
+<U0009> \x09 |0
+<U000A> \x0A |0
+<U000B> \x0B |0
+<U000C> \x0C |0
+<U000D> \x0D |0
+<U000E> \x0E |0
+<U000F> \x0F |0
+<U0010> \x10 |0
+<U0011> \x11 |0
+<U0012> \x12 |0
+<U0013> \x13 |0
+<U0014> \x14 |0
+<U0015> \x15 |0
+<U0016> \x16 |0
+<U0017> \x17 |0
+<U0018> \x18 |0
+<U0019> \x19 |0
+<U001A> \x1A |0
+<U001B> \x1B |0
+<U001C> \x1C |0
+<U001D> \x1D |0
+<U001E> \x1E |0
+<U001F> \x1F |0
+<U0020> \x20 |0
+<U0021> \x21 |0
+<U0022> \x22 |0
+<U0023> \x23 |0
+<U0024> \x24 |0
+<U0025> \x25 |0
+<U0026> \x26 |0
+<U0027> \x27 |0
+<U0028> \x28 |0
+<U0029> \x29 |0
+<U002A> \x2A |0
+<U002B> \x2B |0
+<U002C> \x2C |0
+<U002D> \x2D |0
+<U002E> \x2E |0
+<U002F> \x2F |0
+<U0030> \x30 |0
+<U0031> \x31 |0
+<U0032> \x32 |0
+<U0033> \x33 |0
+<U0034> \x34 |0
+<U0035> \x35 |0
+<U0036> \x36 |0
+<U0037> \x37 |0
+<U0038> \x38 |0
+<U0039> \x39 |0
+<U003A> \x3A |0
+<U003B> \x3B |0
+<U003C> \x3C |0
+<U003D> \x3D |0
+<U003E> \x3E |0
+<U003F> \x3F |0
+<U0040> \x40 |0
+<U0041> \x41 |0
+<U0042> \x42 |0
+<U0043> \x43 |0
+<U0044> \x44 |0
+<U0045> \x45 |0
+<U0046> \x46 |0
+<U0047> \x47 |0
+<U0048> \x48 |0
+<U0049> \x49 |0
+<U004A> \x4A |0
+<U004B> \x4B |0
+<U004C> \x4C |0
+<U004D> \x4D |0
+<U004E> \x4E |0
+<U004F> \x4F |0
+<U0050> \x50 |0
+<U0051> \x51 |0
+<U0052> \x52 |0
+<U0053> \x53 |0
+<U0054> \x54 |0
+<U0055> \x55 |0
+<U0056> \x56 |0
+<U0057> \x57 |0
+<U0058> \x58 |0
+<U0059> \x59 |0
+<U005A> \x5A |0
+<U005B> \x5B |0
+<U005C> \x5C |0
+<U005D> \x5D |0
+<U005E> \x5E |0
+<U005F> \x5F |0
+<U0060> \x60 |0
+<U0061> \x61 |0
+<U0062> \x62 |0
+<U0063> \x63 |0
+<U0064> \x64 |0
+<U0065> \x65 |0
+<U0066> \x66 |0
+<U0067> \x67 |0
+<U0068> \x68 |0
+<U0069> \x69 |0
+<U006A> \x6A |0
+<U006B> \x6B |0
+<U006C> \x6C |0
+<U006D> \x6D |0
+<U006E> \x6E |0
+<U006F> \x6F |0
+<U0070> \x70 |0
+<U0071> \x71 |0
+<U0072> \x72 |0
+<U0073> \x73 |0
+<U0074> \x74 |0
+<U0075> \x75 |0
+<U0076> \x76 |0
+<U0077> \x77 |0
+<U0078> \x78 |0
+<U0079> \x79 |0
+<U007A> \x7A |0
+<U007B> \x7B |0
+<U007C> \x7C |0
+<U007D> \x7D |0
+<U007E> \x7E |0
+<U007F> \x7F |0
+<U0080> \x80 |0
+<U0081> \x81 |0
+<U0082> \x82 |0
+<U0083> \x83 |0
+<U0084> \x84 |0
+<U0085> \x85 |0
+<U0086> \x86 |0
+<U0087> \x87 |0
+<U0088> \x88 |0
+<U0089> \x89 |0
+<U008A> \x8A |0
+<U008B> \x8B |0
+<U008C> \x8C |0
+<U008D> \x8D |0
+<U008E> \x8E |0
+<U008F> \x8F |0
+<U0090> \x90 |0
+<U0091> \x91 |0
+<U0092> \x92 |0
+<U0093> \x93 |0
+<U0094> \x94 |0
+<U0095> \x95 |0
+<U0096> \x96 |0
+<U0097> \x97 |0
+<U0098> \x98 |0
+<U0099> \x99 |0
+<U009A> \x9A |0
+<U009B> \x9B |0
+<U009C> \x9C |0
+<U009D> \x9D |0
+<U009E> \x9E |0
+<U009F> \x9F |0
+<U00A0> \xA0 |0
+<U00A3> \xA3 |0
+<U00A6> \xA6 |0
+<U00A7> \xA7 |0
+<U00A8> \xA8 |0
+<U00A9> \xA9 |0
+<U00AB> \xAB |0
+<U00AC> \xAC |0
+<U00AD> \xAD |0
+<U00B0> \xB0 |0
+<U00B1> \xB1 |0
+<U00B2> \xB2 |0
+<U00B3> \xB3 |0
+<U00B7> \xB7 |0
+<U00BB> \xBB |0
+<U00BD> \xBD |0
+<U02BC> \xA2 |0
+<U02BD> \xA1 |0
+<U0384> \xB4 |0
+<U0385> \xB5 |0
+<U0386> \xB6 |0
+<U0388> \xB8 |0
+<U0389> \xB9 |0
+<U038A> \xBA |0
+<U038C> \xBC |0
+<U038E> \xBE |0
+<U038F> \xBF |0
+<U0390> \xC0 |0
+<U0391> \xC1 |0
+<U0392> \xC2 |0
+<U0393> \xC3 |0
+<U0394> \xC4 |0
+<U0395> \xC5 |0
+<U0396> \xC6 |0
+<U0397> \xC7 |0
+<U0398> \xC8 |0
+<U0399> \xC9 |0
+<U039A> \xCA |0
+<U039B> \xCB |0
+<U039C> \xCC |0
+<U039D> \xCD |0
+<U039E> \xCE |0
+<U039F> \xCF |0
+<U03A0> \xD0 |0
+<U03A1> \xD1 |0
+<U03A3> \xD3 |0
+<U03A4> \xD4 |0
+<U03A5> \xD5 |0
+<U03A6> \xD6 |0
+<U03A7> \xD7 |0
+<U03A8> \xD8 |0
+<U03A9> \xD9 |0
+<U03AA> \xDA |0
+<U03AB> \xDB |0
+<U03AC> \xDC |0
+<U03AD> \xDD |0
+<U03AE> \xDE |0
+<U03AF> \xDF |0
+<U03B0> \xE0 |0
+<U03B1> \xE1 |0
+<U03B2> \xE2 |0
+<U03B3> \xE3 |0
+<U03B4> \xE4 |0
+<U03B5> \xE5 |0
+<U03B6> \xE6 |0
+<U03B7> \xE7 |0
+<U03B8> \xE8 |0
+<U03B9> \xE9 |0
+<U03BA> \xEA |0
+<U03BB> \xEB |0
+<U03BC> \xEC |0
+<U03BD> \xED |0
+<U03BE> \xEE |0
+<U03BF> \xEF |0
+<U03C0> \xF0 |0
+<U03C1> \xF1 |0
+<U03C2> \xF2 |0
+<U03C3> \xF3 |0
+<U03C4> \xF4 |0
+<U03C5> \xF5 |0
+<U03C6> \xF6 |0
+<U03C7> \xF7 |0
+<U03C8> \xF8 |0
+<U03C9> \xF9 |0
+<U03CA> \xFA |0
+<U03CB> \xFB |0
+<U03CC> \xFC |0
+<U03CD> \xFD |0
+<U03CE> \xFE |0
+<U2015> \xAF |0
+END CHARMAP
diff --git a/ext/Encode/Encode/iso8859-8.ucm b/ext/Encode/Encode/iso8859-8.ucm
new file mode 100644 (file)
index 0000000..0accf42
--- /dev/null
@@ -0,0 +1,226 @@
+# Written by compile -n iso8859-8 -o Encode/iso8859-8.ucm Encode/iso8859-8.enc
+<code_set_name> "iso8859-8"
+<mb_cur_min> 1
+<mb_cur_max> 1
+<subchar> \x3F
+#
+CHARMAP
+<U0000> \x00 |0
+<U0001> \x01 |0
+<U0002> \x02 |0
+<U0003> \x03 |0
+<U0004> \x04 |0
+<U0005> \x05 |0
+<U0006> \x06 |0
+<U0007> \x07 |0
+<U0008> \x08 |0
+<U0009> \x09 |0
+<U000A> \x0A |0
+<U000B> \x0B |0
+<U000C> \x0C |0
+<U000D> \x0D |0
+<U000E> \x0E |0
+<U000F> \x0F |0
+<U0010> \x10 |0
+<U0011> \x11 |0
+<U0012> \x12 |0
+<U0013> \x13 |0
+<U0014> \x14 |0
+<U0015> \x15 |0
+<U0016> \x16 |0
+<U0017> \x17 |0
+<U0018> \x18 |0
+<U0019> \x19 |0
+<U001A> \x1A |0
+<U001B> \x1B |0
+<U001C> \x1C |0
+<U001D> \x1D |0
+<U001E> \x1E |0
+<U001F> \x1F |0
+<U0020> \x20 |0
+<U0021> \x21 |0
+<U0022> \x22 |0
+<U0023> \x23 |0
+<U0024> \x24 |0
+<U0025> \x25 |0
+<U0026> \x26 |0
+<U0027> \x27 |0
+<U0028> \x28 |0
+<U0029> \x29 |0
+<U002A> \x2A |0
+<U002B> \x2B |0
+<U002C> \x2C |0
+<U002D> \x2D |0
+<U002E> \x2E |0
+<U002F> \x2F |0
+<U0030> \x30 |0
+<U0031> \x31 |0
+<U0032> \x32 |0
+<U0033> \x33 |0
+<U0034> \x34 |0
+<U0035> \x35 |0
+<U0036> \x36 |0
+<U0037> \x37 |0
+<U0038> \x38 |0
+<U0039> \x39 |0
+<U003A> \x3A |0
+<U003B> \x3B |0
+<U003C> \x3C |0
+<U003D> \x3D |0
+<U003E> \x3E |0
+<U003F> \x3F |0
+<U0040> \x40 |0
+<U0041> \x41 |0
+<U0042> \x42 |0
+<U0043> \x43 |0
+<U0044> \x44 |0
+<U0045> \x45 |0
+<U0046> \x46 |0
+<U0047> \x47 |0
+<U0048> \x48 |0
+<U0049> \x49 |0
+<U004A> \x4A |0
+<U004B> \x4B |0
+<U004C> \x4C |0
+<U004D> \x4D |0
+<U004E> \x4E |0
+<U004F> \x4F |0
+<U0050> \x50 |0
+<U0051> \x51 |0
+<U0052> \x52 |0
+<U0053> \x53 |0
+<U0054> \x54 |0
+<U0055> \x55 |0
+<U0056> \x56 |0
+<U0057> \x57 |0
+<U0058> \x58 |0
+<U0059> \x59 |0
+<U005A> \x5A |0
+<U005B> \x5B |0
+<U005C> \x5C |0
+<U005D> \x5D |0
+<U005E> \x5E |0
+<U005F> \x5F |0
+<U0060> \x60 |0
+<U0061> \x61 |0
+<U0062> \x62 |0
+<U0063> \x63 |0
+<U0064> \x64 |0
+<U0065> \x65 |0
+<U0066> \x66 |0
+<U0067> \x67 |0
+<U0068> \x68 |0
+<U0069> \x69 |0
+<U006A> \x6A |0
+<U006B> \x6B |0
+<U006C> \x6C |0
+<U006D> \x6D |0
+<U006E> \x6E |0
+<U006F> \x6F |0
+<U0070> \x70 |0
+<U0071> \x71 |0
+<U0072> \x72 |0
+<U0073> \x73 |0
+<U0074> \x74 |0
+<U0075> \x75 |0
+<U0076> \x76 |0
+<U0077> \x77 |0
+<U0078> \x78 |0
+<U0079> \x79 |0
+<U007A> \x7A |0
+<U007B> \x7B |0
+<U007C> \x7C |0
+<U007D> \x7D |0
+<U007E> \x7E |0
+<U007F> \x7F |0
+<U0080> \x80 |0
+<U0081> \x81 |0
+<U0082> \x82 |0
+<U0083> \x83 |0
+<U0084> \x84 |0
+<U0085> \x85 |0
+<U0086> \x86 |0
+<U0087> \x87 |0
+<U0088> \x88 |0
+<U0089> \x89 |0
+<U008A> \x8A |0
+<U008B> \x8B |0
+<U008C> \x8C |0
+<U008D> \x8D |0
+<U008E> \x8E |0
+<U008F> \x8F |0
+<U0090> \x90 |0
+<U0091> \x91 |0
+<U0092> \x92 |0
+<U0093> \x93 |0
+<U0094> \x94 |0
+<U0095> \x95 |0
+<U0096> \x96 |0
+<U0097> \x97 |0
+<U0098> \x98 |0
+<U0099> \x99 |0
+<U009A> \x9A |0
+<U009B> \x9B |0
+<U009C> \x9C |0
+<U009D> \x9D |0
+<U009E> \x9E |0
+<U009F> \x9F |0
+<U00A0> \xA0 |0
+<U00A2> \xA2 |0
+<U00A3> \xA3 |0
+<U00A4> \xA4 |0
+<U00A5> \xA5 |0
+<U00A6> \xA6 |0
+<U00A7> \xA7 |0
+<U00A8> \xA8 |0
+<U00A9> \xA9 |0
+<U00AB> \xAB |0
+<U00AC> \xAC |0
+<U00AD> \xAD |0
+<U00AE> \xAE |0
+<U00B0> \xB0 |0
+<U00B1> \xB1 |0
+<U00B2> \xB2 |0
+<U00B3> \xB3 |0
+<U00B4> \xB4 |0
+<U00B5> \xB5 |0
+<U00B6> \xB6 |0
+<U00B7> \xB7 |0
+<U00B8> \xB8 |0
+<U00B9> \xB9 |0
+<U00BB> \xBB |0
+<U00BC> \xBC |0
+<U00BD> \xBD |0
+<U00BE> \xBE |0
+<U00D7> \xAA |0
+<U00F7> \xBA |0
+<U05D0> \xE0 |0
+<U05D1> \xE1 |0
+<U05D2> \xE2 |0
+<U05D3> \xE3 |0
+<U05D4> \xE4 |0
+<U05D5> \xE5 |0
+<U05D6> \xE6 |0
+<U05D7> \xE7 |0
+<U05D8> \xE8 |0
+<U05D9> \xE9 |0
+<U05DA> \xEA |0
+<U05DB> \xEB |0
+<U05DC> \xEC |0
+<U05DD> \xED |0
+<U05DE> \xEE |0
+<U05DF> \xEF |0
+<U05E0> \xF0 |0
+<U05E1> \xF1 |0
+<U05E2> \xF2 |0
+<U05E3> \xF3 |0
+<U05E4> \xF4 |0
+<U05E5> \xF5 |0
+<U05E6> \xF6 |0
+<U05E7> \xF7 |0
+<U05E8> \xF8 |0
+<U05E9> \xF9 |0
+<U05EA> \xFA |0
+<U2017> \xDF |0
+<U203E> \xAF |0
+END CHARMAP
diff --git a/ext/Encode/Encode/iso8859-9.ucm b/ext/Encode/Encode/iso8859-9.ucm
new file mode 100644 (file)
index 0000000..8393dea
--- /dev/null
@@ -0,0 +1,264 @@
+# Written by compile -n iso8859-9 -o Encode/iso8859-9.ucm Encode/iso8859-9.enc
+<code_set_name> "iso8859-9"
+<mb_cur_min> 1
+<mb_cur_max> 1
+<subchar> \x3F
+#
+CHARMAP
+<U0000> \x00 |0
+<U0001> \x01 |0
+<U0002> \x02 |0
+<U0003> \x03 |0
+<U0004> \x04 |0
+<U0005> \x05 |0
+<U0006> \x06 |0
+<U0007> \x07 |0
+<U0008> \x08 |0
+<U0009> \x09 |0
+<U000A> \x0A |0
+<U000B> \x0B |0
+<U000C> \x0C |0
+<U000D> \x0D |0
+<U000E> \x0E |0
+<U000F> \x0F |0
+<U0010> \x10 |0
+<U0011> \x11 |0
+<U0012> \x12 |0
+<U0013> \x13 |0
+<U0014> \x14 |0
+<U0015> \x15 |0
+<U0016> \x16 |0
+<U0017> \x17 |0
+<U0018> \x18 |0
+<U0019> \x19 |0
+<U001A> \x1A |0
+<U001B> \x1B |0
+<U001C> \x1C |0
+<U001D> \x1D |0
+<U001E> \x1E |0
+<U001F> \x1F |0
+<U0020> \x20 |0
+<U0021> \x21 |0
+<U0022> \x22 |0
+<U0023> \x23 |0
+<U0024> \x24 |0
+<U0025> \x25 |0
+<U0026> \x26 |0
+<U0027> \x27 |0
+<U0028> \x28 |0
+<U0029> \x29 |0
+<U002A> \x2A |0
+<U002B> \x2B |0
+<U002C> \x2C |0
+<U002D> \x2D |0
+<U002E> \x2E |0
+<U002F> \x2F |0
+<U0030> \x30 |0
+<U0031> \x31 |0
+<U0032> \x32 |0
+<U0033> \x33 |0
+<U0034> \x34 |0
+<U0035> \x35 |0
+<U0036> \x36 |0
+<U0037> \x37 |0
+<U0038> \x38 |0
+<U0039> \x39 |0
+<U003A> \x3A |0
+<U003B> \x3B |0
+<U003C> \x3C |0
+<U003D> \x3D |0
+<U003E> \x3E |0
+<U003F> \x3F |0
+<U0040> \x40 |0
+<U0041> \x41 |0
+<U0042> \x42 |0
+<U0043> \x43 |0
+<U0044> \x44 |0
+<U0045> \x45 |0
+<U0046> \x46 |0
+<U0047> \x47 |0
+<U0048> \x48 |0
+<U0049> \x49 |0
+<U004A> \x4A |0
+<U004B> \x4B |0
+<U004C> \x4C |0
+<U004D> \x4D |0
+<U004E> \x4E |0
+<U004F> \x4F |0
+<U0050> \x50 |0
+<U0051> \x51 |0
+<U0052> \x52 |0
+<U0053> \x53 |0
+<U0054> \x54 |0
+<U0055> \x55 |0
+<U0056> \x56 |0
+<U0057> \x57 |0
+<U0058> \x58 |0
+<U0059> \x59 |0
+<U005A> \x5A |0
+<U005B> \x5B |0
+<U005C> \x5C |0
+<U005D> \x5D |0
+<U005E> \x5E |0
+<U005F> \x5F |0
+<U0060> \x60 |0
+<U0061> \x61 |0
+<U0062> \x62 |0
+<U0063> \x63 |0
+<U0064> \x64 |0
+<U0065> \x65 |0
+<U0066> \x66 |0
+<U0067> \x67 |0
+<U0068> \x68 |0
+<U0069> \x69 |0
+<U006A> \x6A |0
+<U006B> \x6B |0
+<U006C> \x6C |0
+<U006D> \x6D |0
+<U006E> \x6E |0
+<U006F> \x6F |0
+<U0070> \x70 |0
+<U0071> \x71 |0
+<U0072> \x72 |0
+<U0073> \x73 |0
+<U0074> \x74 |0
+<U0075> \x75 |0
+<U0076> \x76 |0
+<U0077> \x77 |0
+<U0078> \x78 |0
+<U0079> \x79 |0
+<U007A> \x7A |0
+<U007B> \x7B |0
+<U007C> \x7C |0
+<U007D> \x7D |0
+<U007E> \x7E |0
+<U007F> \x7F |0
+<U0080> \x80 |0
+<U0081> \x81 |0
+<U0082> \x82 |0
+<U0083> \x83 |0
+<U0084> \x84 |0
+<U0085> \x85 |0
+<U0086> \x86 |0
+<U0087> \x87 |0
+<U0088> \x88 |0
+<U0089> \x89 |0
+<U008A> \x8A |0
+<U008B> \x8B |0
+<U008C> \x8C |0
+<U008D> \x8D |0
+<U008E> \x8E |0
+<U008F> \x8F |0
+<U0090> \x90 |0
+<U0091> \x91 |0
+<U0092> \x92 |0
+<U0093> \x93 |0
+<U0094> \x94 |0
+<U0095> \x95 |0
+<U0096> \x96 |0
+<U0097> \x97 |0
+<U0098> \x98 |0
+<U0099> \x99 |0
+<U009A> \x9A |0
+<U009B> \x9B |0
+<U009C> \x9C |0
+<U009D> \x9D |0
+<U009E> \x9E |0
+<U009F> \x9F |0
+<U00A0> \xA0 |0
+<U00A1> \xA1 |0
+<U00A2> \xA2 |0
+<U00A3> \xA3 |0
+<U00A4> \xA4 |0
+<U00A5> \xA5 |0
+<U00A6> \xA6 |0
+<U00A7> \xA7 |0
+<U00A8> \xA8 |0
+<U00A9> \xA9 |0
+<U00AA> \xAA |0
+<U00AB> \xAB |0
+<U00AC> \xAC |0
+<U00AD> \xAD |0
+<U00AE> \xAE |0
+<U00AF> \xAF |0
+<U00B0> \xB0 |0
+<U00B1> \xB1 |0
+<U00B2> \xB2 |0
+<U00B3> \xB3 |0
+<U00B4> \xB4 |0
+<U00B5> \xB5 |0
+<U00B6> \xB6 |0
+<U00B7> \xB7 |0
+<U00B8> \xB8 |0
+<U00B9> \xB9 |0
+<U00BA> \xBA |0
+<U00BB> \xBB |0
+<U00BC> \xBC |0
+<U00BD> \xBD |0
+<U00BE> \xBE |0
+<U00BF> \xBF |0
+<U00C0> \xC0 |0
+<U00C1> \xC1 |0
+<U00C2> \xC2 |0
+<U00C3> \xC3 |0
+<U00C4> \xC4 |0
+<U00C5> \xC5 |0
+<U00C6> \xC6 |0
+<U00C7> \xC7 |0
+<U00C8> \xC8 |0
+<U00C9> \xC9 |0
+<U00CA> \xCA |0
+<U00CB> \xCB |0
+<U00CC> \xCC |0
+<U00CD> \xCD |0
+<U00CE> \xCE |0
+<U00CF> \xCF |0
+<U00D1> \xD1 |0
+<U00D2> \xD2 |0
+<U00D3> \xD3 |0
+<U00D4> \xD4 |0
+<U00D5> \xD5 |0
+<U00D6> \xD6 |0
+<U00D7> \xD7 |0
+<U00D8> \xD8 |0
+<U00D9> \xD9 |0
+<U00DA> \xDA |0
+<U00DB> \xDB |0
+<U00DC> \xDC |0
+<U00DF> \xDF |0
+<U00E0> \xE0 |0
+<U00E1> \xE1 |0
+<U00E2> \xE2 |0
+<U00E3> \xE3 |0
+<U00E4> \xE4 |0
+<U00E5> \xE5 |0
+<U00E6> \xE6 |0
+<U00E7> \xE7 |0
+<U00E8> \xE8 |0
+<U00E9> \xE9 |0
+<U00EA> \xEA |0
+<U00EB> \xEB |0
+<U00EC> \xEC |0
+<U00ED> \xED |0
+<U00EE> \xEE |0
+<U00EF> \xEF |0
+<U00F1> \xF1 |0
+<U00F2> \xF2 |0
+<U00F3> \xF3 |0
+<U00F4> \xF4 |0
+<U00F5> \xF5 |0
+<U00F6> \xF6 |0
+<U00F7> \xF7 |0
+<U00F8> \xF8 |0
+<U00F9> \xF9 |0
+<U00FA> \xFA |0
+<U00FB> \xFB |0
+<U00FC> \xFC |0
+<U00FF> \xFF |0
+<U011E> \xD0 |0
+<U011F> \xF0 |0
+<U0130> \xDD |0
+<U0131> \xFD |0
+<U015E> \xDE |0
+<U015F> \xFE |0
+END CHARMAP
diff --git a/ext/Encode/Encode/posix-bc.ucm b/ext/Encode/Encode/posix-bc.ucm
new file mode 100644 (file)
index 0000000..6d9c52f
--- /dev/null
@@ -0,0 +1,264 @@
+# Written by compile -n posix-bc -o Encode/posix-bc.ucm Encode/posix-bc.enc
+<code_set_name> "posix-bc"
+<mb_cur_min> 1
+<mb_cur_max> 1
+<subchar> \x6F
+#
+CHARMAP
+<U0000> \x00 |0
+<U0001> \x01 |0
+<U0002> \x02 |0
+<U0003> \x03 |0
+<U0004> \x37 |0
+<U0005> \x2D |0
+<U0006> \x2E |0
+<U0007> \x2F |0
+<U0008> \x16 |0
+<U0009> \x05 |0
+<U000A> \x15 |0
+<U000B> \x0B |0
+<U000C> \x0C |0
+<U000D> \x0D |0
+<U000E> \x0E |0
+<U000F> \x0F |0
+<U0010> \x10 |0
+<U0011> \x11 |0
+<U0012> \x12 |0
+<U0013> \x13 |0
+<U0014> \x3C |0
+<U0015> \x3D |0
+<U0016> \x32 |0
+<U0017> \x26 |0
+<U0018> \x18 |0
+<U0019> \x19 |0
+<U001A> \x3F |0
+<U001B> \x27 |0
+<U001C> \x1C |0
+<U001D> \x1D |0
+<U001E> \x1E |0
+<U001F> \x1F |0
+<U0020> \x40 |0
+<U0021> \x5A |0
+<U0022> \x7F |0
+<U0023> \x7B |0
+<U0024> \x5B |0
+<U0025> \x6C |0
+<U0026> \x50 |0
+<U0027> \x7D |0
+<U0028> \x4D |0
+<U0029> \x5D |0
+<U002A> \x5C |0
+<U002B> \x4E |0
+<U002C> \x6B |0
+<U002D> \x60 |0
+<U002E> \x4B |0
+<U002F> \x61 |0
+<U0030> \xF0 |0
+<U0031> \xF1 |0
+<U0032> \xF2 |0
+<U0033> \xF3 |0
+<U0034> \xF4 |0
+<U0035> \xF5 |0
+<U0036> \xF6 |0
+<U0037> \xF7 |0
+<U0038> \xF8 |0
+<U0039> \xF9 |0
+<U003A> \x7A |0
+<U003B> \x5E |0
+<U003C> \x4C |0
+<U003D> \x7E |0
+<U003E> \x6E |0
+<U003F> \x6F |0
+<U0040> \x7C |0
+<U0041> \xC1 |0
+<U0042> \xC2 |0
+<U0043> \xC3 |0
+<U0044> \xC4 |0
+<U0045> \xC5 |0
+<U0046> \xC6 |0
+<U0047> \xC7 |0
+<U0048> \xC8 |0
+<U0049> \xC9 |0
+<U004A> \xD1 |0
+<U004B> \xD2 |0
+<U004C> \xD3 |0
+<U004D> \xD4 |0
+<U004E> \xD5 |0
+<U004F> \xD6 |0
+<U0050> \xD7 |0
+<U0051> \xD8 |0
+<U0052> \xD9 |0
+<U0053> \xE2 |0
+<U0054> \xE3 |0
+<U0055> \xE4 |0
+<U0056> \xE5 |0
+<U0057> \xE6 |0
+<U0058> \xE7 |0
+<U0059> \xE8 |0
+<U005A> \xE9 |0
+<U005B> \xBB |0
+<U005C> \xBC |0
+<U005D> \xBD |0
+<U005E> \x6A |0
+<U005F> \x6D |0
+<U0060> \x4A |0
+<U0061> \x81 |0
+<U0062> \x82 |0
+<U0063> \x83 |0
+<U0064> \x84 |0
+<U0065> \x85 |0
+<U0066> \x86 |0
+<U0067> \x87 |0
+<U0068> \x88 |0
+<U0069> \x89 |0
+<U006A> \x91 |0
+<U006B> \x92 |0
+<U006C> \x93 |0
+<U006D> \x94 |0
+<U006E> \x95 |0
+<U006F> \x96 |0
+<U0070> \x97 |0
+<U0071> \x98 |0
+<U0072> \x99 |0
+<U0073> \xA2 |0
+<U0074> \xA3 |0
+<U0075> \xA4 |0
+<U0076> \xA5 |0
+<U0077> \xA6 |0
+<U0078> \xA7 |0
+<U0079> \xA8 |0
+<U007A> \xA9 |0
+<U007B> \xFB |0
+<U007C> \x4F |0
+<U007D> \xFD |0
+<U007E> \xFF |0
+<U007F> \x07 |0
+<U0080> \x20 |0
+<U0081> \x21 |0
+<U0082> \x22 |0
+<U0083> \x23 |0
+<U0084> \x24 |0
+<U0085> \x25 |0
+<U0086> \x06 |0
+<U0087> \x17 |0
+<U0088> \x28 |0
+<U0089> \x29 |0
+<U008A> \x2A |0
+<U008B> \x2B |0
+<U008C> \x2C |0
+<U008D> \x09 |0
+<U008E> \x0A |0
+<U008F> \x1B |0
+<U0090> \x30 |0
+<U0091> \x31 |0
+<U0092> \x1A |0
+<U0093> \x33 |0
+<U0094> \x34 |0
+<U0095> \x35 |0
+<U0096> \x36 |0
+<U0097> \x08 |0
+<U0098> \x38 |0
+<U0099> \x39 |0
+<U009A> \x3A |0
+<U009B> \x3B |0
+<U009C> \x04 |0
+<U009D> \x14 |0
+<U009E> \x3E |0
+<U009F> \x5F |0
+<U00A0> \x41 |0
+<U00A1> \xAA |0
+<U00A2> \xB0 |0
+<U00A3> \xB1 |0
+<U00A4> \x9F |0
+<U00A5> \xB2 |0
+<U00A6> \xD0 |0
+<U00A7> \xB5 |0
+<U00A8> \x79 |0
+<U00A9> \xB4 |0
+<U00AA> \x9A |0
+<U00AB> \x8A |0
+<U00AC> \xBA |0
+<U00AD> \xCA |0
+<U00AE> \xAF |0
+<U00AF> \xA1 |0
+<U00B0> \x90 |0
+<U00B1> \x8F |0
+<U00B2> \xEA |0
+<U00B3> \xFA |0
+<U00B4> \xBE |0
+<U00B5> \xA0 |0
+<U00B6> \xB6 |0
+<U00B7> \xB3 |0
+<U00B8> \x9D |0
+<U00B9> \xDA |0
+<U00BA> \x9B |0
+<U00BB> \x8B |0
+<U00BC> \xB7 |0
+<U00BD> \xB8 |0
+<U00BE> \xB9 |0
+<U00BF> \xAB |0
+<U00C0> \x64 |0
+<U00C1> \x65 |0
+<U00C2> \x62 |0
+<U00C3> \x66 |0
+<U00C4> \x63 |0
+<U00C5> \x67 |0
+<U00C6> \x9E |0
+<U00C7> \x68 |0
+<U00C8> \x74 |0
+<U00C9> \x71 |0
+<U00CA> \x72 |0
+<U00CB> \x73 |0
+<U00CC> \x78 |0
+<U00CD> \x75 |0
+<U00CE> \x76 |0
+<U00CF> \x77 |0
+<U00D0> \xAC |0
+<U00D1> \x69 |0
+<U00D2> \xED |0
+<U00D3> \xEE |0
+<U00D4> \xEB |0
+<U00D5> \xEF |0
+<U00D6> \xEC |0
+<U00D7> \xBF |0
+<U00D8> \x80 |0
+<U00D9> \xE0 |0
+<U00DA> \xFE |0
+<U00DB> \xDD |0
+<U00DC> \xFC |0
+<U00DD> \xAD |0
+<U00DE> \xAE |0
+<U00DF> \x59 |0
+<U00E0> \x44 |0
+<U00E1> \x45 |0
+<U00E2> \x42 |0
+<U00E3> \x46 |0
+<U00E4> \x43 |0
+<U00E5> \x47 |0
+<U00E6> \x9C |0
+<U00E7> \x48 |0
+<U00E8> \x54 |0
+<U00E9> \x51 |0
+<U00EA> \x52 |0
+<U00EB> \x53 |0
+<U00EC> \x58 |0
+<U00ED> \x55 |0
+<U00EE> \x56 |0
+<U00EF> \x57 |0
+<U00F0> \x8C |0
+<U00F1> \x49 |0
+<U00F2> \xCD |0
+<U00F3> \xCE |0
+<U00F4> \xCB |0
+<U00F5> \xCF |0
+<U00F6> \xCC |0
+<U00F7> \xE1 |0
+<U00F8> \x70 |0
+<U00F9> \xC0 |0
+<U00FA> \xDE |0
+<U00FB> \xDB |0
+<U00FC> \xDC |0
+<U00FD> \x8D |0
+<U00FE> \x8E |0
+<U00FF> \xDF |0
+END CHARMAP
diff --git a/ext/Encode/Encode/symbol.ucm b/ext/Encode/Encode/symbol.ucm
new file mode 100644 (file)
index 0000000..51466e6
--- /dev/null
@@ -0,0 +1,262 @@
+# Written by compile -n symbol -o Encode/symbol.ucm Encode/symbol.enc
+<code_set_name> "symbol"
+<mb_cur_min> 1
+<mb_cur_max> 1
+<subchar> \x3F
+#
+CHARMAP
+<U0000> \x00 |0
+<U0001> \x01 |0
+<U0002> \x02 |0
+<U0003> \x03 |0
+<U0004> \x04 |0
+<U0005> \x05 |0
+<U0006> \x06 |0
+<U0007> \x07 |0
+<U0008> \x08 |0
+<U0009> \x09 |0
+<U000A> \x0A |0
+<U000B> \x0B |0
+<U000C> \x0C |0
+<U000D> \x0D |0
+<U000E> \x0E |0
+<U000F> \x0F |0
+<U0010> \x10 |0
+<U0011> \x11 |0
+<U0012> \x12 |0
+<U0013> \x13 |0
+<U0014> \x14 |0
+<U0015> \x15 |0
+<U0016> \x16 |0
+<U0017> \x17 |0
+<U0018> \x18 |0
+<U0019> \x19 |0
+<U001A> \x1A |0
+<U001B> \x1B |0
+<U001C> \x1C |0
+<U001D> \x1D |0
+<U001E> \x1E |0
+<U001F> \x1F |0
+<U0020> \x20 |0
+<U0021> \x21 |0
+<U0023> \x23 |0
+<U0025> \x25 |0
+<U0026> \x26 |0
+<U0028> \x28 |0
+<U0029> \x29 |0
+<U002B> \x2B |0
+<U002C> \x2C |0
+<U002E> \x2E |0
+<U002F> \x2F |0
+<U0030> \x30 |0
+<U0031> \x31 |0
+<U0032> \x32 |0
+<U0033> \x33 |0
+<U0034> \x34 |0
+<U0035> \x35 |0
+<U0036> \x36 |0
+<U0037> \x37 |0
+<U0038> \x38 |0
+<U0039> \x39 |0
+<U003A> \x3A |0
+<U003B> \x3B |0
+<U003C> \x3C |0
+<U003D> \x3D |0
+<U003E> \x3E |0
+<U003F> \x3F |0
+<U005B> \x5B |0
+<U005D> \x5D |0
+<U005F> \x5F |0
+<U007B> \x7B |0
+<U007C> \x7C |0
+<U007D> \x7D |0
+<U007F> \x7F |0
+<U0080> \x80 |0
+<U0081> \x81 |0
+<U0082> \x82 |0
+<U0083> \x83 |0
+<U0084> \x84 |0
+<U0085> \x85 |0
+<U0086> \x86 |0
+<U0087> \x87 |0
+<U0088> \x88 |0
+<U0089> \x89 |0
+<U008A> \x8A |0
+<U008B> \x8B |0
+<U008C> \x8C |0
+<U008D> \x8D |0
+<U008E> \x8E |0
+<U008F> \x8F |0
+<U0090> \x90 |0
+<U0091> \x91 |0
+<U0092> \x92 |0
+<U0093> \x93 |0
+<U0094> \x94 |0
+<U0095> \x95 |0
+<U0096> \x96 |0
+<U0097> \x97 |0
+<U0098> \x98 |0
+<U0099> \x99 |0
+<U009A> \x9A |0
+<U009B> \x9B |0
+<U009C> \x9C |0
+<U009D> \x9D |0
+<U009E> \x9E |0
+<U009F> \x9F |0
+<U00A9> \xD3 |0
+<U00AC> \xD8 |0
+<U00AE> \xD2 |0
+<U00B0> \xB0 |0
+<U00B1> \xB1 |0
+<U00D7> \xB4 |0
+<U00F7> \xB8 |0
+<U0192> \xA6 |0
+<U0391> \x41 |0
+<U0392> \x42 |0
+<U0393> \x47 |0
+<U0394> \x44 |0
+<U0395> \x45 |0
+<U0396> \x5A |0
+<U0397> \x48 |0
+<U0398> \x51 |0
+<U0399> \x49 |0
+<U039A> \x4B |0
+<U039B> \x4C |0
+<U039C> \x4D |0
+<U039D> \x4E |0
+<U039E> \x58 |0
+<U039F> \x4F |0
+<U03A0> \x50 |0
+<U03A1> \x52 |0
+<U03A3> \x53 |0
+<U03A4> \x54 |0
+<U03A5> \x55 |0
+<U03A6> \x46 |0
+<U03A7> \x43 |0
+<U03A8> \x59 |0
+<U03A9> \x57 |0
+<U03B1> \x61 |0
+<U03B2> \x62 |0
+<U03B3> \x67 |0
+<U03B4> \x64 |0
+<U03B5> \x65 |0
+<U03B6> \x7A |0
+<U03B7> \x68 |0
+<U03B8> \x71 |0
+<U03B9> \x69 |0
+<U03BA> \x6B |0
+<U03BB> \x6C |0
+<U03BC> \x6D |0
+<U03BD> \x6E |0
+<U03BE> \x78 |0
+<U03BF> \x6F |0
+<U03C0> \x70 |0
+<U03C1> \x72 |0
+<U03C2> \x56 |0
+<U03C3> \x73 |0
+<U03C4> \x74 |0
+<U03C5> \x75 |0
+<U03C6> \x66 |0
+<U03C7> \x63 |0
+<U03C8> \x79 |0
+<U03C9> \x77 |0
+<U03D1> \x4A |0
+<U03D2> \xA1 |0
+<U03D5> \x6A |0
+<U03D6> \x76 |0
+<U2022> \xB7 |0
+<U2026> \xBC |0
+<U2032> \xA2 |0
+<U2033> \xB2 |0
+<U2044> \xA4 |0
+<U2111> \xC1 |0
+<U2118> \xC3 |0
+<U211C> \xC2 |0
+<U2122> \xD4 |0
+<U2135> \xC0 |0
+<U2190> \xAC |0
+<U2191> \xAD |0
+<U2192> \xAE |0
+<U2193> \xAF |0
+<U2194> \xAB |0
+<U21B5> \xBF |0
+<U21D0> \xDC |0
+<U21D1> \xDD |0
+<U21D2> \xDE |0
+<U21D3> \xDF |0
+<U21D4> \xDB |0
+<U2200> \x22 |0
+<U2202> \xB6 |0
+<U2203> \x24 |0
+<U2205> \xC6 |0
+<U2207> \xD1 |0
+<U2208> \xCE |0
+<U2209> \xCF |0
+<U220D> \x27 |0
+<U220F> \xD5 |0
+<U2211> \xE5 |0
+<U2212> \x2D |0
+<U2217> \x2A |0
+<U221A> \xD6 |0
+<U221D> \xB5 |0
+<U221E> \xA5 |0
+<U2220> \xD0 |0
+<U2227> \xD9 |0
+<U2228> \xDA |0
+<U2229> \xC7 |0
+<U222A> \xC8 |0
+<U222B> \xF2 |0
+<U2234> \x5C |0
+<U223C> \x7E |0
+<U2245> \x40 |0
+<U2248> \xBB |0
+<U2260> \xB9 |0
+<U2261> \xBA |0
+<U2264> \xA3 |0
+<U2265> \xB3 |0
+<U2282> \xCC |0
+<U2283> \xC9 |0
+<U2284> \xCB |0
+<U2286> \xCD |0
+<U2287> \xCA |0
+<U2295> \xC5 |0
+<U2297> \xC4 |0
+<U22A5> \x5E |0
+<U22C4> \xE0 |0
+<U22C5> \xD7 |0
+<U2320> \xF3 |0
+<U2321> \xF5 |0
+<U2329> \xE1 |0
+<U232A> \xF1 |0
+<U2660> \xAA |0
+<U2663> \xA7 |0
+<U2665> \xA9 |0
+<U2666> \xA8 |0
+<UF8E5> \x60 |0
+<UF8E6> \xBD |0
+<UF8E7> \xBE |0
+<UF8E8> \xE2 |0
+<UF8E9> \xE3 |0
+<UF8EA> \xE4 |0
+<UF8EB> \xE6 |0
+<UF8EC> \xE7 |0
+<UF8ED> \xE8 |0
+<UF8EE> \xE9 |0
+<UF8EF> \xEA |0
+<UF8F0> \xEB |0
+<UF8F1> \xEC |0
+<UF8F2> \xED |0
+<UF8F3> \xEE |0
+<UF8F4> \xEF |0
+<UF8F5> \xF4 |0
+<UF8F6> \xF6 |0
+<UF8F7> \xF7 |0
+<UF8F8> \xF8 |0
+<UF8F9> \xF9 |0
+<UF8FA> \xFA |0
+<UF8FB> \xFB |0
+<UF8FC> \xFC |0
+<UF8FD> \xFD |0
+<UF8FE> \xFE |0
+<UF8FF> \xF0 |0
+END CHARMAP
index 4b1ec95..0b20c48 100644 (file)
@@ -1,14 +1,14 @@
 use ExtUtils::MakeMaker;
 
-my %tables = (iso8859 => ['ascii.enc', 'cp1250.enc'],
-              EBCDIC  => ['cp1047.enc','cp37.enc','posix-bc.enc'],
-              Symbols => ['symbol.enc','dingbats.enc'],
+my %tables = (iso8859 => ['ascii.ucm', 'cp1250.ucm'],
+              EBCDIC  => ['cp1047.ucm','cp37.ucm','posix-bc.ucm'],
+              Symbols => ['symbol.ucm','dingbats.ucm'],
              );
 
 opendir(ENC,'Encode');
 while (defined(my $file = readdir(ENC)))
  {
-  if ($file =~ /iso8859.*\.enc/)
+  if ($file =~ /iso8859.*\.ucm/)
    {
     push(@{$tables{iso8859}},$file);
    }
@@ -39,19 +39,19 @@ sub post_initialize
  foreach my $f (@{$self->{'O_FILES'}})
   {
    $o{$f} = 1;
-  } 
+  }
  my $x = $self->{'OBJ_EXT'};
  # Add the table O_FILES
  foreach my $e (keys %tables)
   {
    $o{$e.$x} = 1;
-  }  
- # Reset the variable 
+  }
+ # Reset the variable
  $self->{'O_FILES'} = [sort keys %o];
  my @files;
  foreach my $table (keys %tables)
   {
-   foreach my $ext (qw($(OBJ_EXT) .c .h .def))
+   foreach my $ext (qw($(OBJ_EXT) .c .h .def .fnm))
     {
      push (@files,$table.$ext);
     }
@@ -64,9 +64,8 @@ sub postamble
 {
  my $self = shift;
  my $dir  = $self->catdir($self->curdir,'Encode');
- my $str  = "# Encode$(OBJ_EXT) depends on .h and .def files not .c files - but all written by compile\n";
+ my $str  = "# Encode\$(OBJ_EXT) depends on .h and .def files not .c files - but all written by compile\n";
  $str  .= 'Encode$(OBJ_EXT) :';
- my @rules;
  foreach my $table (keys %tables)
   {
    $str .= " $table.c";
@@ -89,22 +88,14 @@ sub postamble
        $continuator = '';
       }
     }
-   $numlines = 1;
-   $lengthsofar = length($str);
-   $continuator = '';
-   $str .= "\n\t\$(PERL) compile \$\@";
+   $str .= "\n\t\$(PERL) compile -o \$\@ -f $table.fnm\n\n";
+   open (FILELIST, ">$table.fnm")
+       || die "Could not open $table.fnm: $!";
    foreach my $file (@{$tables{$table}})
     {
-     $str .= $continuator.' '.$self->catfile($dir,$file);
-     if ( length($str)-$lengthsofar > 128*$numlines )
-      {
-       $continuator .= "\n\t\$(PERL) compile \$\@";
-       $numlines++;
-      } else {
-       $continuator = '';
-      }
+     print FILELIST $self->catfile($dir,$file) . "\n";
     }
-   $str .= "\n\n";
+   close(FILELIST);
   }
  return $str;
 }
index b890a04..f6957d2 100755 (executable)
@@ -1,6 +1,10 @@
 #!../../perl -w
 BEGIN { @INC = '../../lib' };
 use strict;
+use Getopt::Std;
+my @orig_ARGV = @ARGV;
+my $perforce  = '$Id$';
+
 
 sub encode_U
 {
@@ -45,13 +49,17 @@ sub encode_M
 # Win32 does not expand globs on command line
 eval "\@ARGV = map(glob(\$_),\@ARGV)" if ($^O eq 'MSWin32');
 
-my $cname = shift(@ARGV);
+my %opt;
+getopts('qo:f:n:',\%opt);
+my $cname = (exists $opt{'o'}) ? $opt{'o'} : shift(@ARGV);
 chmod(0666,$cname) if -f $cname && !-w $cname;
 open(C,">$cname") || die "Cannot open $cname:$!";
+
+
 my $dname = $cname;
 $dname =~ s/(\.[^\.]*)?$/.def/;
 
-my ($doC,$doEnc,$doUcm);
+my ($doC,$doEnc,$doUcm,$doPet);
 
 if ($cname =~ /\.(c|xs)$/)
  {
@@ -65,11 +73,12 @@ if ($cname =~ /\.(c|xs)$/)
 
   foreach my $fh (\*C,\*D,\*H)
   {
-   print $fh <<"END";
+   print $fh <<"END" unless $opt{'q'};
 /*
  !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
  This file was autogenerated by:
- $^X $0 $cname @ARGV
+ $^X $0 $cname @orig_ARGV
+ (Repository $perforce)
 */
 END
   }
@@ -91,6 +100,24 @@ elsif ($cname =~ /\.ucm$/)
  {
   $doUcm = 1;
  }
+elsif ($cname =~ /\.pet$/)
+ {
+  $doPet = 1;
+ }
+
+my @encfiles;
+if (exists $opt{'f'})
+ {
+  # -F is followed by name of file containing list of filenames
+  my $flist = $opt{'f'};
+  open(FLIST,$flist) || die "Cannot open $flist:$!";
+  chomp(@encfiles = <FLIST>);
+  close(FLIST);
+ }
+else
+ {
+  @encfiles = @ARGV;
+ }
 
 my %encoding;
 my %strings;
@@ -109,18 +136,20 @@ sub cmp_name
  return $a cmp $b;
 }
 
-foreach my $enc (sort cmp_name @ARGV)
+
+foreach my $enc (sort cmp_name @encfiles)
  {
   my ($name,$sfx) = $enc =~ /^.*?([\w-]+)\.(enc|ucm)$/;
+  $name = delete $opt{'n'} if exists $opt{'n'};
   if (open(E,$enc))
    {
     if ($sfx eq 'enc')
      {
-      compile_enc(\*E,lc($name),\*C);
+      compile_enc(\*E,lc($name));
      }
     else
      {
-      compile_ucm(\*E,lc($name),\*C);
+      compile_ucm(\*E,lc($name));
      }
    }
   else
@@ -131,12 +160,21 @@ foreach my $enc (sort cmp_name @ARGV)
 
 if ($doC)
  {
+  foreach my $name (sort cmp_name keys %encoding)
+   {
+    my ($e2u,$u2e,$erep,$min_el,$max_el) = @{$encoding{$name}};
+    output(\*C,$name.'_utf8',$e2u);
+    output(\*C,'utf8_'.$name,$u2e);
+    push(@{$encoding{$name}},outstring(\*C,$e2u->{Cname}.'_def',$erep));
+   }
   foreach my $enc (sort cmp_name keys %encoding)
    {
+    my ($e2u,$u2e,$rep,$min_el,$max_el,$rsym) = @{$encoding{$enc}};
+    my @info = ($e2u->{Cname},$u2e->{Cname},$rsym,length($rep),$min_el,$max_el);
     my $sym = "${enc}_encoding";
     $sym =~ s/\W+/_/g;
     print C "encode_t $sym = \n";
-    print C " {",join(',',"\"$enc\"",@{$encoding{$enc}}),"};\n\n";
+    print C " {",join(',',@info,"{\"$enc\",(const char *)0}"),"};\n\n";
    }
 
   foreach my $enc (sort cmp_name keys %encoding)
@@ -158,12 +196,29 @@ if ($doC)
   close(D);
   close(H);
  }
+elsif ($doEnc)
+ {
+  foreach my $name (sort cmp_name keys %encoding)
+   {
+    my ($e2u,$u2e,$erep,$min_el,$max_el) = @{$encoding{$name}};
+    output_enc(\*C,$name,$e2u);
+   }
+ }
+elsif ($doUcm)
+ {
+  foreach my $name (sort cmp_name keys %encoding)
+   {
+    my ($e2u,$u2e,$erep,$min_el,$max_el) = @{$encoding{$name}};
+    output_ucm(\*C,$name,$u2e,$erep,$min_el,$max_el);
+   }
+ }
+
 close(C);
 
 
 sub compile_ucm
 {
- my ($fh,$name,$ch) = @_;
+ my ($fh,$name) = @_;
  my $e2u = {};
  my $u2e = {};
  my $cs;
@@ -187,12 +242,16 @@ sub compile_ucm
   }
  my $erep;
  my $urep;
+ my $max_el;
+ my $min_el;
  if (exists $attr{'subchar'})
   {
-   my @byte = $attr{'subchar'} =~ /^\s*(?:\\x([0-9a-f]+))+\s*$/;
-   $erep = join('',map(hex($_),@byte));
+   my @byte;
+   $attr{'subchar'} =~ /^\s*/cg;
+   push(@byte,$1) while $attr{'subchar'} =~ /\G\\x([0-9a-f]+)/icg;
+   $erep = join('',map(chr(hex($_)),@byte));
   }
warn "Scanning $name ($cs)\n";
print "Scanning $name ($cs)\n";
  my $nfb = 0;
  my $hfb = 0;
  while (<$fh>)
@@ -200,12 +259,20 @@ sub compile_ucm
    s/#.*$//;
    last if /^\s*END\s+CHARMAP\s*$/i;
    next if /^\s*$/;
-   my ($u,@byte) = /^<U([0-9a-f]+)>\s+(?:\\x([0-9a-f]+))+\s*(\|[0-3]|)\s*$/i;
-   my $fb = pop(@byte);
+   my ($u,@byte);
+   my $fb = '';
+   $u = $1 if (/^<U([0-9a-f]+)>\s+/igc);
+   push(@byte,$1) while /\G\\x([0-9a-f]+)/igc;
+   $fb = $1 if /\G\s*(\|[0-3])/gc;
+   # warn "$_: $u @byte | $fb\n";
+   die "Bad line:$_" unless /\G\s*(#.*)?$/gc;
    if (defined($u))
     {
      my $uch = encode_U(hex($u));
      my $ech = join('',map(chr(hex($_)),@byte));
+     my $el  = length($ech);
+     $max_el = $el if (!defined($max_el) || $el > $max_el);
+     $min_el = $el if (!defined($min_el) || $el < $min_el);
      if (length($fb))
       {
        $fb = substr($fb,1);
@@ -228,32 +295,17 @@ sub compile_ucm
     {
      warn $_;
     }
-
   }
  if ($nfb && $hfb)
   {
    die "$nfb entries without fallback, $hfb entries with\n";
   }
- if ($doC)
-  {
-   output($ch,$name.'_utf8',$e2u);
-   output($ch,'utf8_'.$name,$u2e);
-   $encoding{$name} = [$e2u->{Cname},$u2e->{Cname},
-                       outstring($ch,$e2u->{Cname}.'_def',$erep),length($erep)];
-  }
- elsif ($doEnc)
-  {
-   output_enc($ch,$name,$e2u);
-  }
- elsif ($doUcm)
-  {
-   output_ucm($ch,$name,$u2e);
-  }
+ $encoding{$name} = [$e2u,$u2e,$erep,$min_el,$max_el];
 }
 
 sub compile_enc
 {
- my ($fh,$name,$ch) = @_;
+ my ($fh,$name) = @_;
  my $e2u = {};
  my $u2e = {};
 
@@ -267,11 +319,14 @@ sub compile_enc
  my ($def,$sym,$pages) = split(/\s+/,scalar(<$fh>));
  warn "$type encoded $name\n";
  my $rep = '';
+ my $min_el;
+ my $max_el;
  {
   my $v = hex($def);
   no strict 'refs';
   $rep = &{"encode_$type"}($v & 0xFF, ($v >> 8) & 0xffe);
  }
+ my %seen;
  while ($pages--)
   {
    my $line = <$fh>;
@@ -286,9 +341,22 @@ sub compile_enc
        no strict 'refs';
        my $ech = &{"encode_$type"}($ch,$page);
        my $val = hex(substr($line,0,4,''));
+       next if $val == 0xFFFD;
        if ($val || (!$ch && !$page))
         {
+         my $el  = length($ech);
+         $max_el = $el if (!defined($max_el) || $el > $max_el);
+         $min_el = $el if (!defined($min_el) || $el < $min_el);
          my $uch = encode_U($val);
+         if (exists $seen{$uch})
+          {
+           warn sprintf("U%04X is %02X%02X and %02X%02X\n",
+                        $val,$page,$ch,@{$seen{$uch}});
+          }
+         else
+          {
+           $seen{$uch} = [$page,$ch];
+          }
          enter($e2u,$ech,$uch,$e2u,0);
          enter($u2e,$uch,$ech,$u2e,0);
         }
@@ -301,21 +369,7 @@ sub compile_enc
       }
     }
   }
- if ($doC)
-  {
-   output($ch,$name.'_utf8',$e2u);
-   output($ch,'utf8_'.$name,$u2e);
-   $encoding{$name} = [$e2u->{Cname},$u2e->{Cname},
-                       outstring($ch,$e2u->{Cname}.'_def',$rep),length($rep)];
-  }
- elsif ($doEnc)
-  {
-   output_enc($ch,$name,$e2u);
-  }
- elsif ($doUcm)
-  {
-   output_ucm($ch,$name,$u2e);
-  }
+ $encoding{$name} = [$e2u,$u2e,$rep,$min_el,$max_el];
 }
 
 sub enter
@@ -483,10 +537,8 @@ sub output_enc
 sub decode_U
 {
  my $s = shift;
-
 }
 
-
 sub output_ucm_page
 {
  my ($fh,$a,$t,$pre) = @_;
@@ -522,8 +574,27 @@ sub output_ucm_page
 
 sub output_ucm
 {
- my ($fh,$name,$a) = @_;
- print $fh "CHARMAP\n";
+ my ($fh,$name,$a,$rep,$min_el,$max_el) = @_;
+ print $fh "# Written $perforce\n# $0 @orig_ARGV\n" unless $opt{'q'};
+ print $fh "<code_set_name> \"$name\"\n";
+ if (defined $min_el)
+  {
+   print $fh "<mb_cur_min> $min_el\n";
+  }
+ if (defined $max_el)
+  {
+   print $fh "<mb_cur_max> $max_el\n";
+  }
+ if (defined $rep)
+  {
+   print $fh "<subchar> ";
+   foreach my $c (split(//,$rep))
+    {
+     printf $fh "\\x%02X",ord($c);
+    }
+   print $fh "\n";
+  }
+ print $fh "#\nCHARMAP\n";
  output_ucm_page($fh,$a,$a,0);
  print $fh "END CHARMAP\n";
 }
index 853ad04..aecc66e 100644 (file)
@@ -19,11 +19,13 @@ struct encpage_s
 typedef struct encode_s encode_t;
 struct encode_s
 {
- const char *name;
  encpage_t  *t_utf8;
  encpage_t  *f_utf8;
  const U8   *rep;
  int        replen;
+ U8         min_el;
+ U8         max_el;
+ const char *name[2];
 };
 
 #ifdef U8
index c922bf3..d2cc488 100644 (file)
@@ -151,11 +151,16 @@ sub configure {
        $sock->socket(AF_INET, $type, $proto) or
            return _error($sock, $!, "$!");
 
-       if ($arg->{Reuse}) {
+       if ($arg->{Reuse} || $arg->{ReuseAddr}) {
            $sock->sockopt(SO_REUSEADDR,1) or
                    return _error($sock, $!, "$!");
        }
 
+       if ($arg->{ReusePort}) {
+           $sock->sockopt(SO_REUSEPORT,1) or
+                   return _error($sock, $!, "$!");
+       }
+
        if($lport || ($laddr ne INADDR_ANY) || exists $arg->{Listen}) {
            $sock->bind($lport || 0, $laddr) or
                    return _error($sock, $!, "$!");
@@ -302,7 +307,9 @@ C<IO::Socket::INET> provides.
     Proto      Protocol name (or number)    "tcp" | "udp" | ...
     Type       Socket type                  SOCK_STREAM | SOCK_DGRAM | ...
     Listen     Queue size for listen
-    Reuse      Set SO_REUSEADDR before binding
+    ReuseAddr  Set SO_REUSEADDR before binding
+    Reuse      Set SO_REUSEADDR before binding (deprecated, prefer ReuseAddr)
+    ReusePort  Set SO_REUSEPORT before binding
     Timeout    Timeout value for various operations
     MultiHomed  Try all adresses for multi-homed hosts
 
index 04f7c3f..e294059 100644 (file)
@@ -233,6 +233,26 @@ BOOT:
        warn("opset_len %ld\n", (long)opset_len);
     op_names_init(aTHX);
 
+void
+_safe_pkg_prep(Package)
+    char *     Package
+PPCODE:
+    HV *hv; 
+    ENTER;
+   
+    hv = gv_stashpv(Package, GV_ADDWARN); /* should exist already      */
+
+    if (strNE(HvNAME(hv),"main")) {
+        Safefree(HvNAME(hv));         
+        HvNAME(hv) = savepv("main"); /* make it think it's in main:: */
+        hv_store(hv,"_",1,(SV *)PL_defgv,0);  /* connect _ to global */
+        SvREFCNT_inc((SV *)PL_defgv);  /* want to keep _ around! */
+    }
+    LEAVE;
+
+
+
+
 
 void
 _safe_call_sv(Package, mask, codesv)
@@ -253,12 +273,7 @@ PPCODE:
     save_hptr(&PL_defstash);           /* save current default stash   */
     /* the assignment to global defstash changes our sense of 'main'   */
     PL_defstash = gv_stashpv(Package, GV_ADDWARN); /* should exist already     */
-    if (strNE(HvNAME(PL_defstash),"main")) {
-        Safefree(HvNAME(PL_defstash));         
-        HvNAME(PL_defstash) = savepv("main"); /* make it think it's in main:: */
-        hv_store(PL_defstash,"_",1,(SV *)PL_defgv,0);  /* connect _ to global */
-        SvREFCNT_inc((SV *)PL_defgv);  /* want to keep _ around! */
-    }
+
     save_hptr(&PL_curstash);
     PL_curstash = PL_defstash;
 
@@ -271,6 +286,7 @@ PPCODE:
 
     /* %INC must be clean for use/require in compartment */
     save_hash(PL_incgv);
+    sv_free((SV*)GvHV(PL_incgv));  /* get rid of what save_hash gave us*/
     GvHV(PL_incgv) = (HV*)SvREFCNT_inc(GvHV(gv_HVadd(gv_fetchpv("INC",TRUE,SVt_PVHV))));
 
     PUSHMARK(SP);
index 7e1d6a3..a803b5f 100644 (file)
@@ -47,6 +47,7 @@ sub new {
     # the whole glob *_ rather than $_ and @_ separately, otherwise
     # @_ in non default packages within the compartment don't work.
     $obj->share_from('main', $default_share);
+    Opcode::_safe_pkg_prep($obj->{Root});
     return $obj;
 }
 
index b4a0419..90e16e6 100644 (file)
@@ -268,6 +268,7 @@ use XSLoader ();
        SO_RCVLOWAT
        SO_RCVTIMEO
        SO_REUSEADDR
+       SO_REUSEPORT
        SO_SNDBUF
        SO_SNDLOWAT
        SO_SNDTIMEO
index 2f6f65b..48128c9 100644 (file)
@@ -91,6 +91,7 @@ Perl_do_close
 Perl_do_join
 Perl_do_open
 Perl_do_open9
+Perl_do_openn
 Perl_dowantarray
 Perl_dump_all
 Perl_dump_eval
diff --git a/gv.c b/gv.c
index f2931ae..ea96c6f 100644 (file)
--- a/gv.c
+++ b/gv.c
@@ -750,20 +750,21 @@ Perl_gv_fetchpv(pTHX_ const char *nambeg, I32 add, I32 sv_type)
            HV *hv;
            I32 i;
            if (!PL_psig_ptr) {
-               int sig_num[] = { SIG_NUM };
-               New(73, PL_psig_ptr, sizeof(sig_num)/sizeof(*sig_num), SV*);
-               New(73, PL_psig_name, sizeof(sig_num)/sizeof(*sig_num), SV*);
+               Newz(73, PL_psig_ptr,  SIG_SIZE, SV*);
+               Newz(73, PL_psig_name, SIG_SIZE, SV*);
+               Newz(73, PL_psig_pend, SIG_SIZE, int);
            }
            GvMULTI_on(gv);
            hv = GvHVn(gv);
            hv_magic(hv, Nullgv, 'S');
-           for (i = 1; PL_sig_name[i]; i++) {
+           for (i = 1; i < SIG_SIZE; i++) {
                SV ** init;
                init = hv_fetch(hv, PL_sig_name[i], strlen(PL_sig_name[i]), 1);
                if (init)
                    sv_setsv(*init, &PL_sv_undef);
                PL_psig_ptr[i] = 0;
                PL_psig_name[i] = 0;
+               PL_psig_pend[i] = 0;
            }
        }
        break;
@@ -1155,6 +1156,23 @@ register GV *gv;
 }
 #endif                 /* Microport 2.4 hack */
 
+int
+Perl_magic_freeovrld(pTHX_ SV *sv, MAGIC *mg)
+{
+    AMT *amtp = (AMT*)mg->mg_ptr;
+    if (amtp && AMT_AMAGIC(amtp)) {
+       int i;
+       for (i = 1; i < NofAMmeth; i++) {
+           CV *cv = amtp->table[i];
+           if (cv != Nullcv) {
+               SvREFCNT_dec((SV *) cv);
+               amtp->table[i] = Nullcv;
+           }
+       }
+    }
+ return 0;
+}
+
 /* Updates and caches the CV's */
 
 bool
@@ -1170,18 +1188,11 @@ Perl_Gv_AMupdate(pTHX_ HV *stash)
   if (mg && amtp->was_ok_am == PL_amagic_generation
       && amtp->was_ok_sub == PL_sub_generation)
       return AMT_OVERLOADED(amtp);
-  if (amtp && AMT_AMAGIC(amtp)) {      /* Have table. */
-    int i;
-    for (i=1; i<NofAMmeth; i++) {
-      if (amtp->table[i]) {
-       SvREFCNT_dec(amtp->table[i]);
-      }
-    }
-  }
   sv_unmagic((SV*)stash, 'c');
 
   DEBUG_o( Perl_deb(aTHX_ "Recalcing overload magic in package %s\n",HvNAME(stash)) );
 
+  Zero(&amt,1,AMT);
   amt.was_ok_am = PL_amagic_generation;
   amt.was_ok_sub = PL_sub_generation;
   amt.fallback = AMGfallNO;
index d6f6821..ee75172 100644 (file)
@@ -3,7 +3,8 @@
 # OS/390 hints by David J. Fiander <davidf@mks.com>
 #
 # OS/390 OpenEdition Release 3 Mon Sep 22 1997 thanks to:
-#     
+# 
+#     John Goodyear <johngood@us.ibm.com>
 #     John Pfuntner <pfuntner@vnet.ibm.com>
 #     Len Johnson <lenjay@ibm.net>
 #     Bud Huff  <BAHUFF@us.oracle.com>
 #
 
 # To get ANSI C, we need to use c89, and ld doesn't exist
-cc='c89'
-ld='c89'
-# To link via definition side decks we need the dll option
-cccdlflags='-W 0,dll,"langlvl(extended)"'
-# c89 hides most of the useful header stuff, _ALL_SOURCE turns it on again,
+# You can override this with Configure -Dcc=gcc -Dld=ld.
+case "$cc" in
+'') cc='c89' ;;
+esac
+case "$ld" in
+'') ld='c89' ;;
+esac
+
+# -DMAXSIG=38 maximum signal number
+# -DOEMVS is used in place of #ifdef __MVS__ in certain places.
+# -D_OE_SOCKETS alters system headers.
+# -D_XOPEN_SOURCE_EXTENDEDA alters system headers.
+# c89 hides most of the useful header stuff, _ALL_SOURCE turns it on again.
 # YYDYNAMIC ensures that the OS/390 yacc generated parser is reentrant.
-# -DEBCDIC should come from Configure.
-ccflags='-DMAXSIG=38 -DOEMVS -D_OE_SOCKETS -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -DYYDYNAMIC'
-# Turning on optimization breaks perl
-optimize='none'
+# -DEBCDIC should come from Configure and need not be mentioned here.
+# Prepend your favorites with Configure -Dccflags=your_favorites
+case "$ccflags" in
+'') ccflags='-DMAXSIG=38 -DOEMVS -D_OE_SOCKETS -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -DYYDYNAMIC' ;;
+*) ccflags="$ccflags -DMAXSIG=38 -DOEMVS -D_OE_SOCKETS -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -DYYDYNAMIC" ;;
+esac
 
-alignbytes=8
+# Turning on optimization breaks perl.
+# You can override this with Configure -Doptimize='-O' or somesuch.
+case "$optimize" in
+'') optimize='none' ;;
+esac
+
+# To link via definition side decks we need the dll option
+# You can override this with Configure -Ucccdlflags or somesuch.
+case "$cccdlflags" in
+'') cccdlflags='-W 0,dll' ;;
+esac
+
+case "$so" in
+'') so='a' ;;
+esac
 
-usemymalloc='n'
+case "$alignbytes" in
+'') alignbytes=8 ;;
+esac
 
-so='a'
+case "$usemymalloc" in
+'') usemymalloc='n' ;;
+esac
 
 # On OS/390, libc.a doesn't really hold anything at all,
 # so running nm on it is pretty useless.
-usenm='n'
-
-# Dynamic loading doesn't work on OS/390 quite yet
-usedl='n'
-dlext='none'
+# You can override this with Configure -Dusenm.
+case "$usenm" in
+'') usenm='false' ;;
+esac
 
-# Configure can't figure this out for some reason
-d_shmatprototype='define'
+# Dynamic loading doesn't work on OS/390 quite yet.
+# However the easiest way to experiment with dynamic loading is with:
+#  Configure -Dusedl
+# You can even override some of this with things like:
+#  Configure -Dusedl -Ddlext=so -Ddlsrc=dl_dllload.xs.
+case "$usedl" in
+'')
+    usedl='n' 
+    case "$dlext" in
+    '') dlext='none' ;;
+    esac
+    ;;
+define)
+    case "$useshrplib" in
+    '') useshrplib='true' ;;
+    esac
+    case "$dlext" in
+    '') dlext='dll' ;;
+    esac
+    case "$dlsrc" in
+    '') dlsrc='dl_dllload.xs' ;;
+    esac
+    so='dll'
+    libperl='libperl.dll'
+    ccflags="$ccflags -D_SHR_ENVIRON -DPERL_EXTERNAL_GLOB -Wc,dll"
+    cccdlflags='-c -Wc,dll,EXPORTALL'
+    # You might add '-Wl,EDIT=NO' to get rid of the symbol
+    # information at the end of the executable.
+    #
+    # The following will need to be modified for the installed libperl.x
+    ccdlflags="-W l,dll `pwd`/libperl.x"
+    ldflags=''
+    lddlflags='-W l,dll'
+    ;;
+esac
+# even on static builds using LIBPATH should be OK.
+case "$ldlibpthname" in
+'') ldlibpthname=LIBPATH ;;
+esac
 
-usenm='false'
-i_time='define'
-i_systime='define'
+# Header files to include.
+# You can override these with Configure -Ui_time -Ui_systime.
+case "$i_time" in
+'') i_time='define' ;;
+esac
+case "$i_systime" in
+'') i_systime='define' ;;
+esac
 
 # (from aix.sh)
 # uname -m output is too specific and not appropriate here
 # osname should come from Configure
-#
+# You can override this with Configure -Darchname='s390' but please don't.
 case "$archname" in
 '') archname="$osname" ;;
 esac
 
-archobjs=ebcdic.o
+# Architecture related object files.
+# ebcdic.c contains special \cX mapping code for EBCDIC char sets.
+# Prepend your preference with Configure -Darchobs=your_preference.o.
+case "$archname" in
+'') archobjs="ebcdic.o" ;;
+*) archobjs="$archobjs ebcdic.o" ;;
+esac
 
-# We have our own cppstdin.
-echo 'cat >.$$.c; '"$cc"' -E -Wc,NOLOC ${1+"$@"} .$$.c; rm .$$.c' > cppstdin
+# We have our own cppstdin script.  This is not a variable since 
+# Configure sees the presence of the script file.
+# We put system header -D definitions in so that Configure
+# can find the shmat() prototype in <sys/shm.h> and various
+# other things.  Unfortunately, cppflags occurs too late to be of 
+# value external to the script.  This may need to be revisited 
+# under a compiler other than c89.
+echo 'cat >.$$.c; '"$cc"' -D_OE_SOCKETS -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -E -Wc,NOLOC ${1+"$@"} .$$.c; rm .$$.c' > cppstdin
 
 #
-# Note that Makefile.SH employs a bare yacc to generate 
+# Note that Makefile.SH employs a bare yacc command to generate 
 # perly.[hc] and a2p.[hc], hence you may wish to:
 #
 #    alias yacc='myyacc'
index 2e46b8c..5c45832 100644 (file)
@@ -7,11 +7,43 @@
 #
 
 # To get ANSI C, we need to use c89, and ld does not exist
-cc='c89'
-ld='c89'
+# You can override this with Configure -Dcc=gcc -Dld=ld.
+case "$cc" in
+'') cc='c89' ;;
+esac
+case "$ld" in
+'') ld='c89' ;;
+esac
 
 # C-Flags:
-ccflags='-K enum_long,llm_case_lower,llm_keep,no_integer_overflow -DPOSIX_BC -DUSE_PURE_BISON -D_XOPEN_SOURCE_EXTENDED'
+# -DPOSIX_BC
+# -DUSE_PURE_BISON
+# -D_XOPEN_SOURCE_EXTENDED alters system headers.
+# Prepend your favorites with Configure -Dccflags=your_favorites
+case "$ccflags" in
+'') ccflags='-K enum_long,llm_case_lower,llm_keep,no_integer_overflow -DPOSIX_BC -DUSE_PURE_BISON -D_XOPEN_SOURCE_EXTENDED' ;;
+*) ccflags='$ccflags -Kenum_long,llm_case_lower,llm_keep,no_integer_overflow -DPOSIX_BC -DUSE_PURE_BISON -D_XOPEN_SOURCE_EXTENDED' ;;
+esac
+
+# ccdlflags have yet to be determined.
+#case "$ccdlflags" in
+#'') ccdlflags='-c' ;;
+#esac
+
+# cccdlflags have yet to be determined.
+#case "$cccdlflags" in
+#'') cccdlflags='' ;;
+#esac
+
+# ldflags have yet to be determined.
+#case "$ldflags" in
+#'') ldflags='' ;;
+#esac
+
+# lddlflags have yet to be determined.
+#case "$lddlflags" in
+#'') lddlflags='' ;;
+#esac
 
 # Flags on a RISC-Host (SUNRISE):
 if [ -n "`bs2cmd SHOW-SYSTEM-INFO | egrep 'HSI-ATT.*TYPE.*SR'`" ]; then
@@ -23,20 +55,47 @@ if [ -n "`bs2cmd SHOW-SYSTEM-INFO | egrep 'HSI-ATT.*TYPE.*SR'`" ]; then
 fi
 
 # Turning on optimization breaks perl (CORE-DUMP):
-optimize='none'
+# You can override this with Configure -Doptimize='-O' or somesuch.
+case "$optimize" in
+'') optimize='none' ;;
+esac
 
 # we don''t use dynamic memorys (yet):
-so='none'
-usedl='no'
-dlext='none'
+case "$so" in
+'') so='none' ;;
+esac
+
+case "$usemymalloc" in
+'') usemymalloc='n' ;;
+esac
 
 # On BS2000/Posix, libc.a does not really hold anything at all,
 # so running nm on it is pretty useless.
-usenm='no'
-
-# other Options:
-
-usemymalloc='no'
+# You can override this with Configure -Dusenm.
+case "$usenm" in
+'') usenm='false' ;;
+esac
 
-archobjs=ebcdic.o
+# Dynamic loading doesn't work on OS/390 quite yet.
+# You can override this with
+#  Configure -Dusedl -Ddlext=.so -Ddlsrc=dl_dllload.xs.
+case "$usedl" in
+'') usedl='n' ;;
+esac
+case "$dlext" in
+'') dlext='none' ;;
+esac
+#case "$dlsrc" in
+#'') dlsrc='none' ;;
+#esac
+#case "$ldlibpthname" in
+#'') ldlibpthname=LIBPATH ;;
+#esac
 
+# Architecture related object files.
+# ebcdic.c contains special \cX mapping code for EBCDIC char sets.
+# Prepend your preference with Configure -Darchobs=your_preference.o.
+case "$archname" in
+'') archobjs="ebcdic.o" ;;
+*) archobjs="$archobjs ebcdic.o" ;;
+esac
index f3788cf..e2e9f0f 100755 (executable)
@@ -80,6 +80,7 @@ my @pods = (<pod/*.pod>);
 # files under the archlib directory.
 my %archpms = (
     Config => 1, 
+    lib => 1, 
 );
 
 if ($^O eq 'dos') {
@@ -603,8 +604,8 @@ sub installlib {
     }
     
     # ignore patch backups, RCS files, emacs backup & temp files and the
-    # .exists files.
-    return if $name =~ m{\.orig$|~$|^#.+#$|,v$|^\.exists};
+    # .exists files, and .PL files.
+    return if $name =~ m{\.orig$|~$|^#.+#$|,v$|^\.exists|\.PL$};
 
     $name = "$dir/$name" if $dir ne '';
 
index e9c3797..c921904 100644 (file)
@@ -464,6 +464,10 @@ PERLVAR(Ixpvlv_arenaroot,XPVLV*)   /* list of allocated xpvlv areas */
 PERLVAR(Ixpvbm_arenaroot,XPVBM*)       /* list of allocated xpvbm areas */
 PERLVAR(Ihe_arenaroot, XPV*)           /* list of allocated he areas */
 
+PERLVAR(Ipsig_pend, int *)             /* per-signal "count" of pending */
+PERLVARI(Isig_pending, int,0)           /* Number if highest signal pending */
+
+
 /* New variables must be added to the very end for binary compatibility.
  * XSUB.h provides wrapper functions via perlapi.h that make this
  * irrelevant, but not all code may be expected to #include XSUB.h. */
index 3343041..75540ed 100644 (file)
 #define KEY_qq                 154
 #define KEY_qr                 155
 #define KEY_quotemeta          156
-#define KEY_qw                 157
-#define KEY_qx                 158
-#define KEY_rand               159
-#define KEY_read               160
-#define KEY_readdir            161
-#define KEY_readline           162
-#define KEY_readlink           163
-#define KEY_readpipe           164
-#define KEY_recv               165
-#define KEY_redo               166
-#define KEY_ref                        167
-#define KEY_rename             168
-#define KEY_require            169
-#define KEY_reset              170
-#define KEY_return             171
-#define KEY_reverse            172
-#define KEY_rewinddir          173
-#define KEY_rindex             174
-#define KEY_rmdir              175
-#define KEY_s                  176
-#define KEY_scalar             177
-#define KEY_seek               178
-#define KEY_seekdir            179
-#define KEY_select             180
-#define KEY_semctl             181
-#define KEY_semget             182
-#define KEY_semop              183
-#define KEY_send               184
-#define KEY_setgrent           185
-#define KEY_sethostent         186
-#define KEY_setnetent          187
-#define KEY_setpgrp            188
-#define KEY_setpriority                189
-#define KEY_setprotoent                190
-#define KEY_setpwent           191
-#define KEY_setservent         192
-#define KEY_setsockopt         193
-#define KEY_shift              194
-#define KEY_shmctl             195
-#define KEY_shmget             196
-#define KEY_shmread            197
-#define KEY_shmwrite           198
-#define KEY_shutdown           199
-#define KEY_sin                        200
-#define KEY_sleep              201
-#define KEY_socket             202
-#define KEY_socketpair         203
-#define KEY_sort               204
-#define KEY_splice             205
-#define KEY_split              206
-#define KEY_sprintf            207
-#define KEY_sqrt               208
-#define KEY_srand              209
-#define KEY_stat               210
-#define KEY_study              211
-#define KEY_sub                        212
-#define KEY_substr             213
-#define KEY_symlink            214
-#define KEY_syscall            215
-#define KEY_sysopen            216
-#define KEY_sysread            217
-#define KEY_sysseek            218
-#define KEY_system             219
-#define KEY_syswrite           220
-#define KEY_tell               221
-#define KEY_telldir            222
-#define KEY_tie                        223
-#define KEY_tied               224
-#define KEY_time               225
-#define KEY_times              226
-#define KEY_tr                 227
-#define KEY_truncate           228
-#define KEY_uc                 229
-#define KEY_ucfirst            230
-#define KEY_umask              231
-#define KEY_undef              232
-#define KEY_unless             233
-#define KEY_unlink             234
-#define KEY_unpack             235
-#define KEY_unshift            236
-#define KEY_untie              237
-#define KEY_until              238
-#define KEY_use                        239
-#define KEY_utime              240
-#define KEY_values             241
-#define KEY_vec                        242
-#define KEY_wait               243
-#define KEY_waitpid            244
-#define KEY_wantarray          245
-#define KEY_warn               246
-#define KEY_while              247
-#define KEY_write              248
-#define KEY_x                  249
-#define KEY_xor                        250
-#define KEY_y                  251
+#define KEY_qu                 157
+#define KEY_qw                 158
+#define KEY_qx                 159
+#define KEY_rand               160
+#define KEY_read               161
+#define KEY_readdir            162
+#define KEY_readline           163
+#define KEY_readlink           164
+#define KEY_readpipe           165
+#define KEY_recv               166
+#define KEY_redo               167
+#define KEY_ref                        168
+#define KEY_rename             169
+#define KEY_require            170
+#define KEY_reset              171
+#define KEY_return             172
+#define KEY_reverse            173
+#define KEY_rewinddir          174
+#define KEY_rindex             175
+#define KEY_rmdir              176
+#define KEY_s                  177
+#define KEY_scalar             178
+#define KEY_seek               179
+#define KEY_seekdir            180
+#define KEY_select             181
+#define KEY_semctl             182
+#define KEY_semget             183
+#define KEY_semop              184
+#define KEY_send               185
+#define KEY_setgrent           186
+#define KEY_sethostent         187
+#define KEY_setnetent          188
+#define KEY_setpgrp            189
+#define KEY_setpriority                190
+#define KEY_setprotoent                191
+#define KEY_setpwent           192
+#define KEY_setservent         193
+#define KEY_setsockopt         194
+#define KEY_shift              195
+#define KEY_shmctl             196
+#define KEY_shmget             197
+#define KEY_shmread            198
+#define KEY_shmwrite           199
+#define KEY_shutdown           200
+#define KEY_sin                        201
+#define KEY_sleep              202
+#define KEY_socket             203
+#define KEY_socketpair         204
+#define KEY_sort               205
+#define KEY_splice             206
+#define KEY_split              207
+#define KEY_sprintf            208
+#define KEY_sqrt               209
+#define KEY_srand              210
+#define KEY_stat               211
+#define KEY_study              212
+#define KEY_sub                        213
+#define KEY_substr             214
+#define KEY_symlink            215
+#define KEY_syscall            216
+#define KEY_sysopen            217
+#define KEY_sysread            218
+#define KEY_sysseek            219
+#define KEY_system             220
+#define KEY_syswrite           221
+#define KEY_tell               222
+#define KEY_telldir            223
+#define KEY_tie                        224
+#define KEY_tied               225
+#define KEY_time               226
+#define KEY_times              227
+#define KEY_tr                 228
+#define KEY_truncate           229
+#define KEY_uc                 230
+#define KEY_ucfirst            231
+#define KEY_umask              232
+#define KEY_undef              233
+#define KEY_unless             234
+#define KEY_unlink             235
+#define KEY_unpack             236
+#define KEY_unshift            237
+#define KEY_untie              238
+#define KEY_until              239
+#define KEY_use                        240
+#define KEY_utime              241
+#define KEY_values             242
+#define KEY_vec                        243
+#define KEY_wait               244
+#define KEY_waitpid            245
+#define KEY_wantarray          246
+#define KEY_warn               247
+#define KEY_while              248
+#define KEY_write              249
+#define KEY_x                  250
+#define KEY_xor                        251
+#define KEY_y                  252
index 46dd53d..06ee8f3 100755 (executable)
@@ -181,6 +181,7 @@ q
 qq
 qr
 quotemeta
+qu
 qw
 qx
 rand
index 808e552..066577d 100644 (file)
@@ -52,6 +52,11 @@ sub import {
 
 $zero = 0;
 
+# overcome a floating point problem on certain osnames (posix-bc, os390)
+BEGIN {
+    my $x = 100000.0;
+    my $use_mult = int($x*1e-5)*1e5 == $x ? 1 : 0;
+}
 
 # normalize string form of number.   Strip leading zeros.  Strip any
 #   white space and add a sign, if missing.
@@ -228,8 +233,14 @@ sub mul { #(*int_num_array, *int_num_array) return int_num_array
       ($car, $cty) = (0, $[);
       for $y (@y) {
        $prod = $x * $y + ($prod[$cty] || 0) + $car;
+        if ($use_mult) {
        $prod[$cty++] =
          $prod - ($car = int($prod * 1e-5)) * 1e5;
+        }
+        else {
+       $prod[$cty++] =
+         $prod - ($car = int($prod / 1e5)) * 1e5;
+        }
       }
       $prod[$cty] += $car if $car;
       $x = shift @prod;
@@ -254,12 +265,22 @@ sub bdiv { #(dividend: num_str, divisor: num_str) return num_str
     if (($dd = int(1e5/($y[$#y]+1))) != 1) {
        for $x (@x) {
            $x = $x * $dd + $car;
+            if ($use_mult) {
            $x -= ($car = int($x * 1e-5)) * 1e5;
+            }
+            else {
+           $x -= ($car = int($x / 1e5)) * 1e5;
+            }
        }
        push(@x, $car); $car = 0;
        for $y (@y) {
            $y = $y * $dd + $car;
+            if ($use_mult) {
            $y -= ($car = int($y * 1e-5)) * 1e5;
+            }
+            else {
+           $y -= ($car = int($y / 1e5)) * 1e5;
+            }
        }
     }
     else {
@@ -276,7 +297,12 @@ sub bdiv { #(dividend: num_str, divisor: num_str) return num_str
            ($car, $bar) = (0,0);
            for ($y = $[, $x = $#x-$#y+$[-1; $y <= $#y; ++$y,++$x) {
                $prd = $q * $y[$y] + $car;
+                if ($use_mult) {
                $prd -= ($car = int($prd * 1e-5)) * 1e5;
+                }
+                else {
+               $prd -= ($car = int($prd / 1e5)) * 1e5;
+                }
                $x[$x] += 1e5 if ($bar = (($x[$x] -= $prd + $bar) < 0));
            }
            if ($x[$#x] < $car + $bar) {
index 84c8f66..2c61a9b 100644 (file)
@@ -1,7 +1,7 @@
 # Pod::Man -- Convert POD data to formatted *roff input.
-# $Id: Man.pm,v 1.12 2000/12/25 12:56:12 eagle Exp $
+# $Id: Man.pm,v 1.14 2001/01/16 13:39:45 eagle Exp $
 #
-# Copyright 1999, 2000 by Russ Allbery <rra@stanford.edu>
+# Copyright 1999, 2000, 2001 by Russ Allbery <rra@stanford.edu>
 #
 # This program is free software; you can redistribute it and/or modify it
 # under the same terms as Perl itself.
@@ -38,7 +38,7 @@ use vars qw(@ISA %ESCAPES $PREAMBLE $VERSION);
 # Perl core and too many things could munge CVS magic revision strings.
 # This number should ideally be the same as the CVS revision in podlators,
 # however.
-$VERSION = 1.12;
+$VERSION = 1.14;
 
 
 ############################################################################
@@ -410,6 +410,10 @@ sub begin_pod {
         }
     }
 
+    # If $name contains spaces, quote it; this mostly comes up in the case
+    # of input from stdin.
+    $name = '"' . $name . '"' if ($name =~ /\s/);
+
     # Modification date header.  Try to use the modification time of our
     # input.
     if (!defined $$self{date}) {
@@ -630,6 +634,7 @@ sub cmd_head1 {
     local $_ = $self->parse (@_);
     s/\s+$//;
     s/\\s-?\d//g;
+    s/\s*\n\s*/ /g;
     if ($$self{ITEMS} > 1) {
         $$self{ITEMS} = 0;
         $self->output (".PD\n");
@@ -644,6 +649,7 @@ sub cmd_head2 {
     my $self = shift;
     local $_ = $self->parse (@_);
     s/\s+$//;
+    s/\s*\n\s*/ /g;
     if ($$self{ITEMS} > 1) {
         $$self{ITEMS} = 0;
         $self->output (".PD\n");
@@ -658,6 +664,7 @@ sub cmd_head3 {
     my $self = shift;
     local $_ = $self->parse (@_);
     s/\s+$//;
+    s/\s*\n\s*/ /g;
     if ($$self{ITEMS} > 1) {
         $$self{ITEMS} = 0;
         $self->output (".PD\n");
@@ -673,6 +680,7 @@ sub cmd_head4 {
     my $self = shift;
     local $_ = $self->parse (@_);
     s/\s+$//;
+    s/\s*\n\s*/ /g;
     if ($$self{ITEMS} > 1) {
         $$self{ITEMS} = 0;
         $self->output (".PD\n");
index 4044f7f..9a3d50d 100644 (file)
@@ -42,6 +42,12 @@ package bigint;
 #   bnorm(BINT) return BINT             normalization
 #
 
+# overcome a floating point problem on certain osnames (posix-bc, os390)
+BEGIN {
+    my $x = 100000.0;
+    my $use_mult = int($x*1e-5)*1e5 == $x ? 1 : 0;
+}
+
 $zero = 0;
 
 \f
@@ -212,8 +218,14 @@ sub main'bmul { #(num_str, num_str) return num_str
            ($car, $cty) = (0, $[);
            for $y (@y) {
                $prod = $x * $y + $prod[$cty] + $car;
-               $prod[$cty++] =
-                   $prod - ($car = int($prod * 1e-5)) * 1e5;
+                if ($use_mult) {
+                   $prod[$cty++] =
+                       $prod - ($car = int($prod * 1e-5)) * 1e5;
+                }
+                else {
+                   $prod[$cty++] =
+                       $prod - ($car = int($prod / 1e5)) * 1e5;
+                }
            }
            $prod[$cty] += $car if $car;
            $x = shift @prod;
@@ -239,12 +251,22 @@ sub main'bdiv { #(dividend: num_str, divisor: num_str) return num_str
     if (($dd = int(1e5/($y[$#y]+1))) != 1) {
        for $x (@x) {
            $x = $x * $dd + $car;
+            if ($use_mult) {
            $x -= ($car = int($x * 1e-5)) * 1e5;
+            }
+            else {
+           $x -= ($car = int($x / 1e5)) * 1e5;
+            }
        }
        push(@x, $car); $car = 0;
        for $y (@y) {
            $y = $y * $dd + $car;
+            if ($use_mult) {
            $y -= ($car = int($y * 1e-5)) * 1e5;
+            }
+            else {
+           $y -= ($car = int($y / 1e5)) * 1e5;
+            }
        }
     }
     else {
@@ -259,7 +281,12 @@ sub main'bdiv { #(dividend: num_str, divisor: num_str) return num_str
            ($car, $bar) = (0,0);
            for ($y = $[, $x = $#x-$#y+$[-1; $y <= $#y; ++$y,++$x) {
                $prd = $q * $y[$y] + $car;
+                if ($use_mult) {
                $prd -= ($car = int($prd * 1e-5)) * 1e5;
+                }
+                else {
+               $prd -= ($car = int($prd / 1e5)) * 1e5;
+                }
                $x[$x] += 1e5 if ($bar = (($x[$x] -= $prd + $bar) < 0));
            }
            if ($x[$#x] < $car + $bar) {
index 1e073c2..53ae308 100644 (file)
@@ -7,22 +7,25 @@ use vars qw(%layers @layers);
 # Populate hash in non-PerlIO case
 %layers = (crlf => 1, raw => 0) unless (@layers);
 
+# warn join(',',keys %layers);
+
 our $VERSION = '1.00';
 
 sub import {
-    shift;
-    die "`use open' needs explicit list of disciplines" unless @_;
+    my ($class,@args) = @_;
+    croak("`use open' needs explicit list of disciplines") unless @args;
     $^H |= $open::hint_bits;
     my ($in,$out) = split(/\0/,(${^OPEN} || '\0'));
     my @in  = split(/\s+/,$in);
     my @out = split(/\s+/,$out);
-    while (@_) {
-       my $type = shift;
-       my $discp = shift;
+    while (@args) {
+       my $type = shift(@args);
+       my $discp = shift(@args);
        my @val;
-       foreach my $layer (split(/\s+:?/,$discp)) {
+       foreach my $layer (split(/\s+/,$discp)) {
+            $layer =~ s/^://;
            unless(exists $layers{$layer}) {
-               croak "Unknown discipline layer '$layer'";
+               carp("Unknown discipline layer '$layer'");
            }
            push(@val,":$layer");
            if ($layer =~ /^(crlf|raw)$/) {
index 6471ac8..74f791f 100644 (file)
@@ -1,4 +1,4 @@
-package unicode:distinct;
+package unicode::distinct;
 
 our $VERSION = '0.01';
 
diff --git a/mg.c b/mg.c
index 99600a4..8165302 100644 (file)
--- a/mg.c
+++ b/mg.c
@@ -313,11 +313,12 @@ Perl_mg_free(pTHX_ SV *sv)
        moremagic = mg->mg_moremagic;
        if (vtbl && vtbl->svt_free)
            CALL_FPTR(vtbl->svt_free)(aTHX_ sv, mg);
-       if (mg->mg_ptr && mg->mg_type != 'g')
+       if (mg->mg_ptr && mg->mg_type != 'g') {
            if (mg->mg_len >= 0)
               &n