This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Integrate:
authorJarkko Hietaniemi <jhi@iki.fi>
Mon, 8 Sep 2003 08:15:50 +0000 (08:15 +0000)
committerJarkko Hietaniemi <jhi@iki.fi>
Mon, 8 Sep 2003 08:15:50 +0000 (08:15 +0000)
[ 21051]
1. Work around the bug fixed by #20587 (because it's in 5.8.0).
2. Compensate for PL_sv_placeholder <= 5.8.1.
3. Clean up non-backwards-compatible tests.
4. Prepare for the 2.08 CPAN release.

[ 21052]
Musty corners of Syslog.pm.

[ 21057]
Updated Sharp Zaurus cross-compilation from Redvers Davies.

[ 21058]
Vanity patch.

[ 21063]
Subject: [PATCH] Re: [perl #23656] Safe reval bleeds local variable values
From: Dave Mitchell <davem@fdgroup.com>
Date: Sun, 7 Sep 2003 19:14:44 +0100
Message-ID: <20030907181444.GA7058@fdgroup.com>

[ 21064]
Upgrade to Unicode::Collate 0.28

[ 21065]
Subject: [PATCH] Test skeleton for debugger commands
From: Andreas J Koenig <andreas.koenig@anima.de>
Date: Sun, 07 Sep 2003 18:51:56 +0200
Message-ID: <87fzj8k0cz.fsf@franz.ak.mind.de>
With minor adjustments

[ 21066]
The in-memory files require PerlIO::scalar.

[ 21067]
Cleanup PerlIO::scalar documentation a bit.

[ 21068]
dumpvar.t: use Test::More;

[ 21069]
An empty test.

[ 21070]
More dumpvar testing.

[ 21071]
de0.t: use Test::More, add some tests.

[ 21072]
Subject: Re: [PATCH] Test skeleton for debugger commands
From: Andreas J Koenig <andreas.koenig@anima.de>
Date: Mon, 08 Sep 2003 10:48:27 +0200
Message-ID: <87llszis2s.fsf@franz.ak.mind.de>

[ 21073]
Subject: Re: one nit to fix [PATCH]
From: Rafael Garcia-Suarez <raphel.garcia-suarez@hexaflux.com>
Date: Mon, 8 Sep 2003 10:19:08 +0200
Message-Id: <20030908101908.5571326d.rgarcia@hexaflux.com>

[ 21074]
Subject: [PATCH] call_(pv|etc.) for Devel::PPPort
From: Tassilo von Parseval <tassilo.parseval@post.rwth-aachen.de>
Date: Mon, 08 Sep 2003 08:56:09 +0200
Message-id: <20030908065609.GA1260@ethan>
p4raw-link: @21074 on //depot/perl: e78280eef1d4944b27f03bb7d23ac12692f542fe
p4raw-link: @21073 on //depot/perl: b5a808db3c007cbb4159178941346ac3c6f968a7
p4raw-link: @21072 on //depot/perl: cc5fd0943567be6ee0408b6bc088cce15ca15861
p4raw-link: @21071 on //depot/perl: 7a2852eada400bfff9c63c487d3e65594d12d98f
p4raw-link: @21070 on //depot/perl: f97a9a4b11bc5c17f0a5caadd0d46e4be5b95cba
p4raw-link: @21069 on //depot/perl: 1b09bdda4fab4e08d67e64efca459415d5889e15
p4raw-link: @21068 on //depot/perl: 96b31d9ef6f02d5fac0d5502d45bc0ba71d292d8
p4raw-link: @21067 on //depot/perl: a920b0f7adaa661c0a5c180b356e27434c29449f
p4raw-link: @21066 on //depot/perl: e8c07a239fda7e5b7c4d932dc8e6b416c8ecaf3a
p4raw-link: @21065 on //depot/perl: fafebdf5c0e135737397bc4ab8fec007553101e7
p4raw-link: @21064 on //depot/perl: 06c8fc8f09dc8f7e52006b1a902e84e1587b786f
p4raw-link: @21063 on //depot/perl: 35ed0d3c8f1120489361bf37c4e66472d2262576
p4raw-link: @21058 on //depot/perl: 5ca085d78a72f53c0946033241106d8c00af2493
p4raw-link: @21057 on //depot/perl: 136febd582f8c09e243429ab77e54be8b75a494c
p4raw-link: @21052 on //depot/perl: 3d256c0f6af54af3995fa6abb8d11a7c054803e3
p4raw-link: @21051 on //depot/perl: fcaa57e7f91cda946b2f56c966b0368e91277889

p4raw-id: //depot/maint-5.8/perl@21075
p4raw-branched: from //depot/perl@21054 'branch in'
lib/Unicode/Collate/t/contract.t lib/perl5db/de0.t
lib/perl5db/dumpvar.t
p4raw-integrated: from //depot/perl@21054 'copy in' ext/Opcode/Safe.pm
(@17980..) ext/Storable/t/malice.t (@18008..)
ext/PerlIO/scalar/scalar.xs ext/PerlIO/t/scalar.t (@19247..)
Cross/TODO (@19297..) ext/Storable/ChangeLog (@19411..)
Cross/Makefile Cross/Makefile.SH.patch Cross/README
Cross/generate_config_sh Cross/installperl.patch (@19627..)
Cross/config.sh-arm-linux (@19899..) ext/Storable/t/utf8hash.t
(@20262..) lib/Unicode/Collate/t/test.t (@20452..)
ext/Storable/t/freeze.t (@20453..) ext/Storable/Storable.xs
(@20571..) ext/Sys/Syslog/Syslog.pm (@20686..)
ext/PerlIO/scalar/scalar.pm (@20704..) lib/Unicode/Collate.pm
lib/Unicode/Collate/Changes lib/Unicode/Collate/README
(@20990..) ext/Devel/PPPort/Changes ext/Devel/PPPort/PPPort.pm
ext/Devel/PPPort/t/test.t (@20996..) AUTHORS (@21041..) 'merge
in' MANIFEST (@20990..)

29 files changed:
AUTHORS
Cross/Makefile
Cross/Makefile.SH.patch
Cross/README
Cross/TODO
Cross/config.sh-arm-linux
Cross/generate_config_sh
Cross/installperl.patch
MANIFEST
ext/Devel/PPPort/Changes
ext/Devel/PPPort/PPPort.pm
ext/Devel/PPPort/t/test.t
ext/Opcode/Safe.pm
ext/PerlIO/scalar/scalar.pm
ext/PerlIO/scalar/scalar.xs
ext/PerlIO/t/scalar.t
ext/Storable/ChangeLog
ext/Storable/Storable.xs
ext/Storable/t/freeze.t
ext/Storable/t/malice.t
ext/Storable/t/utf8hash.t
ext/Sys/Syslog/Syslog.pm
lib/Unicode/Collate.pm
lib/Unicode/Collate/Changes
lib/Unicode/Collate/README
lib/Unicode/Collate/t/contract.t [new file with mode: 0644]
lib/Unicode/Collate/t/test.t
lib/perl5db/de0.t [new file with mode: 0644]
lib/perl5db/dumpvar.t [new file with mode: 0644]

diff --git a/AUTHORS b/AUTHORS
index 4b8461a..3c95ab7 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -617,6 +617,7 @@ Randy W. Sims
 Raphael Manfredi               <Raphael.Manfredi@pobox.com>
 Raul Dias                      <raul@dias.com.br>
 Raymund Will                   <ray@caldera.de>
+Redvers Davies                 <red@criticalintegration.com>
 Reini Urban                    <rurban@sbox.tu-graz.ac.at>
 Rex Dieter                     <rdieter@math.unl.edu>
 Rich Morin                     <rdm@cfcl.com>
index 4bb4c06..4e93f98 100644 (file)
@@ -1,6 +1,6 @@
 ## Toplevel Makefile for cross-compilation of perl
 #
-## $Id: Makefile,v 1.3 2003/05/27 21:23:19 red Exp red $
+## $Id: Makefile,v 1.4 2003/09/05 00:48:19 red Exp red $
 
 export TOPDIR?=${shell pwd}
 include $(TOPDIR)/config
@@ -50,7 +50,6 @@ perl:
        @echo Optimizations: $(FULL_OPTIMIZATION)
 
        $(TOPDIR)/generate_config_sh config.sh-$(SYS) > $(TOPDIR)/../config.sh
-       $(TOPDIR)/generate_config_sh config.sh-$(SYS) > $(TOPDIR)/../config.sh-arse
        cd $(TOPDIR)/.. ; ./Configure -S ; make depend ; make ; make more
        cd $(TOPDIR)/.. ; mkdir -p fake_config_library ; cp lib/Config.pm fake_config_library
        cd $(TOPDIR)/.. ; $(MAKE) more2 "PERLRUN=/usr/bin/perl -I$(TOPDIR)/../fake_config_library -MConfig"
index 0352b4b..6f17b37 100644 (file)
@@ -1,34 +1,26 @@
---- ../Makefile.SH     2003-04-22 14:13:52.000000000 +0000
-+++ Makefile.SH        2003-05-27 21:07:07.000000000 +0000
-@@ -104,16 +104,17 @@
-       case "$osname" in
-       linux)
+--- ../Makefile.SH     2003-08-22 09:49:04.000000000 -0500
++++ Makefile.SH        2003-09-05 02:38:40.000000000 -0500
+@@ -110,18 +110,7 @@
+           # INSTALL file, under "Building a shared perl library".
+           # If there is no pre-existing $libperl, we don't need
+           # to do anything further.
+-          if test -f $archlib/CORE/$libperl; then
 -              rm -f preload
--              cat <<-'EOT' > preload
--              #! /bin/sh
--              lib=$1
--              shift
--              test -r $lib && export LD_PRELOAD="$lib $LD_PRELOAD"
--              exec "$@"
--              EOT
+-              cat <<'EOT' > preload
+-#! /bin/sh
+-lib=$1
+-shift
+-test -r $lib && export LD_PRELOAD="$lib $LD_PRELOAD"
+-exec "$@"
+-EOT
 -              chmod 755 preload
 -              ldlibpth="$ldlibpth `pwd`/preload `pwd`/$libperl"
-+#             rm -f preload
-+#             cat <<-'EOT' > preload
-+#             #! /bin/sh
-+#             lib=$1
-+#             shift
-+#             test -r $lib && export LD_PRELOAD="$lib $LD_PRELOAD"
-+#             exec "$@"
-+#             EOT
-+#             chmod 755 preload
-+#             ldlibpth="$ldlibpth `pwd`/preload `pwd`/$libperl"
-+              echo linux libraries overridden my cross-compile patches
-               ;;
+-          fi
++          echo linux libraries overwritten by cross-compile patches
+           ;;
        os390)  test -f /bin/env && ldlibpth="/bin/env $ldlibpth"
                ;;
-@@ -343,9 +344,20 @@
+@@ -349,9 +338,21 @@
  .c.s:
        $(CCCMDSRC) -S $*.c
  
@@ -38,6 +30,7 @@
 +#all: $(FIRSTMAKEFILE) miniperl$(EXE_EXT) extra.pods $(private) $(public) $(dynamic_ext) $(nonxs_ext) extras.make
 +#     @echo " ";
 +#     @echo " Everything is up to date. Type '$(MAKE) test' to run test suite."
++
 +all: $(FIRSTMAKEFILE) miniperl$(EXE_EXT)
 +      mv miniperl miniperl-arm
 +      ln -s /usr/bin/perl miniperl
 +
 +more3: $(nonxs_ext)
 +
-+more4: extras.make 
++more4: extras.make
  
  .PHONY: all compile translators utilities
  
-@@ -355,10 +367,10 @@
+@@ -361,10 +362,10 @@
        cd x2p; $(MAKE) compile;
        cd pod; $(MAKE) compile;
  
@@ -65,7 +58,7 @@
        @echo " "; echo "       Making utilities"; cd utils; $(LDLIBPTH) $(MAKE) all
  
  
-@@ -535,7 +547,7 @@
+@@ -541,7 +542,7 @@
        $(CC) -o miniperl $(CLDFLAGS) \
            `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \
            miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perl$(OBJ_EXT) $(libs)
  !NO!SUBS!
                ;;
        beos*|next4*)
-@@ -552,7 +564,7 @@
-       -@rm -f miniperl.xok
-       $(CC) $(CLDFLAGS) -o miniperl \
-           miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(LLIBPERL) $(libs)
+@@ -549,7 +550,7 @@
+ miniperl: $& miniperlmain$(OBJ_EXT) $(LIBPERL) opmini$(OBJ_EXT)
+       $(CC) -o miniperl `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \
+           miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perl$(OBJ_EXT) $(libs)
 -      $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
 +#     $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
  !NO!SUBS!
                ;;
-       esac
-@@ -678,7 +690,7 @@
+       darwin*)
+@@ -716,7 +717,7 @@
  # We need to autosplit in two steps because VOS can't handle so many args
  #
  .PHONY: preplibrary
@@ -92,7 +85,7 @@
        @sh ./makedir lib/auto
        @echo " AutoSplitting perl library"
        $(LDLIBPTH) ./miniperl -Ilib -e 'use AutoSplit; \
-@@ -690,11 +702,11 @@
+@@ -728,11 +729,11 @@
  # Take care to avoid modifying lib/Config.pm without reason
  # (If trying to create a new port and having problems with the configpm script,
  # try 'make minitest' and/or commenting out the tests at the end of configpm.)
        $(LDLIBPTH) ./miniperl minimod.pl > minimod.tmp
        sh mv-if-diff minimod.tmp $@
        -touch lib/ExtUtils/Miniperl.pm
-@@ -702,18 +714,18 @@
+@@ -740,18 +741,18 @@
  lib/re.pm: ext/re/re.pm
        cp ext/re/re.pm ext/re/re.tmp && sh mv-if-diff ext/re/re.tmp lib/re.pm
  
        $(LDLIBPTH) ./miniperl -Ilib lib/lib_pm.PL
  
 -extra.pods: miniperl$(EXE_EXT)
-+extra.pods:
++extra.pods: 
        -@test -f extra.pods && rm -f `cat extra.pods`
        -@rm -f extra.pods
        -@for x in `grep -l '^=[a-z]' README.* | grep -v README.vms` ; do \
-@@ -752,18 +764,10 @@
+@@ -793,18 +794,7 @@
        $(MAKE) install.perl install.man STRIPFLAGS=$(STRIPFLAGS) INSTALLFLAGS=-n
  
  install.perl: all installperl
 -              cd ../pod; $(MAKE) compile; \
 -      else :; \
 -      fi
--      $(LDLIBPTH) ./perl installperl $(INSTALLFLAGS) $(STRIPFLAGS)
+-      $(LDLIBPTH) ./perl installperl --destdir=$(DESTDIR) $(INSTALLFLAGS) $(STRIPFLAGS)
 -      $(MAKE) extras.install
-+      /usr/bin/perl -Ifake_config_library -MConfig installperl $(INSTALLFLAGS) $(STRIPFLAGS)
+-
 -install.man:  all installman
--      $(LDLIBPTH) ./perl installman $(INSTALLFLAGS)
-+install.man:  installman
-+      /usr/bin/perl -Ifake_config_library -MConfig installman $(INSTALLFLAGS)
+-      $(LDLIBPTH) ./perl installman --destdir=$(DESTDIR) $(INSTALLFLAGS)
++      /usr/bin/perl -Ifake_config_library -MConfig installperl $(INSTALLFLAGS) $(STRIPFLAGS)
  
  # XXX Experimental. Hardwired values, but useful for testing.
  # Eventually Configure could ask for some of these values.
-@@ -870,16 +874,16 @@
+@@ -920,16 +910,16 @@
  #
  # DynaLoader may be needed for extensions that use Makefile.PL.
  
        @$(LDLIBPTH) sh ext/util/make_ext $(STATIC) $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
  
 -n_dummy $(nonxs_ext): miniperl$(EXE_EXT) preplibrary $(DYNALOADER) FORCE
-+n_dummy $(nonxs_ext):  preplibrary $(DYNALOADER) FORCE
++n_dummy $(nonxs_ext): preplibrary $(DYNALOADER) FORCE
        @$(LDLIBPTH) sh ext/util/make_ext nonxs $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
  
  .PHONY: clean _tidy _mopup _cleaner1 _cleaner2 \
-@@ -1019,7 +1023,7 @@
+@@ -1069,7 +1059,7 @@
  
  test_prep_pre: preplibrary utilities $(nonxs_ext)
  
        PERL=./perl $(MAKE) _test_prep
  
  _test_tty:
-@@ -1088,7 +1092,7 @@
+@@ -1157,7 +1147,7 @@
  
  # Can't depend on lib/Config.pm because that might be where miniperl
  # is crashing.
index e113380..4c5d25a 100644 (file)
@@ -1,26 +1,25 @@
-Summary
--------
+Building for arm-linux
+----------------------
 
-This is a patch set which adds cross-compilation to the perl
-buildsystem.  It was built as a part of the Open Zaurus
-(http://www.openzaurus.com/) distribution.  Most / All of the
-arm compiler optimisations are "borrowed" from this excellent
-project.
+The files in this directory add another cross-compilation
+target to the Perl buildsystem.  It was built as a part of
+the Open Zaurus (http://www.openzaurus.com/) distribution.
+Most / All of the arm compiler optimisations are "borrowed"
+from this excellent project.
 
 The main target is arm-linux but I have also managed to
-successfully cross-compile perl for solaris x86 using the same
+successfully cross-compile Perl for Solaris x86 using the same
 buildsystem.
 
 We are currently dependent on an existing working local copy of
-perl ** of the same version and revision ** which is available
-as /usr/bin/perl.  This could be migrated to using native
-miniperl with some additional effort.
+Perl ** of the same version and revision ** which is available
+as /usr/bin/perl. 
 
-Obviously you need a working and tested cross-compiler for your
-build and target combination.  The binary directory must be in
+You need a working and tested cross-compiler for your build
+and target combination.  The binary directory must be in
 your path.
 
-1)     You should be reading me (README) in perl-5.x.x/Cross
+1)     You should be reading me (README) in perl-5.8.1/Cross
 
 2)     Make sure you are in the Cross directory.
 
@@ -29,17 +28,49 @@ your path.
 4)     make patch      ## This will patch the existing source-tree.
 5)     make perl       ## Will make perl
 
+Your built Perl environment is in install_me_here/ in your build
+directory.  From here you can package and deploy as you wish.
+
 The Obvious Ommissions
 ----------------------
 
-This does NOT perform any installation as site installation method will
-be dependant on the target arch and OS. 
+This does NOT perform any installation as site installation method
+will be dependent on the target architecture and OS. 
 
-make test will NOT work as the binaries and libraries will not execute.
+make test will NOT work as the binaries and libraries will not execute
+on your BUILD machine. 
 
 Due to space limitations on the Zaurus (it's a PDA) we do not provide
 documentation in the core - Therefore man pages are not even generated.
 
+Other Targets (For Developers)
+------------------------------
+
+It is possible to extend the cross-compilation to other targets.
+We have sucessfully compiled for the target solaris2.8/x86
+on linux/x86 build system.
+
+To attempt a cross-compile for another target using the methods
+in this directory:
+
+1)     Copy the Perl source code onto your TARGET machine.
+2)     Execute sh Configure as normal and configure as required,
+       do not "make".
+3)     Copy the config.sh file that is generated to your BUILD
+       machine and place it in the Cross directory with the
+       filename config.sh-ARCH-OS.  For example,
+       config.sh-i386-pc-solaris2.8.  For the appropriate ARCH
+       and OS please refer to your cross-compiler documentation.
+4)     Edit Cross/config to reflect your new target and continue
+       with build as above.
+
+Should you wish to produce optimised binaries for different
+architectures you can add the appropriate compiler flags to
+the Makefile in a new ifeq ($(ARCH),...) ... endif block.
+
+Please refer to your cross-compiler documentation for details.
+
+
        Note that the Cross/ directory is also used by a different
        cross-compilation setup described in the INSTALL file, and
        executed by Configure.  There should be no conflicts since
index c7280d0..096e4db 100644 (file)
@@ -1,2 +1 @@
-Install man pages.
 Provide a better sandbox for building additional XS libraries.
index 46433bc..1857d75 100644 (file)
@@ -5,16 +5,14 @@
 # do not forget to propagate your changes by running "Configure -der". You may
 # instead choose to run each of the .SH files by yourself, or "Configure -S".
 #
-# $Id: config.sh-arm-linux,v 1.2 2003/05/27 21:31:15 red Exp red $
-#
 
 # Package name      : perl5
 # Source directory  : .
-# Configuration time: Sat Mar  8 00:20:33 UTC 2003
-# Configured by     : root
-# Target system     : linux zaurus 2.4.6-rmk1-np2-embedix #5 wed dec 11 22:20:32 cst 2002 armv4l unknown 
+# Configuration time: Wed Sep  3 22:24:58 EDT 2003
+# Configured by     : red
+# Target system     : linux openzaurus.criticalintegration.com 2.4.6-rmk1-np2-embedix #15 Wed Aug 6 07:49:44 UTC 2003 armv4l unknown 
 
-Author='Redvers Davies <red@criticalintegration.com>'
+Author=''
 Date='$Date'
 Header=''
 Id='$Id'
@@ -34,10 +32,10 @@ alignbytes='4'
 ansi2knr=''
 aphostname='/bin/hostname'
 api_revision='5'
-api_subversion='1'
+api_subversion='0'
 api_version='8'
-api_versionstring='5.8.1'
-ar='arm-linux-ar'
+api_versionstring='5.8.0'
+ar='ar'
 archlib='/usr/lib/perl5/5.8.1/armv4l-linux'
 archlibexp='/usr/lib/perl5/5.8.1/armv4l-linux'
 archname64=''
@@ -55,17 +53,17 @@ byteorder='1234'
 c=''
 castflags='0'
 cat='cat'
-cc='arm-linux-gcc'
-cccdlflags=''
-ccdlflags=''
-ccflags='-fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
+cc='cc'
+cccdlflags='-fpic'
+ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.8.1/armv4l-linux/CORE'
+ccflags='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
 ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
-ccname='arm-linux-gcc'
-ccsymbols='__APCS_32__=1 __ARM_ARCH_4__=1 __CHAR_UNSIGNED__=1 __GNUC_MINOR__=95 __arm=1 __arm__=1 __arm_elf=1 __arm_elf__=1 __linux=1 __linux__=1 __unix=1 __unix__=1 arm=1 arm_elf=1 cpu=arm machine=arm system=posix system=unix'
+ccname='gcc'
+ccsymbols='__APCS_32__=1 __ARM_ARCH_3__=1 __CHAR_UNSIGNED__=1 __GNUC_MINOR__=95 __arm__=1 __linux=1 __linux__=1 __unix=1 __unix__=1 cpu=arm machine=arm system=posix system=unix'
 ccversion=''
-cf_by='root'
+cf_by='red'
 cf_email='red@criticalintegration.com'
-cf_time='Sat Mar  8 00:20:33 UTC 2003'
+cf_time='Wed Sep  3 22:24:58 EDT 2003'
 charsize='1'
 chgrp=''
 chmod='chmod'
@@ -76,14 +74,14 @@ compress=''
 contains='grep'
 cp='cp'
 cpio=''
-cpp='arm-linux-cpp'
+cpp='cpp'
 cpp_stuff='42'
 cppccsymbols='__ELF__=1 __GNUC__=2 linux=1 unix=1'
-cppflags='-fno-strict-aliasing'
+cppflags='-fno-strict-aliasing -I/usr/local/include'
 cpplast='-'
 cppminus='-'
-cpprun='arm-linux-gcc -E'
-cppstdin='arm-linux-gcc -E'
+cpprun='cc -E'
+cppstdin='cc -E'
 cppsymbols='_FILE_OFFSET_BITS=64 __GLIBC__=2 __GLIBC_MINOR__=2 __GNUC_MINOR__=95 __GNU_LIBRARY__=6 _LARGEFILE_SOURCE=1 _POSIX_C_SOURCE=199506 _POSIX_SOURCE=1 __STDC__=1 __USE_BSD=1 __USE_FILE_OFFSET64=1 __USE_LARGEFILE=1 __USE_MISC=1 __USE_POSIX=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_SVID=1 __linux=1 __linux__=1 __unix=1 __unix__=1'
 crypt_r_proto='0'
 cryptlib=''
@@ -131,9 +129,9 @@ d_closedir='define'
 d_cmsghdr_s='define'
 d_const='define'
 d_copysignl='define'
-d_crypt='undef'
+d_crypt='define'
 d_crypt_r='undef'
-d_csh='undef'
+d_csh='define'
 d_ctermid_r='undef'
 d_ctime_r='undef'
 d_cuserid='define'
@@ -142,8 +140,8 @@ d_dbminitproto='undef'
 d_difftime='define'
 d_dirfd='define'
 d_dirnamlen='undef'
-d_dlerror='undef'
-d_dlopen='undef'
+d_dlerror='define'
+d_dlopen='define'
 d_dlsymun='undef'
 d_dosuid='undef'
 d_drand48_r='undef'
@@ -169,7 +167,7 @@ d_fchdir='define'
 d_fchmod='define'
 d_fchown='define'
 d_fcntl='define'
-d_fcntl_can_lock='undef'
+d_fcntl_can_lock='define'
 d_fd_macros='define'
 d_fd_set='define'
 d_fds_bits='undef'
@@ -292,9 +290,9 @@ d_mkstemp='define'
 d_mkstemps='undef'
 d_mktime='define'
 d_mmap='define'
-d_modfl='undef'
-d_modflproto='undef'
+d_modfl='define'
 d_modfl_pow32_bug='undef'
+d_modflproto='undef'
 d_mprotect='define'
 d_msg='define'
 d_msg_ctrunc='define'
@@ -325,8 +323,9 @@ d_phostname='undef'
 d_pipe='define'
 d_poll='define'
 d_portable='define'
-d_procselfexe='undef'
+d_procselfexe='define'
 d_pthread_atfork='undef'
+d_pthread_attr_setscope='define'
 d_pthread_yield='undef'
 d_pwage='undef'
 d_pwchange='undef'
@@ -412,7 +411,7 @@ d_socket='define'
 d_socklen_t='define'
 d_sockpair='define'
 d_socks5_init='undef'
-d_sqrtl='undef'
+d_sqrtl='define'
 d_srand48_r='undef'
 d_srandom_r='undef'
 d_sresgproto='undef'
@@ -464,7 +463,7 @@ d_tmpnam_r='undef'
 d_truncate='define'
 d_ttyname_r='undef'
 d_tzname='define'
-d_u32align='define'
+d_u32align='undef'
 d_ualarm='define'
 d_umask='define'
 d_uname='define'
@@ -502,7 +501,7 @@ dlsrc='dl_dlopen.xs'
 doublesize='8'
 drand01='drand48()'
 drand48_r_proto='0'
-dynamic_ext='B ByteLoader Cwd Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Unicode/Normalize attrs re threads threads/shared Encode/Byte Encode/CN Encode/EBCDIC Encode/JP Encode/KR Encode/Symbol Encode/TW Encode/Unicode Errno Filter/Util/Call'
+dynamic_ext='B ByteLoader Cwd Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Unicode/Normalize XS/APItest XS/Typemap attrs re threads threads/shared'
 eagain='EAGAIN'
 ebcdic='undef'
 echo='echo'
@@ -517,7 +516,7 @@ endservent_r_proto='0'
 eunicefix=':'
 exe_ext=''
 expr='expr'
-extensions='B ByteLoader Cwd Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Unicode/Normalize attrs re threads threads/shared Encode/Byte Encode/CN Encode/EBCDIC Encode/JP Encode/KR Encode/Symbol Encode/TW Encode/Unicode Errno'
+extensions='B ByteLoader Cwd Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Unicode/Normalize XS/APItest XS/Typemap attrs re threads threads/shared Errno'
 extras=''
 fflushNULL='define'
 fflushall='undef'
@@ -528,12 +527,12 @@ fpossize='16'
 fpostype='fpos_t'
 freetype='void'
 from=':'
-full_ar='/usr/local/arm/2.95.3/bin/arm-linux-ar'
-full_csh='csh'
+full_ar='/usr/bin/ar'
+full_csh='/bin/csh'
 full_sed='/bin/sed'
 gccansipedantic=''
 gccosandvers=''
-gccversion='2.95.1 19990816 (release)'
+gccversion='2.95.3 20010125 (prerelease)'
 getgrent_r_proto='0'
 getgrgid_r_proto='0'
 getgrnam_r_proto='0'
@@ -561,7 +560,7 @@ gidtype='gid_t'
 glibpth='/usr/shlib  /lib /usr/lib /usr/lib/386 /lib/386 /usr/ccs/lib /usr/ucblib /usr/local/lib '
 gmake='gmake'
 gmtime_r_proto='0'
-gnulibc_version='2.2.4'
+gnulibc_version='2.2.2'
 grep='grep'
 groupcat='cat /etc/group'
 groupstype='gid_t'
@@ -671,22 +670,32 @@ incpath=''
 inews=''
 installarchlib='./install_me_here/usr/lib/perl5/5.8.1/armv4l-linux'
 installbin='./install_me_here/usr/bin'
-installman1dir=''
-installman3dir=''
-installprefix='./install_me_here/usr/lib/perl5'
-installprefixexp='./install_me_here/usr/lib/perl5'
+installhtml1dir=''
+installhtml3dir=''
+installman1dir='./install_me_here/usr/share/man/man1'
+installman3dir='./install_me_here/usr/share/man/man3'
+installprefix='./install_me_here/usr'
+installprefixexp='./install_me_here/usr'
 installprivlib='./install_me_here/usr/lib/perl5/5.8.1'
 installscript='./install_me_here/usr/bin'
 installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.8.1/armv4l-linux'
 installsitebin='./install_me_here/usr/bin'
-installsitehtml1=''
-installsitehtml3=''
+installsitehtml1dir=''
+installsitehtml3dir=''
 installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.8.1'
-installstyle='lib/perl5'
+installsiteman1dir='./install_me_here/usr/share/man/man1'
+installsiteman3dir='./install_me_here/usr/share/man/man3'
+installsitescript='./install_me_here/usr/bin'
+installstyle='./install_me_herelib/perl5'
 installusrbinperl='undef'
 installvendorarch=''
 installvendorbin=''
+installvendorhtml1dir=''
+installvendorhtml3dir=''
 installvendorlib=''
+installvendorman1dir=''
+installvendorman3dir=''
+installvendorscript=''
 intsize='4'
 issymlink='/usr/bin/test -h'
 ivdformat='"ld"'
@@ -694,22 +703,22 @@ ivsize='4'
 ivtype='long'
 known_extensions='B ByteLoader Cwd DB_File Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call GDBM_File I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread Time/HiRes Unicode/Normalize XS/APItest XS/Typemap attrs re threads threads/shared'
 ksh=''
-ld='arm-linux-ld'
-lddlflags=' -shared '
-ldflags=''
+ld='cc'
+lddlflags='-shared -L/usr/local/lib'
+ldflags=' -L/usr/local/lib'
 ldflags_uselargefiles=''
 ldlibpthname='LD_LIBRARY_PATH'
 less='less'
 lib_ext='.a'
-libc='/lib/libc-2.2.4.so'
+libc='/lib/libc-2.2.2.so'
 libperl='libperl.so'
-libpth='/lib /usr/lib'
-libs='-lc -lm -ldl'
-libsdirs=' /lib'
-libsfiles=' libc.so'
-libsfound=' /lib/libc.so'
-libspath=' /lib /usr/lib'
-libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun m c cposix posix ndir dir crypt sec ucb BSD PW x util'
+libpth='/usr/local/lib /lib /usr/lib'
+libs='-lnsl -ldl -lm -lcrypt -lutil -lc'
+libsdirs=' /usr/lib'
+libsfiles=' libnsl.so libdl.so libm.so libcrypt.so libutil.so libc.so'
+libsfound=' /usr/lib/libnsl.so /usr/lib/libdl.so /usr/lib/libm.so /usr/lib/libcrypt.so /usr/lib/libutil.so /usr/lib/libc.so'
+libspath=' /usr/local/lib /lib /usr/lib'
+libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun m crypt sec util c cposix posix ucb BSD'
 libswanted_uselargefiles=''
 line=''
 lint=''
@@ -734,13 +743,14 @@ make_set_make='#'
 mallocobj=''
 mallocsrc=''
 malloctype='void *'
-man1dir=' '
-man1direxp=''
-man1ext='0'
-man3dir=' '
-man3direxp=''
-man3ext='0'
+man1dir='/usr/share/man/man1'
+man1direxp='/usr/share/man/man1'
+man1ext='1'
+man3dir='/usr/share/man/man3'
+man3direxp='/usr/share/man/man3'
+man3ext='3'
 mips_type=''
+mistrustnm=''
 mkdir='mkdir'
 mmaptype='void *'
 modetype='mode_t'
@@ -749,8 +759,8 @@ multiarch='undef'
 mv=''
 myarchname='armv4l-linux'
 mydomain='.criticalintegration.com'
-myhostname='citalopram'
-myuname='linux zaurus 2.4.6-rmk1-np2-embedix #5 wed dec 11 22:20:32 cst 2002 armv4l unknown '
+myhostname='openzaurus'
+myuname='linux openzaurus.criticalintegration.com 2.4.6-rmk1-np2-embedix #15 Wed Aug 6 07:49:44 UTC 2003 armv4l unknown '
 n='-n'
 need_va_copy='undef'
 netdb_hlen_type='size_t'
@@ -759,7 +769,7 @@ netdb_name_type='const char *'
 netdb_net_type='in_addr_t'
 nm='nm'
 nm_opt=''
-nm_so_opt=''
+nm_so_opt='--dynamic'
 nonxs_ext='Errno'
 nroff='nroff'
 nvEUformat='"E"'
@@ -784,11 +794,11 @@ pager='/usr/bin/less'
 passcat='cat /etc/passwd'
 patchlevel='8'
 path_sep=':'
-perl5=''
+perl5='/usr/bin/perl'
 perl=''
 perl_patchlevel=''
 perladmin='red@criticalintegration.com'
-perllibs='-lc -lm -ldl'
+perllibs='-lnsl -ldl -lm -lcrypt -lutil -lc'
 perlpath='/usr/bin/perl'
 pg='pg'
 phostname='hostname'
@@ -801,7 +811,7 @@ prefix='/usr'
 prefixexp='/usr'
 privlib='/usr/lib/perl5/5.8.1'
 privlibexp='/usr/lib/perl5/5.8.1'
-procselfexe=''
+procselfexe='"/proc/self/exe"'
 prototype='define'
 ptrsize='4'
 quadkind='3'
@@ -810,7 +820,7 @@ randbits='48'
 randfunc='drand48'
 random_r_proto='0'
 randseedtype='long'
-ranlib='/usr/bin/ranlib'
+ranlib=':'
 rd_nodata='-1'
 readdir64_r_proto='0'
 readdir_r_proto='0'
@@ -854,26 +864,32 @@ shmattype='void *'
 shortsize='2'
 shrpenv=''
 shsharp='true'
-sig_count='1'
-sig_name='ZERO '
-sig_name_init='"ZERO", 0'
-sig_num='0 '
-sig_num_init='0, 0'
-sig_size='1'
+sig_count='64'
+sig_name='ZERO HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS RTMIN NUM33 NUM34 NUM35 NUM36 NUM37 NUM38 NUM39 NUM40 NUM41 NUM42 NUM43 NUM44 NUM45 NUM46 NUM47 NUM48 NUM49 NUM50 NUM51 NUM52 NUM53 NUM54 NUM55 NUM56 NUM57 NUM58 NUM59 NUM60 NUM61 NUM62 RTMAX IOT CLD POLL UNUSED '
+sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "TRAP", "ABRT", "BUS", "FPE", "KILL", "USR1", "SEGV", "USR2", "PIPE", "ALRM", "TERM", "STKFLT", "CHLD", "CONT", "STOP", "TSTP", "TTIN", "TTOU", "URG", "XCPU", "XFSZ", "VTALRM", "PROF", "WINCH", "IO", "PWR", "SYS", "RTMIN", "NUM33", "NUM34", "NUM35", "NUM36", "NUM37", "NUM38", "NUM39", "NUM40", "NUM41", "NUM42", "NUM43", "NUM44", "NUM45", "NUM46", "NUM47", "NUM48", "NUM49", "NUM50", "NUM51", "NUM52", "NUM53", "NUM54", "NUM55", "NUM56", "NUM57", "NUM58", "NUM59", "NUM60", "NUM61", "NUM62", "RTMAX", "IOT", "CLD", "POLL", "UNUSED", 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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 6 17 29 31 '
+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, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 6, 17, 29, 31, 0'
+sig_size='68'
 signal_t='void'
 sitearch='/usr/lib/perl5/site_perl/5.8.1/armv4l-linux'
 sitearchexp='/usr/lib/perl5/site_perl/5.8.1/armv4l-linux'
 sitebin='/usr/bin'
 sitebinexp='/usr/bin'
-sitehtml1=' '
-sitehtml1exp=''
-sitehtml3=' '
-sitehtml3exp=''
+sitehtml1dir=''
+sitehtml1direxp=''
+sitehtml3dir=''
+sitehtml3direxp=''
 sitelib='/usr/lib/perl5/site_perl/5.8.1'
 sitelib_stem='/usr/lib/perl5/site_perl'
 sitelibexp='/usr/lib/perl5/site_perl/5.8.1'
-siteprefix='/usr/lib/perl5.8.1'
+siteman1dir='/usr/share/man/man1'
+siteman1direxp='/usr/share/man/man1'
+siteman3dir='/usr/share/man/man3'
+siteman3direxp='/usr/share/man/man3'
+siteprefix='/usr'
 siteprefixexp='/usr'
+sitescript='/usr/bin'
+sitescriptexp='/usr/bin'
 sizesize='4'
 sizetype='size_t'
 sleep=''
@@ -902,8 +918,8 @@ stdio_stream_array=''
 strerror_r_proto='0'
 strings='/usr/include/string.h'
 submit=''
-subversion='0'
-sysman='/usr/man/man1'
+subversion='1'
+sysman='/usr/share/man/man1'
 tail=''
 tar=''
 targetarch=''
@@ -938,8 +954,8 @@ use5005threads='undef'
 use64bitall='undef'
 use64bitint='undef'
 usecrosscompile='undef'
-usedl='undef'
-usefaststdio='undef'
+usedl='define'
+usefaststdio='define'
 useithreads='undef'
 uselargefiles='define'
 uselongdouble='undef'
@@ -969,13 +985,23 @@ vendorarch=''
 vendorarchexp=''
 vendorbin=''
 vendorbinexp=''
+vendorhtml1dir=' '
+vendorhtml1direxp=''
+vendorhtml3dir=' '
+vendorhtml3direxp=''
 vendorlib=''
 vendorlib_stem=''
 vendorlibexp=''
+vendorman1dir=' '
+vendorman1direxp=''
+vendorman3dir=' '
+vendorman3direxp=''
 vendorprefix=''
 vendorprefixexp=''
+vendorscript=''
+vendorscriptexp=''
 version='5.8.1'
-version_patchlevel_string='version 8 subversion 1 patchlevl 19636'
+version_patchlevel_string='version 8 subversion 1'
 versiononly='undef'
 vi=''
 voidflags='15'
@@ -986,17 +1012,14 @@ yaccflags=''
 zcat=''
 zip='zip'
 # Configure command line arguments.
-config_arg0='./Configure'
-config_args='-Dprefix=/usr/local/perl5.8.1 -Uinstallusrbinperl -des'
-config_argc=3
-config_arg1='-Dprefix=/usr/local/perl5.8.1'
-config_arg2='-Uinstallusrbinperl'
-config_arg3='-des'
+config_arg0='Configure'
+config_args=''
+config_argc=0
 PERL_REVISION=5
 PERL_VERSION=8
 PERL_SUBVERSION=1
 PERL_API_REVISION=5
 PERL_API_VERSION=8
-PERL_API_SUBVERSION=1
-PERL_PATCHLEVEL=0
+PERL_API_SUBVERSION=0
+PERL_PATCHLEVEL=
 PERL_CONFIG_SH=true
index 408f5f4..e47042a 100755 (executable)
@@ -2,22 +2,12 @@
 
 ##############################################################################
 #
-#      Ok, so there is this buildsystem that has variables set in shell
-#      like this:
+#      generate_config_sh
+#              Process that takes an automatically generated config.sh
+#              file and allows the environment to overload the values
+#              automatically discovered by Configure on our target platform.
 #
-#      cc='gcc'
-#
-#      This means we can go
-#
-#      if test "${AR+set}" != set; then
-#              ar='arm-linux-ar'
-#      else 
-#              ar=${AR}
-#      fi
-#
-#      Right??? WRONG!
-#
-#      Damn perl installation *PARSES* and *PATTERN MATCHES* this file.
+#      Author  Redvers Davies <red@criticalintegration.com>
 #
 ##############################################################################
 
index 1a1c5a6..0101e66 100644 (file)
@@ -1,5 +1,5 @@
---- ../installperl     2003-03-26 21:07:13.000000000 +0000
-+++ installperl        2003-05-01 11:17:48.000000000 +0000
+--- ../installperl     2003-08-31 11:58:48.000000000 -0500
++++ installperl        2003-09-05 02:38:40.000000000 -0500
 @@ -3,8 +3,8 @@
  BEGIN {
      require 5.004;
@@ -11,7 +11,7 @@
  }
  
  use strict;
-@@ -878,7 +878,7 @@
+@@ -931,7 +931,7 @@
                print " " if (@opts);
                print "$file\n";
            }
index ec4f746..4e7c5d3 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -1464,6 +1464,8 @@ lib/open.t                        See if the open pragma works
 lib/overload.pm                        Module for overloading perl operators
 lib/overload.t                 See if operator overloading works
 lib/perl5db.pl                 Perl debugging routines
+lib/perl5db/de0.t              Testing debugger commands
+lib/perl5db/dumpvar.t          Testing the dumper used by the debugger
 lib/PerlIO.pm                  PerlIO support module
 lib/PerlIO/via/QuotedPrint.pm  PerlIO::via::QuotedPrint
 lib/PerlIO/via/t/QuotedPrint.t PerlIO::via::QuotedPrint
@@ -1726,6 +1728,7 @@ lib/Unicode/Collate/Changes       Unicode::Collate
 lib/Unicode/Collate/keys.txt   Unicode::Collate
 lib/Unicode/Collate.pm         Unicode::Collate
 lib/Unicode/Collate/README     Unicode::Collate
+lib/Unicode/Collate/t/contract.t       Unicode::Collate
 lib/Unicode/Collate/t/hangul.t Unicode::Collate
 lib/Unicode/Collate/t/index.t  Unicode::Collate
 lib/Unicode/Collate/t/test.t   Unicode::Collate
index 9d91f70..5c5ea4e 100755 (executable)
@@ -1,3 +1,8 @@
+2.006 - 8th September 2003
+
+    * call_(pv|sv|method|argv) added
+    * still compiler-warnings for grok_??? and 5.6.x, fixed
+
 2.005 - 2nd September 2003
 
     * Some tweaks to grok_(hex|oct|bin) to make compiler warnings
index 965e268..3fbd76c 100644 (file)
@@ -64,6 +64,10 @@ even if available, access to a fixed interface):
     aTHX_
     AvFILLp
     boolSV(b)
+    call_argv
+    call_method
+    call_pv
+    call_sv
     DEFSV
     dMY_CXT    
     dMY_CXT_SV
@@ -156,7 +160,7 @@ require DynaLoader;
 use strict;
 use vars qw( $VERSION @ISA @EXPORT @EXPORT_OK $data );
 
-$VERSION = "2.005";
+$VERSION = "2.006";
 
 @ISA = qw(Exporter DynaLoader);
 @EXPORT =  qw();
@@ -767,6 +771,22 @@ SV *sv;
 #   define get_hv(name,create) perl_get_hv(name,create)
 #endif
 
+#ifndef call_argv
+#   define call_argv perl_call_argv
+#endif
+
+#ifndef call_method
+#   define call_method perl_call_method
+#endif
+
+#ifndef call_pv
+#   define call_pv perl_call_pv
+#endif
+
+#ifndef call_sv
+#   define call_sv perl_call_sv
+#endif
+
 #ifndef PERL_SCAN_GREATER_THAN_UV_MAX
 #   define PERL_SCAN_GREATER_THAN_UV_MAX 0x02
 #endif
@@ -783,7 +803,7 @@ SV *sv;
 #   define PERL_SCAN_DISALLOW_PREFIX 0x02
 #endif
 
-#if (PERL_VERSION > 6)
+#if (PERL_VERSION >= 6)
 #define I32_CAST
 #else
 #define I32_CAST (I32*)
index 5c7ec05..de9cc88 100644 (file)
@@ -95,6 +95,11 @@ SAVE_DEFSV
 PERL_UNUSED_DECL
 dNOOP
 
+call_argv
+call_method
+call_pv
+call_sv
+
 get_cv
 get_av
 get_hv
index b090e40..5036943 100644 (file)
@@ -3,7 +3,27 @@ package Safe;
 use 5.003_11;
 use strict;
 
-$Safe::VERSION = "2.09";
+$Safe::VERSION = "2.10";
+
+# *** Don't declare any lexicals above this point ***
+#
+# This function should return a closure which contains an eval that can't
+# see any lexicals in scope (apart from __ExPr__ which is unavoidable)
+
+sub lexless_anon_sub {
+                # $_[0] is package;
+                # $_[1] is strict flag;
+    my $__ExPr__ = $_[2];   # must be a lexical to create the closure that
+                           # can be used to pass the value into the safe
+                           # world
+
+    # Create anon sub ref in root of compartment.
+    # Uses a closure (on $__ExPr__) to pass in the code to be executed.
+    # (eval on one line to keep line numbers as expected by caller)
+    eval sprintf
+    'package %s; %s strict; sub { @_=(); eval q[my $__ExPr__;] . $__ExPr__; }',
+               $_[0], $_[1] ? 'use' : 'no';
+}
 
 use Carp;
 
@@ -211,15 +231,7 @@ sub reval {
     my ($obj, $expr, $strict) = @_;
     my $root = $obj->{Root};
 
-    # Create anon sub ref in root of compartment.
-    # Uses a closure (on $expr) to pass in the code to be executed.
-    # (eval on one line to keep line numbers as expected by caller)
-    my $evalcode = sprintf('package %s; sub { @_ = (); eval $expr; }', $root);
-    my $evalsub;
-
-    if ($strict) { use strict; $evalsub = eval $evalcode; }
-    else         {  no strict; $evalsub = eval $evalcode; }
-
+    my $evalsub = lexless_anon_sub($root,$strict, $expr);
     return Opcode::_safe_call_sv($root, $obj->{Mask}, $evalsub);
 }
 
index b5ea957..1c4fa45 100644 (file)
@@ -7,26 +7,35 @@ __END__
 
 =head1 NAME
 
-PerlIO::scalar - support module for in-memory IO.
+PerlIO::scalar - in-memory IO, scalar IO
 
 =head1 SYNOPSIS
 
-   open($fh,"<",\$scalar);
-   open($fh,">",\$scalar);
+   my $scalar = '';
+   ...
+   open my $fh, "<",  \$scalar or die;
+   open my $fh, ">",  \$scalar or die;
+   open my $fh, ">>", \$scalar or die;
 
 or
 
-   open($fh,"<:scalar",\$scalar);
-   open($fh,">:scalar",\$scalar);
+   my $scalar = '';
+   ...
+   open my $fh, "<:scalar",  \$scalar or die;
+   open my $fh, ">:scalar",  \$scalar or die;
+   open my $fh, ">>:scalar", \$scalar or die;
 
 =head1 DESCRIPTION
 
-C<PerlIO::scalar> only exists to use XSLoader to load C code that provides
-support for treating a scalar as an "in memory" file.
+A filehandle is opened but the file operations are performed "in-memory"
+on a scalar variable.  All the normal file operations can be performed
+on the handle. The scalar is considered a stream of bytes.  Currently
+fileno($fh) returns C<undef>.
 
-All normal file operations can be performed on the handle. The scalar
-is considered a stream of bytes. Currently fileno($fh) returns C<undef>.
-
-=cut
+=head1 IMPLEMENTATION NOTE
 
+C<PerlIO::scalar> only exists to use XSLoader to load C code that
+provides support for treating a scalar as an "in memory" file.
+One does not need to explicitly C<use PerlIO::scalar>.
 
+=cut
index 0d56ecc..884cd58 100644 (file)
@@ -23,7 +23,7 @@ PerlIOScalar_pushed(pTHX_ PerlIO * f, const char *mode, SV * arg,
      * or the _name_ of the scalar
      */
     if (arg) {
-       if (SvROK(arg)) {
+       if (SvROK(arg) && SvTYPE(SvRV(arg)) > SVt_NULL) {
            s->var = SvREFCNT_inc(SvRV(arg));
            if (!SvPOK(s->var))
                (void)SvPV_nolen(s->var);
index 58ef97f..01e12b0 100644 (file)
@@ -10,7 +10,7 @@ BEGIN {
 }
 
 $| = 1;
-print "1..24\n";
+print "1..25\n";
 
 my $fh;
 my $var = "ok 2\n";
@@ -126,3 +126,15 @@ close $fh;
 { package P; sub TIESCALAR {bless{}} sub FETCH {"ok 24\n"} }
 tie $p, P; open $fh, '<', \$p;
 print <$fh>;
+
+# don't warn when writing to an undefined scalar
+
+{
+    use warnings;
+    my $ok = 1;
+    local $SIG{__WARN__} = sub { $ok = 0; };
+    open my $fh, '>', \my $scalar;
+    print $fh "foo";
+    close $fh;
+    print $ok ? "ok 25\n" : "not ok 25\n";
+}
index f4edf0c..b91e4f5 100644 (file)
@@ -1,3 +1,15 @@
+Sat Sep  6 01:08:20 IST 2003   Abhijit Menon-Sen <ams@wiw.org>
+
+    Version 2.08
+
+        This release works around a 5.8.0 bug which caused hashes to not
+        be marked as having key flags even though an HEK had HEK_WASUTF8
+        set. (Note that the only reasonable solution is to silently drop
+        the flag from the affected key.)
+
+        Users of RT 3 who were seeing assertion failures should upgrade.
+        (Perl 5.8.1 will have the bug fixed.)
+
 Mon May  5 10:24:16 IST 2003   Abhijit Menon-Sen <ams@wiw.org>
 
     Version 2.07
index b714b17..ce8185c 100644 (file)
@@ -783,6 +783,10 @@ static const char byteorderstr_56[] = {BYTEORDER_BYTES_56, 0};
 #define STORABLE_BIN_WRITE_MINOR       6
 #endif /* (PATCHLEVEL <= 6) */
 
+#if (PATCHLEVEL <= 8 || (PATCHLEVEL == 8 && SUBVERSION < 1))
+#define PL_sv_placeholder PL_sv_undef
+#endif
+
 /*
  * Useful store shortcuts...
  */
@@ -2249,7 +2253,13 @@ static int store_hash(stcxt_t *cxt, HV *hv)
                             PUTMARK(flags);
                             TRACEME(("(#%d) key '%s' flags %x %u", i, keyval, flags, *keyval));
                         } else {
-                            assert (flags == 0);
+                            /* This is a workaround for a bug in 5.8.0
+                               that causes the HEK_WASUTF8 flag to be
+                               set on an HEK without the hash being
+                               marked as having key flags. We just
+                               cross our fingers and drop the flag.
+                               AMS 20030901 */
+                            assert (flags == 0 || flags == SHV_K_WASUTF8);
                             TRACEME(("(#%d) key '%s'", i, keyval));
                         }
                        WLEN(keylen);
@@ -2340,7 +2350,13 @@ static int store_hash(stcxt_t *cxt, HV *hv)
                             PUTMARK(flags);
                             TRACEME(("(#%d) key '%s' flags %x", i, key, flags));
                         } else {
-                            assert (flags == 0);
+                            /* This is a workaround for a bug in 5.8.0
+                               that causes the HEK_WASUTF8 flag to be
+                               set on an HEK without the hash being
+                               marked as having key flags. We just
+                               cross our fingers and drop the flag.
+                               AMS 20030901 */
+                            assert (flags == 0 || flags == SHV_K_WASUTF8);
                             TRACEME(("(#%d) key '%s'", i, key));
                         }
                         if (flags & SHV_K_ISSV) {
index bf557df..d69e3b4 100644 (file)
@@ -137,8 +137,15 @@ ok 18, !$@;
 thaw $frozen;                  # used to segfault here
 ok 19, 1;
 
-$a = []; $#$a = 2; $a->[1] = undef;
-$b = thaw freeze $a;
-@a = map { ~~ exists $a->[$_] } 0 .. $#$a;
-@b = map { ~~ exists $b->[$_] } 0 .. $#$b;
-ok 20, "@a" eq "@b";
+if ($] >= 5.006) {
+    eval '
+        $a = []; $#$a = 2; $a->[1] = undef;
+        $b = thaw freeze $a;
+        @a = map { ~~ exists $a->[$_] } 0 .. $#$a;
+        @b = map { ~~ exists $b->[$_] } 0 .. $#$b;
+        ok 20, "@a" eq "@b";
+    ';
+}
+else {
+    print "ok 20 # skipped (no av_exists)\n";
+}
index 0b667d9..955dcf1 100644 (file)
@@ -51,7 +51,7 @@ use Test::More;
 # present in files, but not in things store()ed to memory
 $fancy = ($] > 5.007 ? 2 : 0);
 
-plan tests => 368 + length ($byteorder) * 4 + $fancy * 8;
+plan tests => 368 + length ($byteorder) * 4 + $fancy * 8 + 1;
 
 use Storable qw (store retrieve freeze thaw nstore nfreeze);
 
@@ -324,3 +324,15 @@ test_things($contents, \&store_and_retrieve, 'file', 1);
 # And now try almost everything again with a Storable string
 $stored = nfreeze \%hash;
 test_things($stored, \&freeze_and_thaw, 'string', 1);
+
+# Test that the bug fixed by #20587 doesn't affect us under some older
+# Perl. AMS 20030901
+{
+    chop(my $a = chr(0xDF).chr(256));
+    my %a = (chr(0xDF) => 1);
+    $a{$a}++;
+    freeze \%a;
+    # If we were built with -DDEBUGGING, the assert() should have killed
+    # us, which will probably alert the user that something went wrong.
+    ok(1);
+}
index 05d9272..eeb80eb 100644 (file)
@@ -8,8 +8,11 @@ sub BEGIN {
     if ($ENV{PERL_CORE}){
        chdir('t') if -d 't';
        @INC = ('.', '../lib');
-       use vars qw($MacPerl::Architecture);
-       push @INC, "::lib:$MacPerl::Architecture:" if $^O eq 'MacOS';
+        if ($^O eq 'MacOS') {
+            # Look, I'm using this fully-qualified variable more than once!
+            my $arch = $MacPerl::Architecture;
+            push @INC, "::lib:${MacPerl::Architecture}:";
+        }
     } else {
        unshift @INC, 't';
     }
index 03adde6..a63c8bc 100644 (file)
@@ -36,7 +36,7 @@ Sys::Syslog, openlog, closelog, setlogmask, syslog - Perl interface to the UNIX
     use Sys::Syslog qw(:DEFAULT setlogsock);  # default set, plus setlogsock
 
     setlogsock $sock_type;
-    openlog $ident, $logopt, $facility;
+    openlog $ident, $logopt, $facility;       # don't forget this
     syslog $priority, $format, @args;
     $oldmask = setlogmask $mask_priority;
     closelog;
@@ -57,7 +57,11 @@ I<$ident> is prepended to every message.  I<$logopt> contains zero or
 more of the words I<pid>, I<ndelay>, I<nowait>.  The cons option is
 ignored, since the failover mechanism will drop down to the console
 automatically if all other media fail.  I<$facility> specifies the
-part of the system
+part of the system to report about, for example LOG_USER or LOG_LOCAL0:
+see your C<syslog(3)> documentation for the facilities available in
+your system.
+
+B<You should use openlog() before calling syslog().>
 
 =item syslog $priority, $format, @args
 
@@ -65,6 +69,10 @@ If I<$priority> permits, logs I<($format, @args)>
 printed as by C<printf(3V)>, with the addition that I<%m>
 is replaced with C<"$!"> (the latest error message).
 
+If you didn't use openlog() before using syslog(), syslog will try to
+guess the I<$ident> by extracting the shortest prefix of I<$format>
+that ends in a ":".
+
 =item setlogmask $mask_priority
 
 Sets log mask I<$mask_priority> and returns the old mask.
index 2bcc315..18ed446 100644 (file)
@@ -14,7 +14,7 @@ use File::Spec;
 
 require Exporter;
 
-our $VERSION = '0.27';
+our $VERSION = '0.28';
 our $PACKAGE = __PACKAGE__;
 
 our @ISA = qw(Exporter);
@@ -53,7 +53,7 @@ use constant NOMATCHPOS => -1;
 # A coderef to get combining class imported from Unicode::Normalize
 # (i.e. \&Unicode::Normalize::getCombinClass).
 # This is also used as a HAS_UNICODE_NORMALIZE flag.
-our $getCombinClass;
+our $CVgetCombinClass;
 
 # Supported Levels
 use constant MinLevel => 1;
@@ -225,17 +225,16 @@ sub checkCollator {
        croak "Unicode/Normalize.pm is required to normalize strings: $@"
            if $@;
 
-       $getCombinClass = \&Unicode::Normalize::getCombinClass
-           if ! $getCombinClass;
+       $CVgetCombinClass = \&Unicode::Normalize::getCombinClass
+           if ! $CVgetCombinClass;
 
-       my $norm = $self->{normalization};
-       $self->{normCode} = sub {
+       if ($self->{normalization} ne 'prenormalized') {
+           my $norm = $self->{normalization};
+           $self->{normCode} = sub {
                Unicode::Normalize::normalize($norm, shift);
            };
-
-       eval { $self->{normCode}->("") }; # try
-       if ($@) {
-           croak "$PACKAGE unknown normalization form name: $norm";
+           eval { $self->{normCode}->("") }; # try
+           $@ and croak "$PACKAGE unknown normalization form name: $norm";
        }
     }
     return;
@@ -261,7 +260,7 @@ sub new
        if ! exists $self->{overrideHangul};
     $self->{overrideCJK} = ''
        if ! exists $self->{overrideCJK};
-    $self->{normalization} = 'D'
+    $self->{normalization} = 'NFD'
        if ! exists $self->{normalization};
     $self->{alternate} = $self->{alternateTable} || 'shifted'
        if ! exists $self->{alternate};
@@ -490,19 +489,31 @@ sub splitCE
                    $i = $p;
                }
            }
-       }
 
-       # with Combining Char (UTS#10, 4.2.1).
-       # requires Unicode::Normalize.
-       # Not be $wLen, as not croaked due to $norm.
-       if ($getCombinClass) {
-           for (my $p = $i + 1; $p < @src; $p++) {
-               next if ! defined $src[$p];
-               last unless $getCombinClass->($src[$p]);
-               my $tail = CODE_SEP . $src[$p];
-               if ($ent->{$ce.$tail}) {
-                   $ce .= $tail;
-                   $src[$p] = undef;
+       # not-contiguous contraction with Combining Char (cf. UTS#10, S2.1).
+       # This process requires Unicode::Normalize.
+       # If "normalize" is undef, here should be skipped *always*
+       # (in spite of bool value of $CVgetCombinClass),
+       # since canonical ordering cannot be expected.
+       # Blocked combining character should not be contracted.
+
+           if ($self->{normalization})
+           # $self->{normCode} is false in the case of "prenormalized".
+           {
+               my $preCC = 0;
+               my $curCC = 0;
+
+               for (my $p = $i + 1; $p < @src; $p++) {
+                   next if ! defined $src[$p];
+                   $curCC = $CVgetCombinClass->($src[$p]);
+                   last unless $curCC;
+                   my $tail = CODE_SEP . $src[$p];
+                   if ($preCC != $curCC && $ent->{$ce.$tail}) {
+                       $ce .= $tail;
+                       $src[$p] = undef;
+                   } else {
+                       $preCC = $curCC;
+                   }
                }
            }
        }
@@ -1128,16 +1139,37 @@ If specified, strings are normalized before preparation of sort keys
 
 A form name C<Unicode::Normalize::normalize()> accepts will be applied
 as C<$normalization_form>.
+Acceptable names include C<'NFD'>, C<'NFC'>, C<'NFKD'>, and C<'NFKC'>.
 See C<Unicode::Normalize::normalize()> for detail.
 If omitted, C<'NFD'> is used.
 
 L<normalization> is performed after L<preprocess> (if defined).
 
-If C<undef> is passed explicitly as the value for this key,
+Furthermore, special values, C<undef> and C<"prenormalized">, can be used,
+though they are not concerned with C<Unicode::Normalize::normalize()>.
+
+If C<undef> (not a string C<"undef">) is passed explicitly
+as the value for this key,
 any normalization is not carried out (this may make tailoring easier
 if any normalization is not desired).
-
-see B<CAVEAT>.
+Under C<(normalization =E<gt> undef)>, only contiguous contractions
+are resolved; e.g. C<A-cedilla-ring> would be primary equal to C<A>,
+even if C<A-ring> (and C<A-ring-cedilla>) is ordered after C<Z>.
+In this point,
+C<(normalization =E<gt> undef, preprocess =E<gt> sub { NFD(shift) })>
+B<is not> equivalent to C<(normalization =E<gt> 'NFD')>.
+
+In the case of C<(normalization =E<gt> "prenormalized")>,
+any normalization is not performed, but
+non-contiguous contractions with combining characters are performed.
+Therefore
+C<(normalization =E<gt> 'prenormalized', preprocess =E<gt> sub { NFD(shift) })>
+B<is> equivalent to C<(normalization =E<gt> 'NFD')>.
+If source strings are finely prenormalized,
+C<(normalization =E<gt> 'prenormalized')> may save time for normalization.
+
+Except C<(normalization =E<gt> undef)>,
+B<Unicode::Normalize> is required (see also B<CAVEAT>).
 
 =item overrideCJK
 
index 4f61b83..3d39bbe 100644 (file)
@@ -1,8 +1,16 @@
 Revision history for Perl module Unicode::Collate.
 
+0.28  Sat Sep 06 20:16:01 2003
+    - Fixed another inconsistency under (normalization => undef):
+      Non-contiguous contraction is always neglected.
+    - Fixed: according to S2.1 in UTS #10, a blocked combining character
+      should not be contracted. One test in test.t was wrong, then removed.
+    - Added contract.t.
+    - (normalization => "prenormalized") is able to be used.
+
 0.27  Sun Aug 31 22:23:17 2003
       some improvements:
-    - The maximum length of contracted CE was not checked.
+    - The maximum length of contracted CE was not checked (v0.22 to v0.26).
       Collation of a large string including a first letter of a contraction
       that is not a part of that contraction (say, 'c' of 'ca'
       where 'ch' is defined) was too slow, inefficient.
index 21e1ff8..3c86573 100644 (file)
@@ -1,4 +1,4 @@
-Unicode/Collate version 0.27
+Unicode/Collate version 0.28
 ===============================
 
 NAME
diff --git a/lib/Unicode/Collate/t/contract.t b/lib/Unicode/Collate/t/contract.t
new file mode 100644 (file)
index 0000000..c2aaecf
--- /dev/null
@@ -0,0 +1,146 @@
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+       print "1..0 # Unicode::Collate " .
+           "cannot stringify a Unicode code point\n";
+       exit 0;
+    }
+}
+
+BEGIN {
+    if ($ENV{PERL_CORE}) {
+        chdir('t') if -d 't';
+        @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
+    }
+}
+
+use Test;
+BEGIN { plan tests => 40 };
+
+use strict;
+use warnings;
+use Unicode::Collate;
+
+use vars qw($IsEBCDIC);
+$IsEBCDIC = ord("A") != 0x41;
+
+our $kjeEntry = <<'ENTRIES';
+0301  ; [.0000.0032.0002.0301] # COMBINING ACUTE ACCENT
+0334  ; [.0000.008B.0002.0334] # COMBINING TILDE OVERLAY
+043A  ; [.0D31.0020.0002.043A] # CYRILLIC SMALL LETTER KA
+041A  ; [.0D31.0020.0008.041A] # CYRILLIC CAPITAL LETTER KA
+045C  ; [.0DA1.0020.0002.045C] # CYRILLIC SMALL LETTER KJE
+043A 0301 ; [.0DA1.0020.0002.045C] # CYRILLIC SMALL LETTER KJE
+040C  ; [.0DA1.0020.0008.040C] # CYRILLIC CAPITAL LETTER KJE
+041A 0301 ; [.0DA1.0020.0008.040C] # CYRILLIC CAPITAL LETTER KJE
+ENTRIES
+
+our $aaEntry = <<'ENTRIES';
+0304  ; [.0000.005A.0002.0304] # COMBINING MACRON (cc = 230)
+030A  ; [.0000.0043.0002.030A] # COMBINING RING ABOVE (cc = 230)
+0327  ; [.0000.0055.0002.0327] # COMBINING CEDILLA (cc = 202)
+031A  ; [.0000.006B.0002.031A] # COMBINING LEFT ANGLE ABOVE (cc = 232)
+0061  ; [.0A15.0020.0002.0061] # LATIN SMALL LETTER A
+0041  ; [.0A15.0020.0008.0041] # LATIN CAPITAL LETTER A
+007A  ; [.0C13.0020.0002.007A] # LATIN SMALL LETTER Z
+005A  ; [.0C13.0020.0008.005A] # LATIN CAPITAL LETTER Z
+00E5  ; [.0C25.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE; QQCM
+00C5  ; [.0C25.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE; QQCM
+0061 030A ; [.0C25.0020.0002.0061] # LATIN SMALL LETTER A WITH RING ABOVE
+0041 030A ; [.0C25.0020.0008.0041] # LATIN CAPITAL LETTER A WITH RING ABOVE
+ENTRIES
+
+#########################
+
+ok(1); # If we made it this far, we're ok.
+
+my $kjeNoN = Unicode::Collate->new(
+    level => 1,
+    table => undef,
+    normalization => undef,
+    entry => $kjeEntry,
+);
+
+ok($kjeNoN->lt("\x{043A}", "\x{043A}\x{0301}"));
+ok($kjeNoN->gt("\x{045C}", "\x{043A}\x{0334}\x{0301}"));
+ok($kjeNoN->eq("\x{043A}", "\x{043A}\x{0334}\x{0301}"));
+ok($kjeNoN->eq("\x{045C}", "\x{043A}\x{0301}\x{0334}"));
+
+our %sortkeys;
+
+$sortkeys{'KAac'} = $kjeNoN->viewSortKey("\x{043A}\x{0301}");
+$sortkeys{'KAta'} = $kjeNoN->viewSortKey("\x{043A}\x{0334}\x{0301}");
+$sortkeys{'KAat'} = $kjeNoN->viewSortKey("\x{043A}\x{0301}\x{0334}");
+
+eval { require Unicode::Normalize };
+if (!$@ && !$IsEBCDIC) {
+    my $kjeNFD = Unicode::Collate->new(
+       level => 1,
+       table => undef,
+       entry => $kjeEntry,
+    );
+ok($kjeNFD->lt("\x{043A}", "\x{043A}\x{0301}"));
+ok($kjeNFD->eq("\x{045C}", "\x{043A}\x{0334}\x{0301}"));
+ok($kjeNFD->lt("\x{043A}", "\x{043A}\x{0334}\x{0301}"));
+ok($kjeNFD->eq("\x{045C}", "\x{043A}\x{0301}\x{0334}"));
+
+    my $aaNFD = Unicode::Collate->new(
+       level => 1,
+       table => undef,
+       entry => $aaEntry,
+    );
+
+ok($aaNFD->lt("Z", "A\x{30A}\x{304}"));
+ok($aaNFD->eq("A", "A\x{304}\x{30A}"));
+ok($aaNFD->eq(pack('U', 0xE5), "A\x{30A}\x{304}"));
+ok($aaNFD->eq("A\x{304}", "A\x{304}\x{30A}"));
+ok($aaNFD->lt("Z", "A\x{327}\x{30A}"));
+ok($aaNFD->lt("Z", "A\x{30A}\x{327}"));
+ok($aaNFD->lt("Z", "A\x{31A}\x{30A}"));
+ok($aaNFD->lt("Z", "A\x{30A}\x{31A}"));
+
+    my $aaPre = Unicode::Collate->new(
+       level => 1,
+       normalization => "prenormalized",
+       table => undef,
+       entry => $aaEntry,
+    );
+
+ok($aaPre->lt("Z", "A\x{30A}\x{304}"));
+ok($aaPre->eq("A", "A\x{304}\x{30A}"));
+ok($aaPre->eq(pack('U', 0xE5), "A\x{30A}\x{304}"));
+ok($aaPre->eq("A\x{304}", "A\x{304}\x{30A}"));
+ok($aaPre->lt("Z", "A\x{327}\x{30A}"));
+ok($aaPre->lt("Z", "A\x{30A}\x{327}"));
+ok($aaPre->lt("Z", "A\x{31A}\x{30A}"));
+ok($aaPre->lt("Z", "A\x{30A}\x{31A}"));
+}
+else {
+  ok(1) for 1..20;
+}
+
+# again: loading Unicode::Normalize should not affect $kjeNoN.
+ok($kjeNoN->lt("\x{043A}", "\x{043A}\x{0301}"));
+ok($kjeNoN->gt("\x{045C}", "\x{043A}\x{0334}\x{0301}"));
+ok($kjeNoN->eq("\x{043A}", "\x{043A}\x{0334}\x{0301}"));
+ok($kjeNoN->eq("\x{045C}", "\x{043A}\x{0301}\x{0334}"));
+
+ok($sortkeys{'KAac'}, $kjeNoN->viewSortKey("\x{043A}\x{0301}"));
+ok($sortkeys{'KAta'}, $kjeNoN->viewSortKey("\x{043A}\x{0334}\x{0301}"));
+ok($sortkeys{'KAat'}, $kjeNoN->viewSortKey("\x{043A}\x{0301}\x{0334}"));
+
+my $aaNoN = Unicode::Collate->new(
+    level => 1,
+    table => undef,
+    entry => $aaEntry,
+    normalization => undef,
+);
+
+ok($aaNoN->lt("Z", "A\x{30A}\x{304}"));
+ok($aaNoN->eq("A", "A\x{304}\x{30A}"));
+ok($aaNoN->eq(pack('U', 0xE5), "A\x{30A}\x{304}"));
+ok($aaNoN->eq("A\x{304}", "A\x{304}\x{30A}"));
+ok($aaNoN->eq("A", "A\x{327}\x{30A}"));
+ok($aaNoN->lt("Z", "A\x{30A}\x{327}"));
+ok($aaNoN->eq("A", "A\x{31A}\x{30A}"));
+ok($aaNoN->lt("Z", "A\x{30A}\x{31A}"));
+
index de4ca59..0c170e4 100644 (file)
@@ -15,7 +15,7 @@ BEGIN {
 }
 
 use Test;
-BEGIN { plan tests => 199 };
+BEGIN { plan tests => 200 };
 
 use strict;
 use warnings;
@@ -86,7 +86,8 @@ eval { require Unicode::Normalize };
 
 if (!$@ && !$IsEBCDIC) {
   my $NFD = Unicode::Collate->new(
-    table => undef,
+    table => 'keys.txt',
+    level => 1,
     entry => <<'ENTRIES',
 0430  ; [.0CB5.0020.0002.0430] # CYRILLIC SMALL LETTER A
 0410  ; [.0CB5.0020.0008.0410] # CYRILLIC CAPITAL LETTER A
@@ -101,14 +102,11 @@ ENTRIES
   ok($NFD->eq("\x{4D3}\x{325}", "\x{430}\x{308}\x{325}"));
   ok($NFD->lt("\x{430}\x{308}A", "\x{430}\x{308}B"));
   ok($NFD->lt("\x{430}\x{3099}B", "\x{430}\x{308}\x{3099}A"));
-  ok($NFD->eq("\x{0430}\x{3099}\x{309A}\x{0308}",
-              "\x{0430}\x{309A}\x{3099}\x{0308}") );
 }
 else {
   ok(1);
   ok(1);
   ok(1);
-  ok(1);
 }
 
 ##############
@@ -117,7 +115,7 @@ my $trad = Unicode::Collate->new(
   table => 'keys.txt',
   normalization => undef,
   ignoreName => qr/HANGUL|HIRAGANA|KATAKANA|BOPOMOFO/,
-  level => 4,
+  level => 3,
   entry => << 'ENTRIES',
  0063 0068 ; [.0A3F.0020.0002.0063] % "ch" in traditional Spanish
  0043 0068 ; [.0A3F.0020.0008.0043] # "Ch" in traditional Spanish
@@ -138,6 +136,8 @@ ok(
 );
 ok($trad->eq("ocho", "oc\cAho")); # UCA v9
 ok($trad->eq("ocho", "oc\0\cA\0\cBho")); # UCA v9
+ok($trad->eq("-", "")); # also UCA v8
+ok($trad->lt("oc-ho", "ocho")); # also UCA v8
 
 my $hiragana = "\x{3042}\x{3044}";
 my $katakana = "\x{30A2}\x{30A4}";
diff --git a/lib/perl5db/de0.t b/lib/perl5db/de0.t
new file mode 100644 (file)
index 0000000..d626dd4
--- /dev/null
@@ -0,0 +1,90 @@
+#!./perl -- -*- mode: cperl; cperl-indent-level: 4 -*-
+
+BEGIN {
+    require Config; import Config;
+    if (!$Config{'d_fork'}
+       # open2/3 supported on win32 (but not Borland due to CRT bugs)
+       && (($^O ne 'MSWin32' && $^O ne 'NetWare') || $Config{'cc'} =~ /^bcc/i))
+    {
+       print "1..0\n";
+       exit 0;
+    }
+    chdir 't' if -d 't';
+    @INC = '../lib';
+    $ENV{PERL5LIB} = '../lib';    # so children will see it too
+}
+
+use strict;
+use IPC::Open3 qw(open3);
+use IO::Select;
+
+$|=1;
+
+my @prgs;
+
+{
+    local $/;
+    @prgs = split "########\n", <DATA>;
+    close DATA;
+}
+
+use Test::More;
+
+plan tests => scalar @prgs;
+
+require "dumpvar.pl";
+
+$ENV{PERLDB_OPTS} = "TTY=0";
+my($ornament1,$ornament2,$wtrfh,$rdrfh);
+open3 $wtrfh, $rdrfh, 0, $^X, "-de0";
+my $ios = IO::Select->new();
+$ios->add($rdrfh);
+for (@prgs){
+    my($prog,$expected) = split(/\nEXPECT\n?/, $_);
+    print $wtrfh $prog, "\n";
+    my $got;
+    while (not defined $got) {
+       while ($ios->can_read(0.25)) {
+           sysread $rdrfh, $got, 1024, length($got);
+       }
+    }
+    $got =~ s/^\s*Loading.*\nEditor.*\n\nEnter.*\n\nmain::\(-e:1\):\s0\n//;
+    unless (defined $ornament1) {
+         $got =~ s/^\s*Loading.*\nEditor.*\n\nEnter.*\n\nmain::\(-e:1\):\s0\n//;
+         ($ornament1,$ornament2) = $got =~
+             /(.*?)0\s+'reserved example for calibrating the ornaments'\n(.*)/
+    }
+    $got =~ s/^\Q$ornament1\E//;
+    $got =~ s/\Q$ornament2\E\z//;
+    like($got, qr:$expected:i, $prog);
+}
+
+__END__
+x "reserved example for calibrating the ornaments"
+EXPECT
+0  'reserved example for calibrating the ornaments'
+########
+x "foo"
+EXPECT
+0  'foo'
+########
+x "\x{100}"
+EXPECT
+0  '\\x\{0100\}'
+########
+x *a
+EXPECT
+0  \*main::a
+########
+x 1..3
+EXPECT
+0  1
+1  2
+2  3
+########
+x +{1..4}
+EXPECT
+0\s+HASH\(0x[0-9a-f]+\)
+\s+1 => 2
+\s+3 => 4
+########
diff --git a/lib/perl5db/dumpvar.t b/lib/perl5db/dumpvar.t
new file mode 100644 (file)
index 0000000..b60afa6
--- /dev/null
@@ -0,0 +1,179 @@
+#!./perl -- -*- mode: cperl; cperl-indent-level: 4 -*-
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = '../lib';
+    unless (find PerlIO::Layer 'perlio') { # PerlIO::scalar
+       print "1..0 # Skip: not perlio\n";
+       exit 0;
+    }
+}
+
+use strict;
+
+$|=1;
+
+my @prgs;
+{
+    local $/;
+    @prgs = split "########\n", <DATA>;
+    close DATA;
+}
+
+use Test::More;
+
+plan tests => scalar @prgs;
+
+require "dumpvar.pl";
+
+sub unctrl    { print dumpvar::unctrl($_[0]), "\n" }
+sub uniescape { print dumpvar::uniescape($_[0]), "\n" }
+sub stringify { print dumpvar::stringify($_[0]), "\n" }
+
+package Foo;
+
+sub new { my $class = shift; bless [ @_ ], $class }
+
+package Bar;
+
+sub new { my $class = shift; bless [ @_ ], $class }
+
+use overload '""' => sub { "Bar<@{$_[0]}>" };
+
+package main;
+
+my $foo = Foo->new(1..5);
+my $bar = Bar->new(1..5);
+
+for (@prgs) {
+    my($prog, $expected) = split(/\nEXPECT\n?/, $_);
+    # TODO: dumpvar::stringify() is controlled by a pile of package
+    # dumpvar variables: $printUndef, $unctrl, $quoteHighBit, $bareStringify,
+    # and so forth.  We need to test with various settings of those.
+    open my $select, ">", \my $got or die;
+    select $select;
+    eval $prog;
+    my $ERR = $@;
+    close $select;
+    select STDOUT;
+    if ($ERR) {
+        ok(0, "$prog - $ERR");
+    } else {
+       if ($expected =~ m:^/:) {
+           like($got, $expected, $prog);
+       } else {
+           is($got, $expected, $prog);
+       }
+    }
+}
+
+__END__
+unctrl("A");
+EXPECT
+A
+########
+unctrl("\cA");
+EXPECT
+^A
+########
+uniescape("A");
+EXPECT
+A
+########
+uniescape("\x{100}");
+EXPECT
+\x{0100}
+########
+stringify(undef);
+EXPECT
+undef
+########
+stringify("foo");
+EXPECT
+'foo'
+########
+stringify("\cA");
+EXPECT
+"\cA"
+########
+stringify(*a);
+EXPECT
+*main::a
+########
+stringify(\undef);
+EXPECT
+/^'SCALAR\(0x[0-9a-f]+\)'$/i
+########
+stringify([]);
+EXPECT
+/^'ARRAY\(0x[0-9a-f]+\)'$/i
+########
+stringify({});
+EXPECT
+/^'HASH\(0x[0-9a-f]+\)'$/i
+########
+stringify(sub{});
+EXPECT
+/^'CODE\(0x[0-9a-f]+\)'$/i
+########
+stringify(\*a);
+EXPECT
+/^'GLOB\(0x[0-9a-f]+\)'$/i
+########
+stringify($foo);
+EXPECT
+/^'Foo=ARRAY\(0x[0-9a-f]+\)'$/i
+########
+stringify($bar);
+EXPECT
+/^'Bar=ARRAY\(0x[0-9a-f]+\)'$/i
+########
+dumpValue(undef);
+EXPECT
+undef
+########
+dumpValue(1);
+EXPECT
+1
+########
+dumpValue("\cA");
+EXPECT
+"\cA"
+########
+dumpValue("\x{100}");
+EXPECT
+'\x{0100}'
+########
+dumpValue("1\n2\n3");
+EXPECT
+'1
+2
+3'
+########
+dumpValue([1..3],1);
+EXPECT
+0  1
+1  2
+2  3
+########
+dumpValue({1..4},1);
+EXPECT
+1 => 2
+3 => 4
+########
+dumpValue($foo,1);
+EXPECT
+0  1
+1  2
+2  3
+3  4
+4  5
+########
+dumpValue($bar,1);
+EXPECT
+0  1
+1  2
+2  3
+3  4
+4  5
+########