summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changes398
-rw-r--r--INSTALL19
-rw-r--r--MANIFEST18
-rw-r--r--Porting/makerel1
-rwxr-xr-xPorting/p4d2p84
-rwxr-xr-xPorting/p4desc147
-rw-r--r--Porting/p4genpatch149
-rw-r--r--Porting/repository.pod6
-rw-r--r--README.ko92
-rw-r--r--README.vos53
-rwxr-xr-xconfigpm72
-rw-r--r--ext/Data/Dumper/Dumper.xs77
-rwxr-xr-xext/Data/Dumper/t/dumper.t47
-rw-r--r--ext/Digest/MD5/Changes13
-rw-r--r--ext/Digest/MD5/MD5.pm2
-rw-r--r--ext/Digest/MD5/t/files.t18
-rw-r--r--ext/Digest/MD5/t/md5-aaa.t2
-rw-r--r--ext/Encode/AUTHORS1
-rw-r--r--ext/Encode/Changes41
-rw-r--r--ext/Encode/Encode.pm4
-rw-r--r--ext/Encode/Encode/Makefile_PL.e2x4
-rw-r--r--ext/Encode/Unicode/Unicode.pm10
-rw-r--r--ext/Encode/bin/enc2xs18
-rw-r--r--ext/Encode/encoding.pm21
-rw-r--r--ext/Encode/lib/Encode/Alias.pm12
-rw-r--r--ext/Encode/lib/Encode/Encoding.pm4
-rw-r--r--ext/Encode/lib/Encode/Guess.pm4
-rw-r--r--ext/Encode/lib/Encode/MIME/Header.pm6
-rw-r--r--ext/Encode/t/Unicode.t5
-rw-r--r--ext/Encode/t/mime-header.t2
-rw-r--r--ext/Storable/Storable.pm20
-rw-r--r--ext/Storable/Storable.xs53
-rw-r--r--ext/Storable/t/downgrade.t134
-rw-r--r--ext/Storable/t/malice.t39
-rw-r--r--ext/Storable/t/utf8hash.t6
-rw-r--r--hints/dec_osf.sh54
-rw-r--r--hints/solaris_2.sh7
-rw-r--r--lib/ExtUtils/MM_NW5.pm44
-rw-r--r--lib/Getopt/Long.pm14
-rw-r--r--lib/Net/Ping.pm17
-rw-r--r--lib/Net/Ping/CHANGES6
-rw-r--r--lib/Net/Ping/README2
-rw-r--r--lib/Term/Complete.pm4
-rw-r--r--lib/Unicode/Collate.pm44
-rw-r--r--lib/Unicode/Collate/Changes7
-rw-r--r--lib/Unicode/Collate/README2
-rw-r--r--lib/Unicode/Collate/t/test.t15
-rw-r--r--lib/charnames.pm4
-rw-r--r--lib/overload.pm16
-rw-r--r--makedef.pl92
-rw-r--r--patchlevel.h2
-rw-r--r--perl.h5
-rw-r--r--pod/perldelta.pod65
-rw-r--r--pod/perliol.pod10
-rw-r--r--pod/perlunicode.pod5
-rw-r--r--pp_hot.c29
-rw-r--r--pp_sys.c3
-rw-r--r--scope.c6
-rw-r--r--sv.c3
-rwxr-xr-xt/io/fs.t4
-rwxr-xr-xt/op/arith.t12
-rwxr-xr-xt/op/exec.t8
-rwxr-xr-xt/op/local.t16
-rwxr-xr-xt/op/pwent.t12
-rwxr-xr-xt/op/tie.t9
-rw-r--r--uconfig.h2
-rw-r--r--vos/Changes3
-rw-r--r--vos/build.cm12
-rw-r--r--vos/compile_full_perl.cm38
-rw-r--r--vos/compile_perl.cm15
-rw-r--r--vos/configure_full_perl.sh21
-rw-r--r--vos/make_full_perl.sh3
-rw-r--r--vos/perl.bind2
-rw-r--r--wince/Makefile.ce160
-rw-r--r--wince/README.compile32
-rw-r--r--wince/cecopy-lib.pl6
-rw-r--r--wince/comp.pl41
-rw-r--r--wince/compile.bat25
-rw-r--r--wince/config.ce19
-rw-r--r--wince/config.h3430
-rw-r--r--wince/config_h.PL16
-rw-r--r--wince/perldll.def1040
-rw-r--r--wince/win32io.c370
-rw-r--r--wince/wince.c110
84 files changed, 2287 insertions, 5157 deletions
diff --git a/Changes b/Changes
index b8ff4eb84e..3764b809cb 100644
--- a/Changes
+++ b/Changes
@@ -28,6 +28,404 @@ example from http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/
Version v5.7.X Development release working toward v5.8
--------------
____________________________________________________________________________
+[ 16432] By: jhi on 2002/05/06 13:29:22
+ Log: Add a test for #16431, and document Dave's campaign
+ against localised hash element bugs.
+ Branch: perl
+ ! pod/perldelta.pod t/op/tie.t
+____________________________________________________________________________
+[ 16431] By: jhi on 2002/05/06 13:13:00
+ Log: Subject: [proposed PATCH] correctly unlocalise exists on tied/%ENV
+ From: Dave Mitchell <davem@fdgroup.com>
+ Date: Sat, 4 May 2002 00:34:18 +0100
+ Message-ID: <20020504003418.F22026@fdgroup.com>
+ Branch: perl
+ ! pp_hot.c t/op/local.t
+____________________________________________________________________________
+[ 16430] By: jhi on 2002/05/06 12:39:31
+ Log: Regen uconfig.h.
+ Branch: perl
+ ! uconfig.h
+____________________________________________________________________________
+[ 16429] By: jhi on 2002/05/06 12:18:23
+ Log: Unfortunately AmigaOS has been broken since 11423
+ and is unlikely to get fixed in time for 5.8.0.
+ Branch: perl
+ ! pod/perldelta.pod
+____________________________________________________________________________
+[ 16428] By: jhi on 2002/05/06 12:12:59
+ Log: Ultimate discouragement for the old tools, from Andreas.
+ Branch: perl
+ - Porting/p4d2p Porting/p4desc
+ ! MANIFEST Porting/repository.pod
+____________________________________________________________________________
+[ 16427] By: jhi on 2002/05/06 12:01:36
+ Log: Upgrade to Digest::MD5 2.20.
+ Branch: perl
+ ! ext/Digest/MD5/Changes ext/Digest/MD5/MD5.pm
+ ! ext/Digest/MD5/t/files.t ext/Digest/MD5/t/md5-aaa.t
+____________________________________________________________________________
+[ 16426] By: ams on 2002/05/06 09:48:42
+ Log: Subject: [Encode] 1.70 released
+ From: Dan Kogai <dankogai@dan.co.jp>
+ Date: Mon, 6 May 2002 19:36:15 +0900
+ Message-Id: <17AB2CE6-60DD-11D6-9982-00039301D480@dan.co.jp>
+ Branch: perl
+ ! ext/Encode/Changes ext/Encode/Encode.pm ext/Encode/bin/enc2xs
+ ! ext/Encode/encoding.pm ext/Encode/lib/Encode/Encoding.pm
+ ! ext/Encode/t/Unicode.t ext/Encode/t/mime-header.t
+____________________________________________________________________________
+[ 16425] By: ams on 2002/05/06 09:40:42
+ Log: Subject: [PATCH] PerlIO::Via reference
+ From: Gisle Aas <gisle@ActiveState.com>
+ Date: 05 May 2002 22:50:23 -0700
+ Message-Id: <lrd6w925b4.fsf_-_@caliper.activestate.com>
+ Branch: perl
+ ! pod/perliol.pod
+____________________________________________________________________________
+[ 16424] By: ams on 2002/05/06 09:37:58
+ Log: Subject: [PATCH] Term/Complete.pm: quote metachars
+ From: Brendan O'Dea <bod@debian.org>
+ Date: Mon, 6 May 2002 14:04:48 +1000
+ Message-Id: <20020506040448.GA8241@londo.odea.dropbear.id.au>
+ Branch: perl
+ ! lib/Term/Complete.pm
+____________________________________________________________________________
+[ 16423] By: gsar on 2002/05/06 05:25:59
+ Log: p4genpatch: avoid stderr noise during adds
+ Branch: perl
+ ! Porting/p4genpatch
+____________________________________________________________________________
+[ 16422] By: jhi on 2002/05/06 02:16:31
+ Log: Subject: [PATCH] Fixup VOS builds of miniperl
+ From: Paul_GreenVOS@vos.stratus.com
+ Date: Sun, 5 May 02 23:11 edt
+ Message-Id: <200205060311.XAA12996@mailhub1.stratus.com>
+ Branch: perl
+ ! vos/build.cm vos/compile_perl.cm vos/perl.bind
+____________________________________________________________________________
+[ 16421] By: jhi on 2002/05/06 01:09:24
+ Log: Subject: Re: [ID 20020504.006] $s=`command` fails if $/=\integer
+ From: Radu Greab <radu@netsoft.ro>
+ Date: Mon, 6 May 2002 04:23:10 +0300
+ Message-ID: <15573.56062.264379.981864@ix.netsoft.ro>
+ Branch: perl
+ ! pp_sys.c t/op/exec.t
+____________________________________________________________________________
+[ 16420] By: jhi on 2002/05/05 22:35:58
+ Log: Further comment tweak, to agree with perlxs.pod.
+ Branch: perl
+ ! perl.h
+____________________________________________________________________________
+[ 16419] By: jhi on 2002/05/05 22:15:48
+ Log: Subject: [PATCH] Update README.vos and release vos build macros
+ From: Paul_GreenVOS@vos.stratus.com
+ Date: Sun, 5 May 02 17:15 edt
+ Message-Id: <200205052114.RAA26329@mailhub2.stratus.com>
+ To: perl5-porters@perl.org
+ Branch: perl
+ + vos/compile_full_perl.cm vos/configure_full_perl.sh
+ + vos/make_full_perl.sh
+ ! MANIFEST README.vos vos/Changes
+____________________________________________________________________________
+[ 16418] By: jhi on 2002/05/05 22:09:27
+ Log: Retract MM_NW5.pm part of #16371, at the request
+ of Michael Schwern.
+ Branch: perl
+ ! lib/ExtUtils/MM_NW5.pm
+____________________________________________________________________________
+[ 16417] By: jhi on 2002/05/05 17:57:04
+ Log: Comment tweaks.
+ Branch: perl
+ ! perl.h
+____________________________________________________________________________
+[ 16416] By: gsar on 2002/05/05 17:00:33
+ Log: a few more p4genpatch fixes:
+
+ don't assume previous revision exists, let p4 compute it from
+ the one-less-change number instead
+
+ the time part in timestamps were always 00:00:00; fix by
+ fetching metadata via "p4 fsync" rather than "p4 filelog"
+
+ quote all file names used in external commands to make them
+ them work when there are spaces in those file names
+
+ looks production worthy now :)
+ Branch: perl
+ ! Porting/p4genpatch
+____________________________________________________________________________
+[ 16415] By: jhi on 2002/05/05 15:51:01
+ Log: The #16401 was far from enough, and mostly in a wrong direction.
+ The right thing to do would be to convert Storable into using
+ the new MY_CXT scheme (no static data, and memory management
+ using SVs).
+ Branch: perl
+ ! ext/Storable/Storable.xs
+____________________________________________________________________________
+[ 16414] By: gsar on 2002/05/05 08:41:22
+ Log: p4genpatch diffs against depot files from //depot/perl when called
+ with -b //depot/maint-5.6/perl
+ Branch: perl
+ ! Porting/p4genpatch
+____________________________________________________________________________
+[ 16413] By: gsar on 2002/05/05 07:50:53
+ Log: p4genpatch: current directory may not be writable, so don't
+ create temp files there
+ Branch: perl
+ ! Porting/p4genpatch
+____________________________________________________________________________
+[ 16412] By: gsar on 2002/05/05 07:34:33
+ Log: p4genpatch now works on windows
+ Branch: perl
+ ! Porting/p4genpatch
+____________________________________________________________________________
+[ 16411] By: gsar on 2002/05/05 07:16:37
+ Log: p4genpatch: tweak from Andreas to strip leading portion of
+ path specified in -b (so patch can be applied with "patch -p1")
+ Branch: perl
+ ! Porting/p4genpatch
+____________________________________________________________________________
+[ 16410] By: jhi on 2002/05/05 03:04:56
+ Log: Subject: [PATCH: perl@16307] add niscat (aka NIS 3, aka NIS +) to t/op/pwent
+ From: PPrymmer@factset.com
+ Date: Fri, 3 May 2002 14:52:12 -0400
+ Message-ID: <OF365AB827.72878468-ON85256BAE.0066F730@55.25.11>
+ Branch: perl
+ ! t/op/pwent.t
+____________________________________________________________________________
+[ 16409] By: jhi on 2002/05/05 01:53:24
+ Log: Upgrade to Net::Ping 2.17.
+ Branch: perl
+ ! lib/Net/Ping.pm lib/Net/Ping/CHANGES lib/Net/Ping/README
+____________________________________________________________________________
+[ 16408] By: jhi on 2002/05/05 01:38:39
+ Log: Upgrade to Getopt::Long 2.31.
+ Branch: perl
+ ! lib/Getopt/Long.pm
+____________________________________________________________________________
+[ 16407] By: jhi on 2002/05/05 01:05:17
+ Log: Subject: Re: Cross-compiling as of WinCE
+ From: "Vadim Konovalov" <vkonovalov@peterstar.ru>
+ Date: Sat, 4 May 2002 03:49:11 +0400
+ Message-ID: <00ca01c1f2fd$20a35fb0$cb5cc3d9@vad>
+ Branch: perl
+ + wince/compile.bat wince/win32io.c
+ - wince/perldll.def
+ ! MANIFEST configpm makedef.pl wince/Makefile.ce
+ ! wince/cecopy-lib.pl wince/comp.pl wince/config.ce
+ ! wince/config_h.PL wince/wince.c
+____________________________________________________________________________
+[ 16406] By: jhi on 2002/05/05 00:23:16
+ Log: The loclibpth is always set by Configure.
+ Branch: perl
+ ! hints/dec_osf.sh
+____________________________________________________________________________
+[ 16405] By: jhi on 2002/05/05 00:13:04
+ Log: Subject: Re: [Unicode::Collate] UCA Version number
+ From: SADAHIRO Tomoyuki <bqw10602@nifty.com>
+ Date: Sun, 05 May 2002 10:07:57 +0900
+ Message-Id: <20020505095942.3BEF.BQW10602@nifty.com>
+ Branch: perl
+ ! lib/Unicode/Collate.pm lib/Unicode/Collate/Changes
+ ! lib/Unicode/Collate/README lib/Unicode/Collate/t/test.t
+____________________________________________________________________________
+[ 16404] By: rgs on 2002/05/04 19:35:13
+ Log: Subject: [PATCH sv.c] delete inaccurate comment
+ From: Dave Mitchell <davem@fdgroup.com>
+ Date: Fri, 3 May 2002 21:17:00 +0100
+ Message-ID: <20020503211700.C22026@fdgroup.com>
+ Branch: perl
+ ! sv.c
+____________________________________________________________________________
+[ 16403] By: jhi on 2002/05/04 19:02:56
+ Log: Solaris: show what 'that' is.
+ Branch: perl
+ ! hints/solaris_2.sh
+____________________________________________________________________________
+[ 16402] By: rgs on 2002/05/04 18:25:25
+ Log: Syntax fix.
+ Branch: perl
+ ! t/op/arith.t
+____________________________________________________________________________
+[ 16401] By: jhi on 2002/05/04 18:25:01
+ Log: (retracted by #16415) Storable: try to free what we allocated.
+ Branch: perl
+ ! ext/Storable/Storable.xs
+____________________________________________________________________________
+[ 16400] By: jhi on 2002/05/04 17:15:10
+ Log: UNICOS: division is really sloppy.
+ Branch: perl
+ ! t/op/arith.t
+____________________________________________________________________________
+[ 16399] By: jhi on 2002/05/04 17:00:58
+ Log: Subject: fix t/io/fs.t for VOS
+ From: Paul_GreenVOS@vos.stratus.com
+ Date: Sat, 4 May 02 14:01 edt
+ Message-Id: <200205041801.OAA13071@mailhub1.stratus.com>
+ Branch: perl
+ ! t/io/fs.t
+____________________________________________________________________________
+[ 16398] By: jhi on 2002/05/04 16:57:05
+ Log: Subject: [Unicode::Collate] UCA Version number
+ From: SADAHIRO Tomoyuki <bqw10602@nifty.com>
+ Date: Sat, 04 May 2002 16:07:07 +0900
+ Message-Id: <20020504160547.D7E0.BQW10602@nifty.com>
+ Branch: perl
+ ! lib/Unicode/Collate.pm lib/Unicode/Collate/t/test.t
+____________________________________________________________________________
+[ 16397] By: jhi on 2002/05/04 16:54:40
+ Log: Subject: [PATCH lib/overload.pm] "\"\""
+ From: Michael G Schwern <schwern@pobox.com>
+ Date: Sat, 4 May 2002 13:17:44 -0400
+ Message-ID: <20020504171743.GD640@blackrider>
+ Branch: perl
+ ! lib/overload.pm
+____________________________________________________________________________
+[ 16396] By: jhi on 2002/05/04 16:32:45
+ Log: Add the EBCDIC test data to downgrade.t.
+ Branch: perl
+ ! ext/Storable/t/downgrade.t
+____________________________________________________________________________
+[ 16395] By: jhi on 2002/05/04 16:25:37
+ Log: EBCDIC tweak.
+ Branch: perl
+ ! ext/Storable/t/utf8hash.t
+____________________________________________________________________________
+[ 16394] By: jhi on 2002/05/04 16:09:15
+ Log: Allow p4genpatch to use diff programs other than 'diff'.
+ Branch: perl
+ ! Porting/p4genpatch
+____________________________________________________________________________
+[ 16393] By: jhi on 2002/05/04 16:03:56
+ Log: Add p4genpatch from Andreas; obsoletes both
+ p4d2p and p4desc.
+ Branch: perl
+ + Porting/p4genpatch
+ ! MANIFEST Porting/makerel
+____________________________________________________________________________
+[ 16392] By: jhi on 2002/05/04 15:58:53
+ Log: Upgrade to Encode 1.69.
+ Branch: perl
+ ! ext/Encode/AUTHORS ext/Encode/Changes ext/Encode/Encode.pm
+ ! ext/Encode/Encode/Makefile_PL.e2x
+ ! ext/Encode/Unicode/Unicode.pm ext/Encode/lib/Encode/Alias.pm
+ ! ext/Encode/lib/Encode/Guess.pm
+ ! ext/Encode/lib/Encode/MIME/Header.pm
+ ! ext/Encode/t/mime-header.t
+____________________________________________________________________________
+[ 16391] By: jhi on 2002/05/04 15:51:52
+ Log: Subject: [PATCH INSTALL] - remove binary compatibility claims
+ From: Dave Mitchell <davem@fdgroup.com>
+ Date: Sat, 4 May 2002 16:09:26 +0100
+ Message-ID: <20020504160926.A24990@fdgroup.com>
+ Branch: perl
+ ! INSTALL
+____________________________________________________________________________
+[ 16390] By: jhi on 2002/05/04 15:47:49
+ Log: Subject: [PATCH] Re: [PATCH] Re: Data::Dumper tests with -Mutf8
+ From: Nicholas Clark <nick@unfortu.net>
+ Date: Sat, 4 May 2002 12:38:58 +0100
+ Message-ID: <20020504113857.GC317@Bagpuss.unfortu.net>
+ Branch: perl
+ ! ext/Data/Dumper/Dumper.xs ext/Data/Dumper/t/dumper.t
+____________________________________________________________________________
+[ 16389] By: jhi on 2002/05/04 15:40:26
+ Log: Subject: [PATCH] Re: Data::Dumper tests with -Mutf8
+ From: Nicholas Clark <nick@unfortu.net>
+ Date: Sat, 4 May 2002 00:30:43 +0100
+ Message-ID: <20020503233042.GF294@Bagpuss.unfortu.net>
+ Branch: perl
+ ! ext/Data/Dumper/Dumper.xs ext/Data/Dumper/t/dumper.t
+____________________________________________________________________________
+[ 16388] By: jhi on 2002/05/04 15:28:56
+ Log: Doc tweak from Elizabeth Mattijsen.
+ Branch: perl
+ ! pod/perlunicode.pod
+____________________________________________________________________________
+[ 16387] By: rgs on 2002/05/04 13:29:33
+ Log: Subject: [PATCH] channames.pm doc tweaks
+ From: Tatsuhiko Miyagawa <miyagawa@edge.co.jp>
+ Date: Sat, 04 May 2002 11:45:18 +0900
+ Message-ID: <86it64d41t.wl@mail.edge.co.jp>
+ Branch: perl
+ ! lib/charnames.pm
+____________________________________________________________________________
+[ 16386] By: rgs on 2002/05/04 13:22:41
+ Log: Subject: Re: [PATCH scope.c] Re: local($tied->{foo}) leaks
+ From: Dave Mitchell <davem@fdgroup.com>
+ Date: Fri, 3 May 2002 23:51:10 +0100
+ Message-ID: <20020503235110.E22026@fdgroup.com>
+ Branch: perl
+ ! pp_hot.c scope.c
+____________________________________________________________________________
+[ 16385] By: nick on 2002/05/04 09:29:41
+ Log: Integrate mainline
+ Branch: perlio
+ !> (integrate 47 files)
+____________________________________________________________________________
+[ 16384] By: jhi on 2002/05/03 21:00:27
+ Log: Subject: Re: perl@16307
+ From: Nicholas Clark <nick@unfortu.net>
+ Date: Fri, 3 May 2002 21:49:04 +0100
+ Message-ID: <20020503204903.GC294@Bagpuss.unfortu.net>
+
+ canonical #3 was failing under -Mutf8.
+ Branch: perl
+ ! ext/Storable/t/canonical.t
+____________________________________________________________________________
+[ 16383] By: rgs on 2002/05/03 20:45:58
+ Log: Subject: [PATCH scope.c] Re: local($tied->{foo}) leaks
+ From: Dave Mitchell <davem@fdgroup.com>
+ Date: Fri, 3 May 2002 21:12:10 +0100
+ Message-ID: <20020503211210.B22026@fdgroup.com>
+ Branch: perl
+ ! scope.c
+____________________________________________________________________________
+[ 16382] By: rgs on 2002/05/03 20:14:07
+ Log: Subject: [PATCH] perl -i clobbers files on Cygwin
+ From: "Gerrit P. Haase" <gerrit@familiehaase.de>
+ Date: Fri, 3 May 2002 20:30:25 +0200
+ Message-ID: <190109228332.20020503203025@familiehaase.de>
+ Branch: perl
+ ! doio.c
+____________________________________________________________________________
+[ 16381] By: rgs on 2002/05/03 20:07:44
+ Log: Subject: t/TestInit.pm - clean up comments
+ From: Paul_GreenVOS@vos.stratus.com
+ Date: Fri, 3 May 02 14:51 edt
+ Message-ID: <200205031850.OAA09104@mailhub2.stratus.com>
+ Branch: perl
+ ! t/TestInit.pm
+____________________________________________________________________________
+[ 16380] By: jhi on 2002/05/03 15:47:38
+ Log: Subject: [PATCH] enc2xs template -- searches script more sensibly
+ From: Dan Kogai <dankogai@dan.co.jp>
+ Date: Sat, 4 May 2002 01:46:35 +0900
+ Message-Id: <544C1568-5EB5-11D6-8F1D-00039301D480@dan.co.jp>
+ Branch: perl
+ ! ext/Encode/Encode/Makefile_PL.e2x
+____________________________________________________________________________
+[ 16379] By: jhi on 2002/05/03 15:43:47
+ Log: Forgotten test arrangement.
+ Branch: perl
+ ! ext/Digest/MD5/t/files.t
+____________________________________________________________________________
+[ 16378] By: jhi on 2002/05/03 14:54:19
+ Log: Comedy of typing errors.
+ Branch: perl
+ ! hints/solaris_2.sh
+____________________________________________________________________________
+[ 16377] By: jhi on 2002/05/03 14:45:26
+ Log: Let's try the "no Net:: if no Socket" again.
+ Branch: perl
+ ! t/lib/1_compile.t
+____________________________________________________________________________
+[ 16376] By: jhi on 2002/05/03 14:11:42
+ Log: Update Changes.
+ Branch: perl
+ ! Changes patchlevel.h
+____________________________________________________________________________
[ 16375] By: jhi on 2002/05/03 14:09:38
Log: Oops.
Branch: perl
diff --git a/INSTALL b/INSTALL
index 0a22dcbd4c..f087b77fc8 100644
--- a/INSTALL
+++ b/INSTALL
@@ -88,8 +88,8 @@ that too. Additional information is in the Porting/ directory.
=head1 WARNING: This version requires an extra step to build old extensions.
5.005_53 and later releases do not export unadorned
-global symbols anymore. This means you may need to build older
-extensions that have not been updated for the new naming convention
+global symbols anymore. This means you may need to build rather old
+extensions that have not been updated for the current naming convention
with:
perl Makefile.PL POLLUTE=1
@@ -101,17 +101,12 @@ building perl itself with:
pod/perldelta.pod contains more details about this.
-=head1 WARNING: This version may not be binary compatible with Perl 5.005.
+=head1 WARNING: This version is not binary compatible with releases of
+Perl prior to 5.8.0.
-Using the default Configure options for building perl should get you
-a perl that will be binary compatible with the 5.005 release.
-
-However, if you run Configure with any custom options, such as
--Dusethreads, -Dusemultiplicity, -Dusemymalloc, etc.,
-the resulting perl will not be binary compatible. Under these
-circumstances, if you have dynamically loaded extensions that were
-built under perl 5.005, you will need to rebuild and reinstall all
-those extensions to use them with 5.6.
+If you have built extensions (ie modules that include C code)
+using an earlier version of Perl, you will need to rebuild and reinstall
+those extensions.
Pure perl modules without XS or C code should continue to work fine
without reinstallation. See the discussions below on
diff --git a/MANIFEST b/MANIFEST
index 86d0148603..023f4e2cf5 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -2206,8 +2206,7 @@ Porting/fixvars Find undeclared variables with C compiler and fix em
Porting/genlog Generate formatted changelogs by querying p4d
Porting/Glossary Glossary of config.sh variables
Porting/makerel Release making utility
-Porting/p4d2p Generate standard patches from p4 diffs
-Porting/p4desc Smarter 'p4 describe', outputs diffs for new files
+Porting/p4genpatch Obsoletes both p4desc and p4d2p
Porting/patching.pod How to report changes made to Perl
Porting/patchls Flexible patch file listing utility
Porting/pumpkin.pod Guidelines and hints for Perl maintainers
@@ -2673,17 +2672,20 @@ vms/vmsish.h VMS-specific C header for Perl core
vms/vmspipe.com VMS-specific piped command helper script
vms/vms_yfix.pl convert Unix perly.[ch] to VMS perly_[ch].vms
vms/writemain.pl Generate perlmain.c from miniperlmain.c+extensions
-vos/build.cm VOS command macro to build Perl
+vos/build.cm VOS command macro to build "mini" Perl
vos/Changes Changes made to port Perl to the VOS operating system
-vos/compile_perl.cm VOS command macro to build multiple version of Perl
+vos/compile_full_perl.cm VOS command macro to build "full" Perl
+vos/compile_perl.cm VOS command macro to build "mini" Perl
vos/config.alpha.def definitions used by config.pl
vos/config.alpha.h config.h for use with alpha VOS POSIX.1 support
vos/config.ga.def definitions used by config.pl
vos/config.ga.h config.h for use with generally-available VOS POSIX.1 support
vos/config.pl script to convert a config_h.SH to a config.h
-vos/configure_perl.cm VOS command macro to configure perl before building
-vos/install_perl.cm VOS command macro to install perl after building
+vos/configure_full_perl.sh VOS shell script to configure "full" perl before building
+vos/configure_perl.cm VOS command macro to configure "mini" perl before building
+vos/install_perl.cm VOS command macro to install "mini" perl after building
vos/Makefile A helper for maintaining the config.*.* in UNIX
+vos/make_full_perl.sh VOS shell script to build and test "full" perl
vos/perl.bind VOS bind control file
vos/test_vos_dummies.c Test program for "vos_dummies.c"
vos/vos.c VOS emulations for missing POSIX functions
@@ -2741,9 +2743,9 @@ wince/bin/pl2bat.pl WinCE port
wince/bin/runperl.pl WinCE port
wince/bin/search.pl WinCE port
wince/cecopy-lib.pl WinCE port
+wince/compile.bat WinCE port
wince/comp.pl WinCE port
wince/config.ce WinCE port
-wince/config.h WinCE port
wince/config_H.ce WinCE port
wince/config_h.PL WinCE port
wince/config_sh.PL WinCE port
@@ -2761,7 +2763,6 @@ wince/include/time.h WinCE port
wince/Makefile.ce WinCE port
wince/makeico.pl WinCE port
wince/perl.rc WinCE port
-wince/perldll.def WinCE port
wince/perllib.c WinCE port
wince/perlmain.c WinCE port
wince/README.compile WinCE port
@@ -2773,6 +2774,7 @@ wince/win32.h WinCE port
wince/win32iop.h WinCE port
wince/win32thread.c WinCE port
wince/win32thread.h WinCE port
+wince/win32io.c WinCE port
wince/wince.c WinCE port
wince/wince.h WinCE port
wince/wincesck.c WinCE port
diff --git a/Porting/makerel b/Porting/makerel
index d97143f176..ae43642201 100644
--- a/Porting/makerel
+++ b/Porting/makerel
@@ -101,6 +101,7 @@ my @exe = qw(
Porting/makerel
Porting/p4d2p
Porting/p4desc
+ Porting/p4genpatch
Porting/patchls
Porting/*.pl
mpeix/nm
diff --git a/Porting/p4d2p b/Porting/p4d2p
deleted file mode 100755
index f645ef807e..0000000000
--- a/Porting/p4d2p
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/l/local/bin/perl -wspi.bak
-
-#
-# reads a perforce style diff on stdin and outputs appropriate headers
-# so the diff can be applied with the patch program
-#
-# Gurusamy Sarathy <gsar@activestate.com>
-#
-
-BEGIN {
- $0 =~ s|.*/||;
- if ($h or $help) {
- print STDERR <<USAGE;
-Usage: $0 [-v] [-h] files
-
- -h print this help
- -v output progress messages
-
-Does inplace edit of diff files output by the perforce commands
-"p4 describe", "p4 diff", and "p4 diff2". The result is suitable
-for feeding to the "patch" program.
-
-If no files are specified, reads from stdin and writes to stdout.
-
-WARNING: It only handles context or unified diffs.
-
-Example: p4 describe -du 123 | $0 > change-123.patch
-
-USAGE
- exit(0);
- }
- unless (@ARGV) { @ARGV = '-'; undef $^I; }
- use vars qw($thisfile $time $file $fnum $v $h $help);
- $thisfile = "";
- $time = localtime(time);
-}
-
-my ($cur, $match);
-$cur = m<^==== //depot/(.+?)\#\d+.* ====$> ... m<^(\@\@.+\@\@|\*+)$>;
-
-$match = $1;
-
-if ($ARGV ne $thisfile) {
- warn "processing patchfile [$ARGV]\n" unless $ARGV eq '-';
- $thisfile = $ARGV;
-}
-
-# while we are within range
-if ($cur) {
- # set the file name after first line
- if ($cur == 1) {
- $file = $match;
- $fnum++;
- }
- # emit the diff header when we hit last line
- elsif ($cur =~ /E0$/) {
- my $f = $file;
-
- # special hack for perl so we can always use "patch -p1"
- $f =~ s<^.*?(perl.*?/)><$1>;
-
- # unified diff
- if ($match =~ /^\@/) {
- warn "emitting udiff header\n" if $v;
- $_ = "Index: $f\n--- $f.~1~\t$time\n+++ $f\t$time\n$_";
- }
- # context diff
- elsif ($match =~ /^\*/) {
- warn "emitting cdiff header\n" if $v;
- $_ = "Index: $f\n*** $f.~1~\t$time\n--- $f\t$time\n$_";
- }
- }
- # see if we hit another patch (i.e. previous patch was empty)
- elsif (m<^==== //depot/(.+?)\#\d+.* ====$>) {
- $file = $match = $1;
- }
- # suppress all other lines in the header
- else {
- $_ = "";
- }
- warn "file [$file] line [$cur] file# [$fnum]\n" if $v;
-}
-
-$_ .= "End of Patch.\n" if eof;
diff --git a/Porting/p4desc b/Porting/p4desc
deleted file mode 100755
index 2d1c9d8219..0000000000
--- a/Porting/p4desc
+++ /dev/null
@@ -1,147 +0,0 @@
-#!/usr/bin/perl -wpi.bak
-
-#
-# Munge "p4 describe ..." output to include new files.
-#
-# Gurusamy Sarathy <gsar@activestate.com>
-#
-
-use vars qw($thisfile $change $file $fnum $h $v $p4port @addfiles
- $branches $skip);
-
-BEGIN {
- $0 =~ s|^.*/||;
- $p4port = $ENV{P4PORT} || 'localhost:1666';
- for (@ARGV) {
- if ($p4port =~ /^\s+$/) {
- $p4port = $_;
- }
- elsif (/^-p(.*)$/) {
- $p4port = $1 || ' ';
- }
- elsif (/^-b(.*)$/) {
- $branches = $1;
- }
- elsif (/^-v$/) {
- $v++;
- }
- elsif (/^-h/) {
- $h++;
- }
- else {
- push @files, $_;
- }
- }
- unless (@files) { @files = '-'; undef $^I; }
- @ARGV = @files;
- $branches = '//depot/perl/' unless defined $branches;
- if ($h) {
- print STDERR <<USAGE;
-Usage: $0 [-p \$P4PORT] [-v] [-h] [files]
-
- -phost:port p4 port (e.g. myhost:1666)
- -h print this help
- -v output progress messages
- -bbranch(es) which branches to include (regex)
- (default: //depot/perl/)
- -h show this help
-
-A smart 'cat'. When fed the spew from "p4 describe ..." on STDIN,
-spits it right out on STDOUT, followed by patches for any new files
-detected in the spew. Can also be used to edit insitu a bunch of
-files containing said spew.
-
-WARNING 1: Currently only emits unified diffs (diff -u).
-
-WARNING 2: By default only the changes in the //depot/perl branch
-are shown. To include all the branches, supply "-b." arguments
-to $0.
-
-Examples:
- p4 describe -du 123 | $0 > change-123.desc
- p4 describe -du 123 | $0 | p4d2p > change-123.patch
-
-USAGE
- exit(0);
- }
- $thisfile = "";
-}
-
-
-if ($ARGV ne $thisfile) {
- warn "processing patchfile [$ARGV]\n" unless $ARGV eq '-';
- $thisfile = $ARGV;
-}
-
-my $cur = m|^Affected files| ... m|^Differences|;
-
-# while we are within range
-if ($cur) {
- if (m|^\.\.\. |) {
- if (m|$branches|) {
- if (m{^\.\.\. (//depot/.+?\#\d+) (add|branch)$}) {
- my $newfile = $1;
- push @addfiles, $newfile;
- warn "$newfile add, revision != 1!\n" unless $newfile =~ /#1$/;
- }
- } else {
- push @skipped, "# $_";
- $_ = '';
- }
- }
- warn "file [$file] line [$cur] file# [$fnum]\n" if $v;
-}
-
-if (m|^==== //depot/|) {
- $skip = !m|$branches|;
- print "# Skipped because not under branches: $branches\n" if $skip;
-}
-
-$_ = "# $_" if $skip;
-
-if (/^Change (\d+) by/) {
- $_ = "\n\n" . $_ if $change; # start of a new change list
- $change = $1;
- my $new = newfiles();
- if ($new) {
- $_ = $new . $_;
- }
-}
-
-if (eof) {
- $_ .= newfiles();
- $_ .= join('', "\n",
- "# Skipped because not under branches: $branches\n",
- @skipped, "\n") if @skipped;
-}
-
-sub newfiles {
- my $addfile;
- my $ret = "";
- for $addfile (@addfiles) {
- my $type = `p4 -p $p4port files '$addfile'`;
- if ($?) {
- warn "$0: `p4 -p $p4port print '$addfile'` failed, status[$?]\n";
- next;
- }
- $type =~ m|^//.*\((.+)\)$| or next;
- $type = $1;
- unless ($type =~ /text/) {
- $ret .= "\n==== $addfile ($type) ====\n\n";
- next;
- }
- my @new = `p4 -p $p4port print '$addfile'`;
- if ($?) {
- die "$0: `p4 -p $p4port print '$addfile'` failed, status[$?]\n";
- }
- my $desc = shift @new; # discard initial description
- $ret .= "\n==== $addfile ($type) ====\n\n";
- my $lines = "," . @new;
- $lines = "" if @new < 2;
- $ret .= "\@\@ -0,0 +1$lines \@\@\n";
- $ret .= join("+","",@new);
- $ret .= "\n\\ No newline at end of file\n" if $ret !~ /\n$/;
- }
- @addfiles = ();
- return $ret;
-}
diff --git a/Porting/p4genpatch b/Porting/p4genpatch
new file mode 100644
index 0000000000..a283ceb12e
--- /dev/null
+++ b/Porting/p4genpatch
@@ -0,0 +1,149 @@
+#!/usr/bin/perl -w
+
+
+# p4genpatch - Generate a perl patch from the repository
+
+# Usage: $0 -h
+
+# andreas.koenig@anima.de
+
+use strict;
+use File::Temp qw(tempdir);
+use File::Compare;
+use Time::Local;
+use Getopt::Long;
+use Cwd qw(cwd);
+
+sub correctmtime ($$$);
+sub Usage ();
+
+$0 =~ s|^.*[\\/]||;
+my $VERSION = '0.05';
+my $TOPDIR = cwd();
+my @P4opt;
+our %OPT = ( "d" => "u", b => "//depot/perl", "D" => "diff" );
+Getopt::Long::Configure("no_ignore_case");
+GetOptions(\%OPT, "b=s", "p=s", "d=s", "D=s", "h", "v", "V") or die Usage;
+print Usage and exit if $OPT{h};
+print "$VERSION\n" and exit if $OPT{V};
+die Usage unless @ARGV == 1 && $ARGV[0] =~ /^\d+$/;
+my $CHANGE = shift;
+
+for my $p4opt (qw(p)) {
+ push @P4opt, "-$p4opt $OPT{$p4opt}" if $OPT{$p4opt};
+}
+
+my $system = "p4 @P4opt describe -s $CHANGE |";
+open my $p4, $system or die "Could not run $system";
+my @action;
+while (<$p4>) {
+ print;
+ next unless m|($OPT{b})|;
+ my($prefix) = $1;
+ $prefix =~ s|/[^/]+$||; # up to the last "/" in the match is to be stripped
+ if (my($file,$action) = m|^\.\.\. (//depot.*)\s(\w+)$|) {
+ next if $action eq "delete";
+ push @action, [$action, $file, $prefix];
+ }
+}
+close $p4;
+
+my $tempdir;
+print "Differences ...\n";
+for my $a (@action) {
+ $tempdir ||= tempdir( "tmp-XXXX", CLEANUP => 1, TMPDIR => 1 );
+ my($action,$file,$prefix) = @$a;
+ my($path,$basename,$number) = $file =~ m|\Q$prefix\E/(.+/)?([^/]+)#(\d+)|;
+ my($depotfile) = $file =~ m|^(.+)#\d+\z|;
+ die "Panic: Could not parse file[$file]" unless $number;
+ $path = "" unless defined $path;
+ my($d1,$d2,$prev,$prevchange,$prevfile,$doadd);
+ $prev = $number-1;
+ $prevchange = $CHANGE-1;
+ # can't assume previous rev == $number-1 due to obliterated revisions
+ $prevfile = "$depotfile\@$prevchange";
+ if ($number == 1 or $action =~ /^(add|branch)$/) {
+ $d1 = "/dev/null";
+ ++$doadd;
+ } elsif ($action =~ /^(edit|integrate)$/) {
+ $d1 = "$path$basename-$prevchange";
+ warn "==> $d1 <==\n" if $OPT{v};
+ my $system = qq[p4 @P4opt print -o "$tempdir/$d1" "$prevfile"];
+ my $status = `$system`;
+ if ($?) {
+ warn "$0: system[$system] failed, status[$?]\n";
+ next;
+ }
+ chmod 0644, "$tempdir/$d1";
+ if ($status =~ /\#(\d+) \s - \s \w+ \s change \s (\d+) \s /x) {
+ ($prev,$prevchange) = ($1,$2);
+ $prevfile = "$depotfile#$prev";
+ my $oldd1 = $d1;
+ $d1 =~ s/-\d+$/#$prev~$prevchange~/;
+ rename "$tempdir/$oldd1", "$tempdir/$d1";
+ }
+ } else {
+ die "Unknown action[$action]";
+ }
+ $d2 = "$path$basename";
+ warn "==> $d2#$number <==\n" if $OPT{v};
+ my $system = qq[p4 @P4opt print -o "$tempdir/$d2" "$file"];
+ # warn "system[$system]";
+ my $type = `$system`;
+ if ($?) {
+ warn "$0: `$system` failed, status[$?]\n";
+ next;
+ }
+ chmod 0644, "$tempdir/$d2";
+ $type =~ m|^//.*\((.+)\)$| or next;
+ $type = $1;
+ if ($doadd or File::Compare::compare("$tempdir/$d1", "$tempdir/$d2")) {
+ print "\n==== $file ($type) ====\n";
+ unless ($type =~ /text/) {
+ next;
+ }
+ print "Index: $path$basename\n";
+ correctmtime($prevfile,$prev,"$tempdir/$d1") unless $doadd;
+ correctmtime($file,$number,"$tempdir/$d2");
+ chdir $tempdir or warn "Could not chdir '$tempdir': $!";
+ $system = qq[$OPT{D} -$OPT{d} "$d1" "$d2"];
+ system($system); # no return check because diff doesn't always return 0
+ chdir $TOPDIR or warn "Could not chdir '$TOPDIR': $!";
+ }
+ for ("$tempdir/$d1","$tempdir/$d2") {
+ unlink or warn "Could not unlink $_: $!" if -f;
+ }
+}
+print "End of Patch.\n";
+
+sub correctmtime ($$$) {
+ my($depotfile,$nr,$localfile) = @_;
+ my %fstat = map { /^\.\.\. (\w+) (.*)$/ } `p4 @P4opt fstat -s "$depotfile"`;
+ return unless exists($fstat{headRev}) and $fstat{headRev} == $nr;
+ utime $fstat{headTime}, $fstat{headTime}, $localfile;
+}
+
+sub Usage () {
+ qq{Usage: $0 [OPTIONS] patchnumber
+
+ -p host:port p4 port (e.g. myhost:1666)
+ -d diffopt option to pass to diff(1)
+ -D diff diff(1) to use
+ -b branch(es) which branches to include (regex); everything up
+ to the last slash of matched portion of path is
+ stripped on local copy (default: //depot/perl)
+ -v verbose
+ -h print this help and exit
+ -V print version number and exit
+
+Fetches all required files from the repository, puts them into a
+temporary directory with sensible names and sensible modification
+times and composes a patch to STDOUT using external diff command.
+Requires repository access.
+
+Examples:
+ perl $0 12345 | gzip -c > 12345.gz
+ perl $0 -dc 12345 > change-12345.patch
+ perl $0 -b //depot/maint-5.6/perl -v 8571 > 8571
+};
+}
diff --git a/Porting/repository.pod b/Porting/repository.pod
index 5887e21199..d1667b79a0 100644
--- a/Porting/repository.pod
+++ b/Porting/repository.pod
@@ -328,9 +328,9 @@ back into the mainline, they do:
Generating a patch for change#42 is done as follows:
- % p4 describe -du 42 | p4desc | p4d2p > change-42.patch
+ % p4genpatch 42 > change-42.patch
-F<p4desc> and F<>p4d2p> are to be found in //depot/perl/Porting/.
+F<p4genpatch> is to be found in //depot/perl/Porting/.
The usual routine to apply a patch is
@@ -356,7 +356,7 @@ Other useful Perforce commands
% p4 describe -du 12345 # show change 12345
Note: the output of "p4 describe" is not in proper diff format, use
-the F<Porting/p4d2p> to convert.
+the F<Porting/p4genpatch> to get a diff-compatible format.
% p4 diff -se ./... # have I modified something but forgotten
# to "p4 edit", easy faux pas with autogenerated
diff --git a/README.ko b/README.ko
index 49c60d2d9c..fb3a4a987c 100644
--- a/README.ko
+++ b/README.ko
@@ -26,9 +26,10 @@ PerlÀº 5.8.0ÆǺÎÅÍ À¯´ÏÄÚµå/ISO 10646¿¡ ´ëÇÑ ±¤¹üÀ§ÇÑ Áö¿øÀ» ÇÕ´Ï´Ù.
Áö¿øÇÕ´Ï´Ù. À¯´ÏÄÚµå´Â Àü ¼¼°è¿¡¼­ ¾²ÀÌ´Â ¸ðµç ¾ð¾î¸¦ À§ÇÑ Ç¥±â ü°è -
À¯·´ÀÇ ¶óƾ ¾ËÆĺª, Å°¸± ¾ËÆĺª, ±×¸®½º ¾ËÆĺª, Àεµ¿Í µ¿³² ¾Æ½Ã¾ÆÀÇ
ºê¶ó¹Ì °è¿­ ½ºÅ©¸³Æ®, ¾Æ¶ø ¹®ÀÚ, È÷ºê¸® ¹®ÀÚ, ÇÑÁßÀÏÀÇ ÇÑÀÚ, Çѱ¹¾îÀÇ ÇѱÛ,
-ÀϺ»¾îÀÇ °¡³ª, ºÏ¹Ì Àεð¾ÈÀÇ Ç¥±â ü°è µî- ¼ö¿ëÇÏ´Â °ÍÀ» ¸ñÇ¥·Î ÇÏ°í
+ÀϺ»¾îÀÇ °¡³ª, ºÏ¹Ì Àεð¾ÈÀÇ Ç¥±â ü°è µî-¸¦ ¼ö¿ëÇÏ´Â °ÍÀ» ¸ñÇ¥·Î ÇÏ°í
Àֱ⠶§¹®¿¡ ±âÁ¸¿¡ ¾²ÀÌ´ø °¢ ¾ð¾î ¹× ±¹°¡ ±×¸®°í ¿î¿µ ü°è¿¡ °íÀ¯ÇÑ
-¹®ÀÚ ÁýÇÕ°ú ÀÎÄÚµùÀ» ¸ðµÎ Æ÷°ýÇÏ°í ÀÖ½À´Ï´Ù.
+¹®ÀÚ ÁýÇÕ°ú ÀÎÄÚµù¿¡ ¾µ ¼ö ÀÖ´Â ¸ðµç ±ÛÀÚ´Â ¹°·ÐÀÌ°í ±âÁ¸ ¹®ÀÚ ÁýÇÕ¿¡¼­
+Áö¿øÇÏ°í ÀÖÁö ¾Ê´ø ¾ÆÁÖ ¸¹Àº ±ÛÀÚ¸¦ Æ÷ÇÔÇÏ°í ÀÖ½À´Ï´Ù.
PerlÀº ³»ºÎÀûÀ¸·Î À¯´ÏÄڵ带 ¹®ÀÚ Ç¥ÇöÀ» À§ÇØ »ç¿ëÇÕ´Ï´Ù. º¸´Ù ±¸Ã¼ÀûÀ¸·Î
@@ -43,28 +44,43 @@ perlunicode ¸Å´º¾óÀ» Âü°íÇϽʽÿÀ.) À¯´ÏÄڵ尡 ³Î¸® º¸±ÞµÇ±â Àü¿¡
'Encode'´Â ´ÙÀ½°ú °°Àº Çѱ¹¾î ÀÎÄÚµùÀ» Áö¿øÇÕ´Ï´Ù.
- euc-kr : US-ASCII¿Í KS X 1001À» °°ÀÌ ¾²´Â ¸ÖƼ¹ÙÀÌÆ® ÀÎÄÚµù
- (ÈçÈ÷ ¿Ï¼ºÇüÀ̶ó°í ºÒ¸².) KS X 2901°ú RFC 1557 Âü°í.
- cp949 : MS-Windows 9x/ME¿¡¼­ ¾²ÀÌ´Â È®Àå ¿Ï¼ºÇü.
- euc-kr¿¡ 8,822ÀÚÀÇ ÇÑ±Û À½ÀýÀ» ´õÇÑ °ÍÀÓ.
- alias´Â uhc, windows-949, x-windows-949,
- ks_c_5601-1987. ¸Ç ¸¶Áö¸· À̸§Àº ÀûÀýÇÏÁö ¾ÊÀº
- À̸§ÀÌÁö¸¸, Microsoft Á¦Ç°¿¡¼­ CP949ÀÇ Àǹ̷Î
- ¾²ÀÌ°í ÀÖÀ½.
- johab : KS X 1001:1998 ºÎ·Ï 3¿¡¼­ ±ÔÁ¤ÇÑ Á¶ÇÕÇü.
- ¹®ÀÚ ·¹ÆÛÅ丮´Â cp949¿Í ¸¶Âù°¡Áö·Î US-ASCII,
- KS X 1001¿¡ 8,822ÀÚÀÇ ÇÑ±Û À½ÀýÀ» ´õÇÑ °ÍÀÓ.
-
- iso-2022-kr : RFC 1557¿¡¼­ ±ÔÁ¤ÇÑ Çѱ¹¾î ÀÎÅÍ³Ý ¸ÞÀÏ ±³È¯¿ë ÀÎÄÚµùÀ¸·Î
- US-ASCII¿Í KS X 1001À» ·¹ÆÛÅ丮·Î ÇÏ´Â Á¡¿¡¼­
- euc-kr°ú °°Áö¸¸ ÀÎÄÚµù ¹æ½ÄÀÌ ´Ù¸§.
- 1997-8³â °æ±îÁö ¾²¿´À¸³ª ´õ ÀÌ»ó ¸ÞÀÏ ±³È¯¿¡ ¾²ÀÌÁö
- ¾ÊÀ½.
- ksc5601-raw : KS X 1001(KS C 5601)À» GL(Áï, MSB¸¦ 0À¸·Î ÇÑ °æ¿ì)
- ¿¡ ³õ¾ÒÀ» ¶§ÀÇ ÀÎÄÚµù. US-ASCII¿Í °áÇÕÇÏÁö ¾Ê°í
- ´Üµ¶À¸·Î ¾²ÀÌ´Â ÀÏÀº X11 µî¿¡¼­ ±Û²Ã ÀÎÄÚµù
- (ksc5601.1987-0. '0'Àº GLÀ» ÀǹÌÇÔ.)À¸·Î ¾²ÀÌ´Â °ÍÀ»
- Á¦¿ÜÇÏ°í´Â °ÅÀÇ ¾øÀ½.
+=over 4
+
+=item euc-kr
+
+ US-ASCII¿Í KS X 1001À» °°ÀÌ ¾²´Â ¸ÖƼ¹ÙÀÌÆ® ÀÎÄÚµù (ÈçÈ÷ ¿Ï¼ºÇüÀ̶ó°í
+ ºÒ¸².) KS X 2901°ú RFC 1557 Âü°í.
+
+=item cp949
+
+ MS-Windows 9x/ME¿¡¼­ ¾²ÀÌ´Â È®Àå ¿Ï¼ºÇü. euc-kr¿¡ 8,822ÀÚÀÇ
+ ÇÑ±Û À½ÀýÀ» ´õÇÑ °ÍÀÓ. alias´Â uhc, windows-949, x-windows-949,
+ ks_c_5601-1987. ¸Ç ¸¶Áö¸· À̸§Àº ÀûÀýÇÏÁö ¾ÊÀº À̸§ÀÌÁö¸¸, Microsoft
+ Á¦Ç°¿¡¼­ CP949ÀÇ Àǹ̷Π¾²ÀÌ°í ÀÖÀ½.
+
+=item johab
+
+ KS X 1001:1998 ºÎ·Ï 3¿¡¼­ ±ÔÁ¤ÇÑ Á¶ÇÕÇü. ¹®ÀÚ ·¹ÆÛÅ丮´Â cp949¿Í
+ ¸¶Âù°¡Áö·Î US-ASCII¿Í KS X 1001¿¡ 8,822ÀÚÀÇ ÇÑ±Û À½ÀýÀ» ´õÇÑ °ÍÀÓ.
+ ÀÎÄÚµù ¹æ½ÄÀº ÀüÇô ´Ù¸§.
+
+=item iso-2022-kr
+
+ RFC 1557¿¡¼­ ±ÔÁ¤ÇÑ Çѱ¹¾î ÀÎÅÍ³Ý ¸ÞÀÏ ±³È¯¿ë ÀÎÄÚµùÀ¸·Î US-ASCII¿Í
+ KS X 1001À» ·¹ÆÛÅ丮·Î ÇÏ´Â Á¡¿¡¼­ euc-kr°ú °°Áö¸¸ ÀÎÄÚµù ¹æ½ÄÀÌ ´Ù¸§.
+ 1997-8³â °æ±îÁö ¾²¿´À¸³ª ´õ ÀÌ»ó ¸ÞÀÏ ±³È¯¿¡ ¾²ÀÌÁö ¾ÊÀ½.
+
+=item ksc5601-raw
+
+ KS X 1001(KS C 5601)À» GL(Áï, MSB¸¦ 0À¸·Î ÇÑ °æ¿ì) ¿¡ ³õ¾ÒÀ» ¶§ÀÇ
+ ÀÎÄÚµù. US-ASCII¿Í °áÇÕÇÏÁö ¾Ê°í ´Üµ¶À¸·Î ¾²ÀÌ´Â ÀÏÀº X11 µî¿¡¼­ ±Û²Ã
+ ÀÎÄÚµù (ksc5601.1987-0. '0'Àº GLÀ» ÀǹÌÇÔ.)À¸·Î ¾²ÀÌ´Â °ÍÀ» Á¦¿ÜÇÏ°í´Â
+ °ÅÀÇ ¾øÀ½. KS C 5601Àº 1997³â KS X 1001·Î À̸§À» ¹Ù²Ù¾úÀ½. 1998³â¿¡´Â µÎ
+ ±ÛÀÚ (À¯·ÎÈ­ ºÎÈ£¿Í µî·Ï »óÇ¥ ºÎÈ£)°¡ ´õÇØÁ³À½.
+
+=back
+
+ ¸î °¡Áö »ç¿ë ¿¹Á¦¸¦ ¾Æ·¡¿¡ º¸ÀÔ´Ï´Ù.
¿¹¸¦ µé¾î, euc-kr ÀÎÄÚµùÀ¸·Î µÈ ÆÄÀÏÀ» UTF-8·Î º¯È¯ÇÏ·Á¸é ´ÙÀ½°ú
°°ÀÌ ÇÏ¸é µË´Ï´Ù.
@@ -76,7 +92,7 @@ perlunicode ¸Å´º¾óÀ» Âü°íÇϽʽÿÀ.) À¯´ÏÄڵ尡 ³Î¸® º¸±ÞµÇ±â Àü¿¡
perl -Mencoding=utf8,STDOUT,euc-kr -pe1 < file.utf8 > file.euckr
-ÀÌ·± º¯È¯À» Á»´õ Æí¸®ÇÏ°Ô ÇÒ ¼ö ÀÖµµ·Ï Encode ¸ðµâÀ» ½á¼­
+ ÀÌ·± º¯È¯À» Á»´õ Æí¸®ÇÏ°Ô ÇÒ ¼ö ÀÖµµ·Ï Encode ¸ðµâÀ» ½á¼­
¼ø¼öÇÏ°Ô Perl·Î¸¸ ¾²ÀÎ piconv°¡ Perl¿¡ µé¾î ÀÖ½À´Ï´Ù.
±× À̸§¿¡¼­ ¾Ë ¼ö ÀÖµíÀÌ piconv´Â Unix¿¡ ÀÖ´Â iconv¸¦
¸ðµ¨·Î ÇÑ °ÍÀÔ´Ï´Ù. ±× »ç¿ë¹ýÀº ¾Æ·¡¿Í °°½À´Ï´Ù.
@@ -84,10 +100,10 @@ perlunicode ¸Å´º¾óÀ» Âü°íÇϽʽÿÀ.) À¯´ÏÄڵ尡 ³Î¸® º¸±ÞµÇ±â Àü¿¡
piconv -f euc-kr -t utf8 < file.euckr > file.utf8
piconv -f utf8 -t euc-kr < file.utf8 > file.euckr
-¶Ç, 'encoding' ¸ðµâÀ» ½á¼­ Çѱ¹¾î ÀÎÄÚµùÀ» ¾²¸é¼­ ±ÛÀÚ ´ÜÀ§
+ ¶Ç, 'PerlIO::encoding' ¸ðµâÀ» ½á¼­ Çѱ¹¾î ÀÎÄÚµùÀ» ¾²¸é¼­ ±ÛÀÚ ´ÜÀ§
(¹ÙÀÌÆ® ´ÜÀ§°¡ ¾Æ´Ï¶ó) 󸮸¦ ½±°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù.
- #!/usr/local/bin/perl
+ #!/path/to/perl
use encoding 'euc-kr', STDIN => 'euc-kr',
STDOUT-> 'euc-kr', STDERR=>'euc-kr';
@@ -101,15 +117,16 @@ perlunicode ¸Å´º¾óÀ» Âü°íÇϽʽÿÀ.) À¯´ÏÄڵ尡 ³Î¸® º¸±ÞµÇ±â Àü¿¡
=head2 ´õ ÀÚ¼¼È÷ ¾Ë°í ½ÍÀ¸¸é...
-PerlÀ» ¼³Ä¡ÇÏ¸é ´ë´ÜÈ÷ ÀÚ¼¼ÇÑ ¹®¼­°¡ °°ÀÌ µû¶ó ¿À¸ç, ÀÌ ¹®¼­¸¦ ÅëÇØ
+ PerlÀ» ¼³Ä¡ÇÏ¸é ´ë´ÜÈ÷ ÀÚ¼¼ÇÑ ¹®¼­°¡ °°ÀÌ µû¶ó ¿À¸ç, ÀÌ ¹®¼­¸¦ ÅëÇØ
Perl Àü¹Ý »Ó ¾Æ´Ï¶ó À¯´ÏÄÚµå Áö¿ø, EncodeÀÇ »ç¿ë¹ý µî¿¡ ¸¹Àº °ÍÀ»
-¹è¿ï ¼ö ÀÖ½À´Ï´Ù. ºÒÇàÈ÷µµ ÀÌ ¹®¼­´Â ÇöÀç ¸ðµÎ ¿µ¾î·Î ¾²¿© ÀÖ½À´Ï´Ù.
-ÀÌ ¹®¼­ ¿Ü¿¡µµ ´ÙÀ½°ú °°Àº ÀÚ·á°¡ ÀÖ½À´Ï´Ù. ÀÌ ¸ñ·ÏÀº °áÄÚ
-¿ÏÀüÇÑ °ÍÀÌ ¾Æ´Ï°í ÀϺΠ´ëÇ¥ÀûÀÎ °Í¸¸ ¸ðÀº °ÍÀÔ´Ï´Ù.
+¹è¿ï ¼ö ÀÖ½À´Ï´Ù. ¾ÆÁ÷ ÀÌ ¹®¼­´Â ÇöÀç ¸ðµÎ ¿µ¾î·Î ¾²¿© ÀÖ½À´Ï´Ù.
=head2 Perl °ü·Ã ÀÚ·á
+À§¿¡¼­ ¾ð±ÞÇÑ ¹®¼­ ¿Ü¿¡µµ ´ÙÀ½°ú °°Àº ÀÚ·á°¡ ÀÖ½À´Ï´Ù. ÀÌ ¸ñ·ÏÀº °áÄÚ
+¿ÏÀüÇÑ °ÍÀÌ ¾Æ´Ï°í ÀϺΠ´ëÇ¥ÀûÀÎ °Í¸¸ ¸ðÀº °ÍÀÔ´Ï´Ù.
+
=over 4
=item L<http://www.perl.com/>
@@ -161,7 +178,7 @@ Perl Àü¹Ý »Ó ¾Æ´Ï¶ó À¯´ÏÄÚµå Áö¿ø, EncodeÀÇ »ç¿ë¹ý µî¿¡ ¸¹Àº °ÍÀ»
=back
-=head2 À¯´ÏÄÚµå °ü·Ã ÀÚ·á
+=head2 À¯´ÏÄÚµå ¹× Çѱ¹¾î ÀÎÄÚµù °ü·Ã ÀÚ·á
=over 4
@@ -174,6 +191,10 @@ Perl Àü¹Ý »Ó ¾Æ´Ï¶ó À¯´ÏÄÚµå Áö¿ø, EncodeÀÇ »ç¿ë¹ý µî¿¡ ¸¹Àº °ÍÀ»
±âº»ÀûÀ¸·Î Unicode¿Í °°Àº ISO Ç¥ÁØÀÎ ISO/IEC 10646 UCS(Universal
Character Set)À» ¸¸µå´Â ISO/IEC JTC1/SC2/WG2ÀÇ À¥ ÆäÀÌÁö.
+=item L<http://jshin.net/faq/qa8.html>
+
+ Çѱ¹¾î ¹®ÀÚ ÁýÇÕ ¹× ÀÎÄÚµù¿¡ ´ëÇÑ ¾È³».
+
=item L<htp://www.cl.cam.ac.uk/~mgk25/unicode.html>
À¯´Ð½º/¸®´ª½º¿¡¼­ À¯´ÏÄÚµå¿Í UTF-8 »ç¿ë¿¡ ´ëÇÑ ¹®´äÁý(FAQ)
@@ -184,9 +205,14 @@ Character Set)À» ¸¸µå´Â ISO/IEC JTC1/SC2/WG2ÀÇ À¥ ÆäÀÌÁö.
=back
+=head1 SEE ALSO
+
+L<Encode>, L<Encode::KR>, L<encoding>, L<perluniintro>, L<perlunicode>
+
+
=head1 AUTHORS
Jarkko Hietaniemi E<lt>jhi@iki.fiE<gt>
-½ÅÁ¤½Ä E<lt>jshin@mailaps.org<gt>
+½ÅÁ¤½Ä E<lt>jshin@mailaps.orgE<gt>
=cut
diff --git a/README.vos b/README.vos
index 880790865c..624e77e2c1 100644
--- a/README.vos
+++ b/README.vos
@@ -44,7 +44,7 @@ using the VOS Standard C Cross-compiler. You must build perl on
VOS Release 14.1.0 (or later) on an XA/R or Continuum platform.
This version of perl is properly called "miniperl" because it
-does not contain the full perl functionality.
+does not contain the complete perl functionality.
You must build perl with the compile_perl.cm command macro found
in the vos subdirectory.
@@ -58,7 +58,7 @@ perl on VOS Release 14.1.0 (or later) on an XA/R or Continuum
platform.
This version of perl is properly called "miniperl" because it
-does not contain the full perl functionality.
+does not contain the complete perl functionality.
You must build perl with the compile_perl.cm command macro found
in the vos subdirectory.
@@ -73,7 +73,7 @@ on VOS Release 14.1.0 (or later) on an XA/R or Continuum
platform.
This version of perl is properly called "miniperl" because it
-does not contain the full perl functionality.
+does not contain the complete perl functionality.
You must build perl with the compile_perl.cm command macro found
in the vos subdirectory.
@@ -81,14 +81,14 @@ in the vos subdirectory.
=item 4
If you have a Stratus Continuum (PARISC-based) platform that is
-running VOS Release 14.3.0 through VOS Release 14.4.0, you must
+running VOS Release 14.3.0 through VOS Release 14.4.1, you must
build perl using the generally-available version of VOS POSIX
support, and using either the VOS Standard C compiler or the VOS
GNU C compiler. You must build perl on VOS Release 14.3.0 (or
later) on a Continuum platform.
This version of perl is properly called "miniperl" because it
-does not contain the full perl functionality.
+does not contain the complete perl functionality.
You must build perl with the compile_perl.cm command macro found
in the vos subdirectory.
@@ -96,17 +96,17 @@ in the vos subdirectory.
=item 5
If you have a Stratus Continuum (PA-RISC-based) platform that is
-running VOS Release 14.4.1 or later, you must build perl using
-the generally-available version of VOS POSIX support. You must
-use the VOS GNU C compiler and the VOS GNU Tools product. You
-must build perl on VOS Release 14.4.1 (or later) on a Continuum
-platform.
-
-This version of perl is properly called "full perl" because it
-contains the full perl functionality.
-
-You must use the supplied Configure script and makefiles to build
-perl.
+running VOS Release 14.5.0 or later, you can either use the
+previous method to build "miniperl" or you can build "full
+perl", which contains the complete functionality of perl. I
+strongly recommend that you build full perl. To build full
+perl, you must use the generally-available version of VOS POSIX
+support. You must use the VOS GNU C compiler and the VOS GNU
+C/C++ and GNU Tools Release 2.0.1 product. You must build full
+perl on VOS Release 14.5.0 (or later) on a Continuum platform.
+
+You must build full perl with the compile_full_perl.cm command
+macro found in the vos subdirectory.
=back
@@ -223,20 +223,11 @@ execute on the PA7100, PA8000, PA8500 and PA8600 processors, and
that code compiled for the pa8000 processor type can execute on
the PA8000, PA8500 and PA8600 processors.
-To build perl using the supplied Configure script and makefiles,
-execute the following commands.
-
- !add_library_path command >system>gnu_library>bin -after '(current_dir)'
- !bash
- gzip -d perl-5.8.0.tar.gz
- tar -xvf perl-5.8.0.tar
- cd perl-5.8.0
- Configure -d
- gmake
-
-If you wish to run the test cases, type:
-
- gmake test
+To build full perl using the supplied Configure script and
+makefiles, change to the "vos" subdirectory and type the command
+"compile_full_perl" or "start_process compile_full_perl". This
+will configure, build, and test perl. All of the test cases
+that are executed should pass.
=head2 Installing Perl 5 on VOS
@@ -343,6 +334,6 @@ Paul Green (Paul.Green@stratus.com)
=head1 LAST UPDATE
-February 15, 2001
+May 5, 2002
=cut
diff --git a/configpm b/configpm
index a22f9a2404..87df478960 100755
--- a/configpm
+++ b/configpm
@@ -1,7 +1,36 @@
#!./miniperl -w
-my $config_pm = $ARGV[0] || 'lib/Config.pm';
+# following options are recognized:
+# --no-glossary - no glossary file inclusion, for compactness
+# --cross=PALTFORM - crosscompiling for PLATFORM
+my %opts = (
+ # %known_opts enumerates allowed opts as well as specifies default and initial values
+ my %known_opts = (
+ 'cross' => '',
+ 'glossary' => 1,
+ ),
+ # options itself
+ my %specified_opts = (
+ (map {/^--([\-_\w]+)=(.*)$/} @ARGV), # --opt=smth
+ (map {/^no-?(.*)$/i?($1=>0):($_=>1)} map {/^--([\-_\w]+)$/} @ARGV), # --opt --no-opt --noopt
+ ),
+);
+die "option '$_' is not recognized" for grep {!exists $known_opts{$_}} keys %specified_opts;
+@ARGV = grep {!/^--/} @ARGV;
+
+my $config_pm;
my $glossary = $ARGV[1] || 'Porting/Glossary';
+
+if ($opts{cross}) {
+ # creating cross-platform config file
+ mkdir "xlib";
+ mkdir "xlib/$opts{cross}";
+ $config_pm = $ARGV[0] || "xlib/$opts{cross}/Config.pm";
+}
+else {
+ $config_pm = $ARGV[0] || 'lib/Config.pm';
+}
+
@ARGV = "./config.sh";
# list names to put first (and hence lookup fastest)
@@ -414,7 +443,9 @@ in such cases.
ENDOFTAIL
-open(GLOS, "<$glossary") or die "Can't open $glossary: $!";
+if ($opts{glossary}) {
+ open(GLOS, "<$glossary") or die "Can't open $glossary: $!";
+}
%seen = ();
$text = 0;
$/ = '';
@@ -468,10 +499,12 @@ EOF
s/n[\0]t/n't/g; # undo can't, won't damage
}
-<GLOS>; # Skip the preamble
-while (<GLOS>) {
- process;
- print CONFIG;
+if ($opts{glossary}) {
+ <GLOS>; # Skip the preamble
+ while (<GLOS>) {
+ process;
+ print CONFIG;
+ }
}
print CONFIG <<'ENDOFTAIL';
@@ -491,6 +524,33 @@ ENDOFTAIL
close(CONFIG);
close(GLOS);
+# Now create Cross.pm if needed
+if ($opts{cross}) {
+ open CROSS, ">lib/Cross.pm" or die "Can not open >lib/Cross.pm: $!";
+ my $cross = <<'EOS';
+# typical invocation:
+# perl -MCross Makefile.PL
+# perl -MCross=wince -V:cc
+package Cross;
+
+sub import {
+ my ($package,$platform) = @_;
+ unless (defined $platform) {
+ # if $platform is not specified, then use last one when
+ # 'configpm; was invoked with --cross option
+ $platform = '***replace-marker***';
+ }
+ @INC = map {/\blib\b/?(do{local $_=$_;s/\blib\b/xlib\/$platform/;$_},$_):($_)} @INC;
+}
+
+1;
+EOS
+ $cross =~ s/\*\*\*replace-marker\*\*\*/$opts{cross}/g;
+ print CROSS $cross;
+ close CROSS;
+}
+
+
# Now do some simple tests on the Config.pm file we have created
unshift(@INC,'lib');
require $config_pm;
diff --git a/ext/Data/Dumper/Dumper.xs b/ext/Data/Dumper/Dumper.xs
index 383707a4e3..11a97d2465 100644
--- a/ext/Data/Dumper/Dumper.xs
+++ b/ext/Data/Dumper/Dumper.xs
@@ -574,10 +574,12 @@ DD_dump(pTHX_ SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv,
/* foreach (keys %hash) */
for (i = 0; 1; i++) {
- char *nkey = NULL;
+ char *nkey;
+ char *nkey_buffer = NULL;
I32 nticks = 0;
SV* keysv;
STRLEN keylen;
+ I32 nlen;
bool do_utf8 = FALSE;
if ((sortkeys && !(keys && (I32)i <= av_len(keys))) ||
@@ -592,7 +594,8 @@ DD_dump(pTHX_ SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv,
svp = av_fetch(keys, i, FALSE);
keysv = svp ? *svp : sv_mortalcopy(&PL_sv_undef);
key = SvPV(keysv, keylen);
- svp = hv_fetch((HV*)ival, key, keylen, 0);
+ svp = hv_fetch((HV*)ival, key,
+ SvUTF8(keysv) ? -keylen : keylen, 0);
hval = svp ? *svp : sv_mortalcopy(&PL_sv_undef);
}
else {
@@ -604,22 +607,39 @@ DD_dump(pTHX_ SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv,
key = SvPV(keysv, keylen);
klen = keylen;
- if (do_utf8) {
- char *okey = SvPVX(retval) + SvCUR(retval);
- I32 nlen;
+ sv_catsv(retval, totpad);
+ sv_catsv(retval, ipad);
+ /* old logic was first to check utf8 flag, and if utf8 always
+ call esc_q_utf8. This caused test to break under -Mutf8,
+ because there even strings like 'c' have utf8 flag on.
+ Hence with quotekeys == 0 the XS code would still '' quote
+ them based on flags, whereas the perl code would not,
+ based on regexps.
+ The perl code is correct.
+ needs_quote() decides that anything that isn't a valid
+ perl identifier needs to be quoted, hence only correctly
+ formed strings with no characters outside [A-Za-z0-9_:]
+ won't need quoting. None of those characters are used in
+ the byte encoding of utf8, so anything with utf8
+ encoded characters in will need quoting. Hence strings
+ with utf8 encoded characters in will end up inside do_utf8
+ just like before, but now strings with utf8 flag set but
+ only ascii characters will end up in the unquoted section.
- sv_catsv(retval, totpad);
- sv_catsv(retval, ipad);
- nlen = esc_q_utf8(aTHX_ retval, key, klen);
-
- sname = newSVsv(iname);
- sv_catpvn(sname, okey, nlen);
- sv_catpvn(sname, "}", 1);
- }
- else {
- if (quotekeys || needs_quote(key)) {
+ There should also be less tests for the (probably currently)
+ more common doesn't need quoting case.
+ The code is also smaller (22044 vs 22260) because I've been
+ able to pull the comon logic out to both sides. */
+ if (quotekeys || needs_quote(key)) {
+ if (do_utf8) {
+ STRLEN ocur = SvCUR(retval);
+ nlen = esc_q_utf8(aTHX_ retval, key, klen);
+ nkey = SvPVX(retval) + ocur;
+ }
+ else {
nticks = num_q(key, klen);
- New(0, nkey, klen+nticks+3, char);
+ New(0, nkey_buffer, klen+nticks+3, char);
+ nkey = nkey_buffer;
nkey[0] = '\'';
if (nticks)
klen += esc_q(nkey+1, key, klen);
@@ -627,20 +647,19 @@ DD_dump(pTHX_ SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv,
(void)Copy(key, nkey+1, klen, char);
nkey[++klen] = '\'';
nkey[++klen] = '\0';
+ nlen = klen;
+ sv_catpvn(retval, nkey, klen);
}
- else {
- New(0, nkey, klen, char);
- (void)Copy(key, nkey, klen, char);
- }
-
- sname = newSVsv(iname);
- sv_catpvn(sname, nkey, klen);
- sv_catpvn(sname, "}", 1);
-
- sv_catsv(retval, totpad);
- sv_catsv(retval, ipad);
- sv_catpvn(retval, nkey, klen);
+ }
+ else {
+ nkey = key;
+ nlen = klen;
+ sv_catpvn(retval, nkey, klen);
}
+ sname = newSVsv(iname);
+ sv_catpvn(sname, nkey, nlen);
+ sv_catpvn(sname, "}", 1);
+
sv_catpvn(retval, " => ", 4);
if (indent >= 2) {
char *extra;
@@ -661,7 +680,7 @@ DD_dump(pTHX_ SV *val, char *name, STRLEN namelen, SV *retval, HV *seenhv,
freezer, toaster, purity, deepcopy, quotekeys, bless,
maxdepth, sortkeys);
SvREFCNT_dec(sname);
- Safefree(nkey);
+ Safefree(nkey_buffer);
if (indent >= 2)
SvREFCNT_dec(newapad);
}
diff --git a/ext/Data/Dumper/t/dumper.t b/ext/Data/Dumper/t/dumper.t
index d33af74c76..9c7f0a6870 100755
--- a/ext/Data/Dumper/t/dumper.t
+++ b/ext/Data/Dumper/t/dumper.t
@@ -67,11 +67,11 @@ sub TEST {
$Data::Dumper::Useperl = 1;
if (defined &Data::Dumper::Dumpxs) {
print "### XS extension loaded, will run XS tests\n";
- $TMAX = 339; $XS = 1;
+ $TMAX = 357; $XS = 1;
}
else {
print "### XS extensions not loaded, will NOT run XS tests\n";
- $TMAX = 171; $XS = 0;
+ $TMAX = 180; $XS = 0;
}
print "1..$TMAX\n";
@@ -1310,3 +1310,46 @@ EOT
TEST q(Data::Dumper->Dumpxs([$a])), "XS utf8 flag with '";
}
}
+
+# Jarkko found that -Mutf8 caused some tests to fail. Turns out that there
+# was an otherwise untested code path in the XS for utf8 hash keys with purity
+# 1
+
+{
+ $WANT = <<'EOT';
+#$ping = \*::ping;
+#*::ping = \5;
+#*::ping = {
+# "\x{decaf}\x{decaf}\x{decaf}\x{decaf}" => do{my $o}
+#};
+#*::ping{HASH}->{"\x{decaf}\x{decaf}\x{decaf}\x{decaf}"} = *::ping{SCALAR};
+#%pong = %{*::ping{HASH}};
+EOT
+ local $Data::Dumper::Purity = 1;
+ local $Data::Dumper::Sortkeys;
+ $ping = 5;
+ %ping = (chr (0xDECAF) x 4 =>\$ping);
+ for $Data::Dumper::Sortkeys (0, 1) {
+ TEST q(Data::Dumper->Dump([\\*ping, \\%ping], ['*ping', '*pong']));
+ TEST q(Data::Dumper->Dumpxs([\\*ping, \\%ping], ['*ping', '*pong'])) if $XS;
+ }
+}
+
+# XS for quotekeys==0 was not being defensive enough against utf8 flagged
+# scalars
+
+{
+ $WANT = <<'EOT';
+#$VAR1 = {
+# perl => 'rocks'
+#};
+EOT
+ local $Data::Dumper::Quotekeys = 0;
+ my $k = 'perl' . chr 256;
+ chop $k;
+ %foo = ($k => 'rocks');
+
+ TEST q(Data::Dumper->Dump([\\%foo])), "quotekeys == 0 for utf8 flagged ASCII";
+ TEST q(Data::Dumper->Dumpxs([\\%foo])),
+ "XS quotekeys == 0 for utf8 flagged ASCII" if $XS;
+}
diff --git a/ext/Digest/MD5/Changes b/ext/Digest/MD5/Changes
index 896ff5ec2c..a100886e79 100644
--- a/ext/Digest/MD5/Changes
+++ b/ext/Digest/MD5/Changes
@@ -1,3 +1,16 @@
+2002-05-05 Gisle Aas <gisle@ActiveState.com>
+
+ Release 2.20
+
+ More synchronization with tweaks Jarkko have done to the
+ bleadperl test suite. This time various EBCDIC hacks.
+
+ Outside PERL_CORE the md5-aaa.t test loaded the wrong version of
+ the module (and would fail if no previous Digest::MD5 was installed).
+ Patch by Mike Stok <mike@stok.co.uk>
+
+
+
2002-05-01 Gisle Aas <gisle@ActiveState.com>
Release 2.19
diff --git a/ext/Digest/MD5/MD5.pm b/ext/Digest/MD5/MD5.pm
index 18dc1f6598..372e007cb7 100644
--- a/ext/Digest/MD5/MD5.pm
+++ b/ext/Digest/MD5/MD5.pm
@@ -3,7 +3,7 @@ package Digest::MD5;
use strict;
use vars qw($VERSION @ISA @EXPORT_OK);
-$VERSION = '2.19'; # $Date: 2002/05/02 02:40:12 $
+$VERSION = '2.20'; # $Date: 2002/05/06 05:15:09 $
require Exporter;
*import = \&Exporter::import;
diff --git a/ext/Digest/MD5/t/files.t b/ext/Digest/MD5/t/files.t
index 5d25322f35..c020559eba 100644
--- a/ext/Digest/MD5/t/files.t
+++ b/ext/Digest/MD5/t/files.t
@@ -23,17 +23,17 @@ my $EXPECT;
if (ord "A" == 193) { # EBCDIC
$EXPECT = <<EOT;
-a1ee2b18d1e05bdde3a93009e7f9dfda Changes
-5a591a47e8c40fe4b78c744111511c45 README
-c9c83e6dbad5f41722338e67d4428077 MD5.pm
-4850753428db9422e8e5f97b401d5a13 MD5.xs
-276da0aa4e9a08b7fe09430c9c5690aa rfc1321.txt
+b362148b17a451f0d81e0ebb2487756e Changes
+5a591a47e8c40fe4b78c744111511c45 README
+3157e2d2e27dacddea7c54efddc32520 MD5.pm
+4850753428db9422e8e5f97b401d5a13 MD5.xs
+276da0aa4e9a08b7fe09430c9c5690aa rfc1321.txt
EOT
} else {
$EXPECT = <<EOT;
-3866f3543ef41421c6aed3f198e2e9f5 Changes
+0106b67df0dbf9f4d65e9fc04907745b Changes
3519f3d02c7c91158f732f0f00064657 README
-01cd8fd24bd46ce1db53074d2af6001a MD5.pm
+88c35ca46c7e8069fb5ae00c091c98d6 MD5.pm
1be293491bba726810f8e87671ee0328 MD5.xs
754b9db19f79dbc4992f7166eb0f37ce rfc1321.txt
EOT
@@ -74,9 +74,9 @@ for (split /^/, $EXPECT) {
next;
}
if ($ENV{EBCDIC_MD5SUM}) {
- use Encode 'from_to';
+ require Encode;
my $data = cat_file($file);
- from_to($data, 'latin1', 'cp1047');
+ Encode::from_to($data, 'latin1', 'cp1047');
print md5_hex($data), " $base\n";
next;
}
diff --git a/ext/Digest/MD5/t/md5-aaa.t b/ext/Digest/MD5/t/md5-aaa.t
index 3069a06089..1ccd59b749 100644
--- a/ext/Digest/MD5/t/md5-aaa.t
+++ b/ext/Digest/MD5/t/md5-aaa.t
@@ -1,6 +1,6 @@
BEGIN {
- chdir 't' if -d 't';
if ($ENV{PERL_CORE}) {
+ chdir 't' if -d 't';
@INC = '../lib';
}
}
diff --git a/ext/Encode/AUTHORS b/ext/Encode/AUTHORS
index a61622c341..0c7dda8e48 100644
--- a/ext/Encode/AUTHORS
+++ b/ext/Encode/AUTHORS
@@ -17,6 +17,7 @@ Craig A. Berry <craigberry@mac.com>
Dan Kogai <dankogai@dan.co.jp>
Elizabeth Mattijsen <liz@dijkmat.nl>
Gerrit P. Haase <gp@familiehaase.de>
+Graham Barr <gbarr@pobox.com>
Gurusamy Sarathy <gsar@activestate.com>
H.Merijn Brand <h.m.brand@hccnet.nl>
Jarkko Hietaniemi <jhi@iki.fi>
diff --git a/ext/Encode/Changes b/ext/Encode/Changes
index 966a53efda..5cd481047e 100644
--- a/ext/Encode/Changes
+++ b/ext/Encode/Changes
@@ -1,9 +1,44 @@
# Revision history for Perl extension Encode.
#
-# $Id: Changes,v 1.68 2002/05/03 12:20:13 dankogai Exp $
+# $Id: Changes,v 1.70 2002/05/06 10:26:48 dankogai Exp dankogai $
#
-$Revision: 1.68 $ $Date: 2002/05/03 12:20:13 $
+$Revision: 1.70 $ $Date: 2002/05/06 10:26:48 $
+! encoding.pm
+ Made more 'module-safe' with conjunction w/ 'no encoding'.
+ Message-Id: <EAB48C16-60DA-11D6-9982-00039301D480@dan.co.jp>
+! lib/Encode/Encoding.pm
+ 'require Encode' because ->Define uses Encode::define_encoding();
+ problem and solution addressed by Miyagawa-kun
+ Message-Id: <86znzdfvuh.wl@mail.edge.co.jp>
+! t/Unicode.t
+ Cuts the frill to make djgpp happier, as suggested by Laszlo
+ Message-Id: <20020506105819.H17012@libra.eth.ericsson.se>
+! bin/enc2xs
+ enc2xs no longer overwrites files w/ -M option, as suggested by Andreas
+ Message-Id: <m3bsbug48n.fsf@anima.de>
+
+1.69 2002/05/04 16:41:18
+! lib/Encode/MIME/Header
+ Floating-point coerced for UNICOS (in integer arithmetics it folds
+ line one character too early). Verification by Mark is pending.
+ Message-Id: <C670F60D-5F4F-11D6-A5CA-00039301D480@dan.co.jp>
+! Unicode/Unicode.pm
+ more doc patch from Elizabeth
+ Message-Id: <4.2.0.58.20020503210946.02f4ed30@mickey.dijkmat.nl>
+! Encode/Makefile_PL.e2x
+ More platform-independent patch from Benjamin
+ Message-Id: <3CD31BE0.69F79B06@earthlink.net>
+! lib/Encode/Guess AUTHORS
+ split regex fix by Graham Barr. Adds him to AUTHORS.
+ Message-Id: <20020504085419.E95940@valueclick.com>
+! Encode/Makefile_PL.e2x
+ enc2xs script discovery made smarter and more sensible, first cited
+ by Miyagawa-kun and further suggestions by Rafael and Andreas
+! Encode.pm lib/Encode/Guess.pm t/fallback.t t/guess.t t/mime-header.t
+ "The EBCDIC remapping of the low 256 bites again" #16372 by jhi
+
+1.68 2002/05/03 12:20:13
! lib/Encode/Alias.pm lib/Encode/Supported.pod t/Alias.t AUTHORS
UCS-4 added to aliases of UTF-32 by Elizabeth Mattijsen. Alias.t
and Supported.pod modified to reflect the change. Elizabeth added
@@ -583,7 +618,7 @@ $Revision: 1.68 $ $Date: 2002/05/03 12:20:13 $
Typo fixes and improvements by jhi
Message-Id: <200204010201.FAA03564@alpha.hut.fi>, et al.
-1.11 $Date: 2002/05/03 12:20:13 $
+1.11 $Date: 2002/05/06 10:26:48 $
+ t/encoding.t
+ t/jperl.t
! MANIFEST
diff --git a/ext/Encode/Encode.pm b/ext/Encode/Encode.pm
index b9febc9961..20bee0c04c 100644
--- a/ext/Encode/Encode.pm
+++ b/ext/Encode/Encode.pm
@@ -1,9 +1,9 @@
#
-# $Id: Encode.pm,v 1.68 2002/05/03 12:20:31 dankogai Exp $
+# $Id: Encode.pm,v 1.70 2002/05/06 10:27:11 dankogai Exp dankogai $
#
package Encode;
use strict;
-our $VERSION = do { my @r = (q$Revision: 1.68 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+our $VERSION = do { my @r = (q$Revision: 1.70 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
our $DEBUG = 0;
use XSLoader ();
XSLoader::load(__PACKAGE__, $VERSION);
diff --git a/ext/Encode/Encode/Makefile_PL.e2x b/ext/Encode/Encode/Makefile_PL.e2x
index 78cf91b1e1..0e73823b42 100644
--- a/ext/Encode/Encode/Makefile_PL.e2x
+++ b/ext/Encode/Encode/Makefile_PL.e2x
@@ -18,8 +18,8 @@ my %tables = (
require File::Spec;
my ($enc2xs, $encode_h) = ();
PATHLOOP:
-for my $d (@Config{qw/bin sitebin vendorbin/},
- (split /:/, $ENV{PATH})){
+for my $d (@Config{qw/bin sitebin vendorbin/},
+ (split /$Config{path_sep}/o, $ENV{PATH})){
for my $f (qw/enc2xs enc2xs5.7.3/){
my $path = File::Spec->catfile($d, $f);
-x $path and $enc2xs = $path and last PATHLOOP;
diff --git a/ext/Encode/Unicode/Unicode.pm b/ext/Encode/Unicode/Unicode.pm
index 67241af399..fa508ebb7b 100644
--- a/ext/Encode/Unicode/Unicode.pm
+++ b/ext/Encode/Unicode/Unicode.pm
@@ -3,7 +3,7 @@ package Encode::Unicode;
use strict;
use warnings;
-our $VERSION = do { my @r = (q$Revision: 1.36 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+our $VERSION = do { my @r = (q$Revision: 1.37 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
use XSLoader;
XSLoader::load(__PACKAGE__,$VERSION);
@@ -288,7 +288,8 @@ for UTF-8, which is a native format in perl).
I<Character Encoding Scheme> A character encoding form plus byte
serialization. There are seven character encoding schemes in Unicode:
-UTF-8, UTF-16, UTF-16BE, UTF-16LE, UTF-32, UTF-32BE and UTF-32LE.
+UTF-8, UTF-16, UTF-16BE, UTF-16LE, UTF-32 (UCS-4), UTF-32BE (UCS-4BE) and
+UTF-32LE (UCS-4LE).
=item Quick Reference
@@ -330,7 +331,7 @@ form a character. Bogus surrogates result in death. When \x{10000}
or above is encountered during encode(), it C<ensurrogate>s them and
pushes the surrogate pair to the output stream.
-UTF-32 is a fixed-length encoding with each character taking 32 bits.
+UTF-32 (UCS-4) is a fixed-length encoding with each character taking 32 bits.
Since it is 32-bit, there is no need for I<surrogate pairs>.
=head2 by endianness
@@ -434,10 +435,11 @@ every one of \x{0000_0000} up to \x{ffff_ffff} (*) is I<a character>.
=head1 SEE ALSO
L<Encode>, L<http://www.unicode.org/glossary/>,
+L<http://www.unicode.org/unicode/faq/utf_bom.html>,
RFC 2781 L<http://rfc.net/rfc2781.html>,
-L<http://www.unicode.org/unicode/faq/utf_bom.html>
+The whole Unicode standard L<http://www.unicode.org/unicode/uni2book/u2.html>
Ch. 15, pp. 403 of C<Programming Perl (3rd Edition)>
by Larry Wall, Tom Christiansen, Jon Orwant;
diff --git a/ext/Encode/bin/enc2xs b/ext/Encode/bin/enc2xs
index 554167ab42..f2287d4675 100644
--- a/ext/Encode/bin/enc2xs
+++ b/ext/Encode/bin/enc2xs
@@ -8,7 +8,7 @@ BEGIN {
use strict;
use Getopt::Std;
my @orig_ARGV = @ARGV;
-our $VERSION = do { my @r = (q$Revision: 1.25 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+our $VERSION = do { my @r = (q$Revision: 1.26 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
# These may get re-ordered.
# RAW is a do_now as inserted by &enter
@@ -888,15 +888,10 @@ sub make_makefile_pl
$_Now = scalar localtime();
eval { require File::Spec; };
- warn "Generating Makefile.PL\n";
_print_expand(File::Spec->catfile($_E2X,"Makefile_PL.e2x"),"Makefile.PL");
- warn "Generating $_Name.pm\n";
_print_expand(File::Spec->catfile($_E2X,"_PM.e2x"), "$_Name.pm");
- warn "Generating t/$_Name.t\n";
_print_expand(File::Spec->catfile($_E2X,"_T.e2x"), "t/$_Name.t");
- warn "Generating README\n";
_print_expand(File::Spec->catfile($_E2X,"README.e2x"), "README");
- warn "Generating t/$_Name.t\n";
_print_expand(File::Spec->catfile($_E2X,"Changes.e2x"), "Changes");
exit;
}
@@ -943,9 +938,9 @@ sub make_configlocal_pm
$_LocalVer = _mkversion();
$_E2X = find_e2x();
$_Inc = $INC{"Encode.pm"}; $_Inc =~ s/\.pm$//o;
- warn "Writing ", File::Spec->catfile($_Inc,"ConfigLocal.pm"), "\n";
_print_expand(File::Spec->catfile($_E2X,"ConfigLocal_PM.e2x"),
- File::Spec->catfile($_Inc,"ConfigLocal.pm"));
+ File::Spec->catfile($_Inc,"ConfigLocal.pm"),
+ 1);
exit;
}
@@ -959,7 +954,12 @@ sub _print_expand{
eval { require File::Basename; };
$@ and die "File::Basename needed. Are you on miniperl?;\nerror: $@\n";
File::Basename->import();
- my ($src, $dst) = @_;
+ my ($src, $dst, $clobber) = @_;
+ if (!$clobber and -e $dst){
+ warn "$dst exists. skipping\n";
+ return;
+ }
+ warn "Generating $dst...\n";
open my $in, $src or die "$src : $!";
if ((my $d = dirname($dst)) ne '.'){
-d $d or mkdir $d, 0755 or die "mkdir $d : $!";
diff --git a/ext/Encode/encoding.pm b/ext/Encode/encoding.pm
index efa5f3113b..0aa5f0f635 100644
--- a/ext/Encode/encoding.pm
+++ b/ext/Encode/encoding.pm
@@ -1,5 +1,5 @@
package encoding;
-our $VERSION = do { my @r = (q$Revision: 1.34 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+our $VERSION = do { my @r = (q$Revision: 1.35 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
use Encode;
use strict;
@@ -75,8 +75,13 @@ sub import {
sub unimport{
no warnings;
undef ${^ENCODING};
+ if ($HAS_PERLIO){
+ binmode(STDIN, ":raw");
+ binmode(STDOUT, ":raw");
+ }else{
binmode(STDIN);
binmode(STDOUT);
+ }
if ($INC{"Filter/Util/Call.pm"}){
eval { filter_del() };
}
@@ -193,10 +198,16 @@ reset to ":raw" (the default unprocessed raw stream of bytes).
=head2 NOT SCOPED
The pragma is a per script, not a per block lexical. Only the last
-C<use encoding> or C<no encoding> matters, and it affects B<the whole script>.
-However, the <no encoding> pragma is supported and C<use encoding> can
-appear as many times as you want in a given script. The multiple use
-of this pragma is discouraged.
+C<use encoding> or C<no encoding> matters, and it affects
+B<the whole script>. However, the <no encoding> pragma is supported and
+B<use encoding> can appear as many times as you want in a given script.
+The multiple use of this pragma is discouraged.
+
+Because of this nature, the use of this pragma inside the module is
+strongly discouraged (because the influence of this pragma lasts not
+only for the module but the script that uses). But if you have to,
+make sure you say C<no encoding> at the end of the module so you
+contain the influence of the pragma within the module.
=head2 DO NOT MIX MULTIPLE ENCODINGS
diff --git a/ext/Encode/lib/Encode/Alias.pm b/ext/Encode/lib/Encode/Alias.pm
index a6172ed3a9..1cc54bf7fa 100644
--- a/ext/Encode/lib/Encode/Alias.pm
+++ b/ext/Encode/lib/Encode/Alias.pm
@@ -128,13 +128,13 @@ sub init_aliases
define_alias( qr/^(.*)$/ => '"\L$1"' );
# UTF/UCS stuff
- define_alias( qr/^UCS-?2-?LE$/i => '"UCS-2LE"' );
- define_alias( qr/^UCS-?2-?(BE)?$/i => '"UCS-2BE"',
+ define_alias( qr/^UCS-?2-?LE$/i => '"UCS-2LE"' );
+ define_alias( qr/^UCS-?2-?(BE)?$/i => '"UCS-2BE"',
qr/^UCS-?4-?(BE|LE)?$/i => 'uc("UTF-32$1")',
- qr/^iso-10646-1$/i => '"UCS-2BE"' );
- define_alias( qr/^UTF(16|32)-?BE$/i => '"UTF-$1BE"',
- qr/^UTF(16|32)-?LE$/i => '"UTF-$1LE"',
- qr/^UTF(16|32)$/i => '"UTF-$1"',
+ qr/^iso-10646-1$/i => '"UCS-2BE"' );
+ define_alias( qr/^UTF(16|32)-?BE$/i => '"UTF-$1BE"',
+ qr/^UTF(16|32)-?LE$/i => '"UTF-$1LE"',
+ qr/^UTF(16|32)$/i => '"UTF-$1"',
);
# ASCII
define_alias(qr/^(?:US-?)ascii$/i => '"ascii"');
diff --git a/ext/Encode/lib/Encode/Encoding.pm b/ext/Encode/lib/Encode/Encoding.pm
index 383e0f051c..1876cb73ad 100644
--- a/ext/Encode/lib/Encode/Encoding.pm
+++ b/ext/Encode/lib/Encode/Encoding.pm
@@ -1,7 +1,9 @@
package Encode::Encoding;
# Base class for classes which implement encodings
use strict;
-our $VERSION = do { my @r = (q$Revision: 1.29 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+our $VERSION = do { my @r = (q$Revision: 1.30 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+
+require Encode;
sub Define
{
diff --git a/ext/Encode/lib/Encode/Guess.pm b/ext/Encode/lib/Encode/Guess.pm
index b106a0457c..f4bfbfa664 100644
--- a/ext/Encode/lib/Encode/Guess.pm
+++ b/ext/Encode/lib/Encode/Guess.pm
@@ -2,7 +2,7 @@ package Encode::Guess;
use strict;
use Encode qw(:fallbacks find_encoding);
-our $VERSION = do { my @r = (q$Revision: 1.5 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+our $VERSION = do { my @r = (q$Revision: 1.6 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
my $Canon = 'Guess';
our $DEBUG = 0;
@@ -87,7 +87,7 @@ sub guess {
$DEBUG and warn "Added: ", $e->name;
}
my $nline = 1;
- for my $line (split /\r|\n|\r\n/, $octet){
+ for my $line (split /\r\n?|\n/, $octet){
# cheat 2 -- \e in the string
if ($line =~ /\e/o){
my @keys = keys %try;
diff --git a/ext/Encode/lib/Encode/MIME/Header.pm b/ext/Encode/lib/Encode/MIME/Header.pm
index 683348a985..09dd55e0db 100644
--- a/ext/Encode/lib/Encode/MIME/Header.pm
+++ b/ext/Encode/lib/Encode/MIME/Header.pm
@@ -1,7 +1,7 @@
package Encode::MIME::Header;
use strict;
# use warnings;
-our $VERSION = do { my @r = (q$Revision: 1.3 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+our $VERSION = do { my @r = (q$Revision: 1.4 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
use Encode qw(find_encoding encode_utf8);
use MIME::Base64;
@@ -128,7 +128,9 @@ sub _encode{
my ($o, $str) = @_;
my $enc = $o->{encode};
my $llen = ($o->{bpl} - length(HEAD) - 2 - length(TAIL));
- $llen *= $enc eq 'B' ? 3/4 : 1/3;
+ # to coerce a floating-point arithmetics, the following contains
+ # .0 in numbers -- dankogai
+ $llen *= $enc eq 'B' ? 3.0/4.0 : 1.0/3.0;
my @result = ();
my $chunk = '';
while(my $chr = substr($str, 0, 1, '')){
diff --git a/ext/Encode/t/Unicode.t b/ext/Encode/t/Unicode.t
index bc15aaf216..798419791a 100644
--- a/ext/Encode/t/Unicode.t
+++ b/ext/Encode/t/Unicode.t
@@ -1,5 +1,5 @@
#
-# $Id: Unicode.t,v 1.8 2002/04/16 23:35:00 dankogai Exp $
+# $Id: Unicode.t,v 1.9 2002/05/06 10:26:48 dankogai Exp dankogai $
#
# This script is written entirely in ASCII, even though quoted literals
# do include non-BMP unicode characters -- Are you happy, jhi?
@@ -94,11 +94,10 @@ SKIP: {
$j == 0 and (0xD800 <= $i && $i <= 0xDFFF) and next;
$utf8 .= ord($j+$i);
}
- my $len = length($utf8);
for my $major ('UTF-16', 'UTF-32'){
for my $minor ('BE', 'LE'){
my $enc = $major.$minor;
- is(decode($enc, encode($enc, $utf8)), $utf8, "$enc RT ($len)");
+ is(decode($enc, encode($enc, $utf8)), $utf8, "$enc RT");
}
}
}
diff --git a/ext/Encode/t/mime-header.t b/ext/Encode/t/mime-header.t
index 238be30a60..098b639df4 100644
--- a/ext/Encode/t/mime-header.t
+++ b/ext/Encode/t/mime-header.t
@@ -1,5 +1,5 @@
#
-# $Id: mime-header.t,v 1.3 2002/04/26 03:07:59 dankogai Exp $
+# $Id: mime-header.t,v 1.4 2002/05/04 16:41:18 dankogai Exp $
# This script is written in utf8
#
BEGIN {
diff --git a/ext/Storable/Storable.pm b/ext/Storable/Storable.pm
index ea6080b702..e6d526929b 100644
--- a/ext/Storable/Storable.pm
+++ b/ext/Storable/Storable.pm
@@ -102,6 +102,7 @@ sub retrieve_fd { &fd_retrieve } # Backward compatibility
# By default restricted hashes are downgraded on earlier perls.
$Storable::downgrade_restricted = 1;
+$Storable::accept_future_minor = 1;
bootstrap Storable;
1;
__END__
@@ -590,6 +591,25 @@ placeholder keys and leaving the keys and all values unlocked. To make
Storable C<croak()> instead, set C<$Storable::downgrade_restricted> to
a false value. To restore the default set it back to some C<TRUE> value.
+=item files from future versions of Storable
+
+Earlier versions of Storable would immediately croak if they encountered
+a file with a higher internal version number than the reading Storable
+knew about. Internal version numbers are increased each time new data
+types (such as restricted hashes) are added to the vocabulary of the file
+format. This meant that a newer Storable module had no way of writing a
+file readable by an older Storable, even if writer didn't store newer
+data types.
+
+This version of Storable will defer croaking until it encounters a data
+type in the file that it does not recognize. This means that it will
+continue to read files generated by newer Storable modules which are careful
+in what they write out, making it easier to upgrade Storable modules in a
+mixed environment.
+
+The old behaviour of immediate croaking can be re-instated by setting
+C<$Storable::accept_future_minor> to false.
+
=back
Both these variables have no effect on a newer Perl which supports the
diff --git a/ext/Storable/Storable.xs b/ext/Storable/Storable.xs
index 05705c0877..332ed700cd 100644
--- a/ext/Storable/Storable.xs
+++ b/ext/Storable/Storable.xs
@@ -59,7 +59,7 @@
#include <XSUB.h>
#ifndef NETWARE
-#if 1
+#if 0
#define DEBUGME /* Debug mode, turns assertions on as well */
#define DASSERT /* Assertion mode */
#endif
@@ -339,6 +339,7 @@ typedef struct stcxt {
#ifndef HAS_UTF8_ALL
int use_bytes; /* whether to bytes-ify utf8 */
#endif
+ int accept_future_minor; /* croak immediately on future minor versions? */
int s_dirty; /* context is dirty due to CROAK() -- can be cleaned */
int membuf_ro; /* true means membuf is read-only and msaved is rw */
struct extendable keybuf; /* for hash key retrieval */
@@ -1204,6 +1205,9 @@ static void clean_store_context(stcxt_t *cxt)
sv_free((SV *) hook_seen);
}
+ cxt->forgive_me = -1; /* Fetched from perl if needed */
+ cxt->canonical = -1; /* Idem */
+
reset_context(cxt);
}
@@ -1249,6 +1253,7 @@ static void init_retrieve_context(stcxt_t *cxt, int optype, int is_tainted)
#ifndef HAS_UTF8_ALL
cxt->use_bytes = -1; /* Fetched from perl if needed */
#endif
+ cxt->accept_future_minor = -1; /* Fetched from perl if needed */
}
/*
@@ -1290,6 +1295,14 @@ static void clean_retrieve_context(stcxt_t *cxt)
sv_free((SV *) hseen); /* optional HV, for backward compat. */
}
+#ifndef HAS_RESTRICTED_HASHES
+ cxt->derestrict = -1; /* Fetched from perl if needed */
+#endif
+#ifndef HAS_UTF8_ALL
+ cxt->use_bytes = -1; /* Fetched from perl if needed */
+#endif
+ cxt->accept_future_minor = -1; /* Fetched from perl if needed */
+
reset_context(cxt);
}
@@ -4891,12 +4904,26 @@ magic_ok:
(version_major == STORABLE_BIN_MAJOR &&
version_minor > STORABLE_BIN_MINOR)
) {
- TRACEME(("but I am version is %d.%d", STORABLE_BIN_MAJOR,
- STORABLE_BIN_MINOR));
-
+ int croak_now = 1;
+ TRACEME(("but I am version is %d.%d", STORABLE_BIN_MAJOR,
+ STORABLE_BIN_MINOR));
+
+ if (version_major == STORABLE_BIN_MAJOR) {
+ TRACEME(("cxt->accept_future_minor is %d",
+ cxt->accept_future_minor));
+ if (cxt->accept_future_minor < 0)
+ cxt->accept_future_minor
+ = (SvTRUE(perl_get_sv("Storable::accept_future_minor",
+ TRUE))
+ ? 1 : 0);
+ if (cxt->accept_future_minor == 1)
+ croak_now = 0; /* Don't croak yet. */
+ }
+ if (croak_now) {
CROAK(("Storable binary image v%d.%d more recent than I am (v%d.%d)",
- version_major, version_minor,
- STORABLE_BIN_MAJOR, STORABLE_BIN_MINOR));
+ version_major, version_minor,
+ STORABLE_BIN_MAJOR, STORABLE_BIN_MINOR));
+ }
}
/*
@@ -5034,7 +5061,19 @@ static SV *retrieve(stcxt_t *cxt, char *cname)
TRACEME(("had retrieved #%d at 0x%"UVxf, tag, PTR2UV(sv)));
SvREFCNT_inc(sv); /* One more reference to this same sv */
return sv; /* The SV pointer where object was retrieved */
- }
+ } else if (type >= SX_ERROR && cxt->ver_minor > STORABLE_BIN_MINOR) {
+ if (cxt->accept_future_minor < 0)
+ cxt->accept_future_minor
+ = (SvTRUE(perl_get_sv("Storable::accept_future_minor",
+ TRUE))
+ ? 1 : 0);
+ if (cxt->accept_future_minor == 1) {
+ CROAK(("Storable binary image v%d.%d contains data of type %d. "
+ "This Storable is v%d.%d and can only handle data types up to %d",
+ cxt->ver_major, cxt->ver_minor, type,
+ STORABLE_BIN_MAJOR, STORABLE_BIN_MINOR, SX_ERROR - 1));
+ }
+ }
first_time: /* Will disappear when support for old format is dropped */
diff --git a/ext/Storable/t/downgrade.t b/ext/Storable/t/downgrade.t
index af5de4a62c..bbdf4dc74e 100644
--- a/ext/Storable/t/downgrade.t
+++ b/ext/Storable/t/downgrade.t
@@ -27,16 +27,6 @@ sub BEGIN {
# require 'lib/st-dump.pl';
}
-BEGIN {
- if (ord 'A' != 65) {
- die <<'EBCDIC';
-This test doesn't have EBCDIC data yet. Please run t/make_downgrade.pl using
-perl 5.8 (or later) and append its output to the end of the test.
-Please also mail the output to perlbug@perl.org so that the CPAN copy of
-Storable can be updated.
-EBCDIC
- }
-}
use Test::More;
use Storable 'thaw';
@@ -376,3 +366,127 @@ D96%U%P/EGXX``````^6?CA<'4V-H;&_#GP(````&4V-H;&_?
end
+begin 301 Locked hash
+8!049`0````$*!9FDDX6B!`````27A9F3
+
+end
+
+begin 301 Locked hash placeholder
+C!049`0````(.%`````69I).%H@H%F:23A:(`````!)>%F9,`
+
+end
+
+begin 301 Locked keys
+8!049`0````$*!9FDDX6B``````27A9F3
+
+end
+
+begin 301 Locked keys placeholder
+C!049`0````(.%`````69I).%H@H%F:23A:(`````!)>%F9,`
+
+end
+
+begin 301 Short 8 bit utf8 data
+&!047`HMS
+
+end
+
+begin 301 Short 8 bit utf8 data as bytes
+&!04*`HMS
+
+end
+
+begin 301 Long 8 bit utf8 data
+M!04!```"`(MSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMS
+MBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+
+M<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMS
+MBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+
+M<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMS
+MBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+
+M<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMS
+MBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+
+M<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMS
+MBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+
+M<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMS
+8BW.+<XMSBW.+<XMSBW.+<XMSBW.+<XMS
+
+end
+
+begin 301 Short 24 bit utf8 data
+*!047!OM30G-S50``
+
+end
+
+begin 301 Short 24 bit utf8 data as bytes
+*!04*!OM30G-S50``
+
+end
+
+begin 301 Long 24 bit utf8 data
+M!04!```&`/M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M3
+M0G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S
+M5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M3
+M0G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S
+M5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M3
+M0G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S
+M5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M3
+M0G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S
+M5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M3
+M0G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S
+M5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M3
+M0G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S
+M5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M3
+M0G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S
+M5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M3
+M0G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S
+M5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M3
+M0G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S
+M5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M3
+M0G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S
+M5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M3
+M0G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S
+M5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M3
+M0G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S
+M5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M3
+M0G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S
+M5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M3
+M0G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S
+M5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M3
+M0G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S
+M5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M3
+M0G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S
+M5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M3
+M0G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S5?M30G-S
+-5?M30G-S5?M30G-S50``
+
+end
+
+begin 301 Hash with utf8 flag but no utf8 keys
+8!049``````$*!9FDDX6B``````27A9F3
+
+end
+
+begin 301 Hash with utf8 keys
+M!049``````0*!H.!HJ.3A0`````&@X&BHY.%%P3<9')5`0````3<9')5%P?B
+F@XB3EHMS`@````;B@XB3EM\*!X.(Y:.%@:0`````!X.(Y:.%@:0`
+
+end
+
+begin 301 Locked hash with utf8 keys
+M!049`0````0*!H.!HJ.3A00````&@X&BHY.%%P3<9')5!0````3<9')5%P?B
+F@XB3EHMS!@````;B@XB3EM\*!X.(Y:.%@:0$````!X.(Y:.%@:0`
+
+end
+
+begin 301 Hash with utf8 keys for pre 5.6
+M!049``````0*!H.!HJ.3A0`````&@X&BHY.%"@>#B.6CA8&D``````>#B.6C
+FA8&D"@?B@XB3EHMS`@````;B@XB3EM\*!-QD<E4`````!-QD<E4`
+
+end
+
+begin 301 Hash with utf8 keys for 5.6
+M!049``````0*!H.!HJ.3A0`````&@X&BHY.%"@>#B.6CA8&D``````>#B.6C
+FA8&D%P?B@XB3EHMS`@````;B@XB3EM\7!-QD<E4`````!-QD<E4`
+
+end
+
diff --git a/ext/Storable/t/malice.t b/ext/Storable/t/malice.t
index be55970de8..c8edc45937 100644
--- a/ext/Storable/t/malice.t
+++ b/ext/Storable/t/malice.t
@@ -48,7 +48,7 @@ BEGIN {
# for network order, and 2 tests per byte on the 'pst0' "magic number" only
# present in files, but not in things store()ed to memory
$fancy = ($] > 5.007 ? 2 : 0);
- plan tests => 334 + length($Config{byteorder}) * 4 + $fancy * 8;
+ plan tests => 378 + length($Config{byteorder}) * 4 + $fancy * 8;
}
use Storable qw (store retrieve freeze thaw nstore nfreeze);
@@ -174,9 +174,17 @@ sub test_things {
# )
my $minor4 = $header->{minor} + 4;
substr ($copy, $file_magic + 1, 1) = chr $minor4;
- test_corrupt ($copy, $sub,
- "/^Storable binary image v$header->{major}\.$minor4 more recent than I am \\(v$header->{major}\.$minor\\)/",
- "higher minor");
+ {
+ # Now by default newer minor version numbers are not a pain.
+ $clone = &$sub($copy);
+ ok ($@, "", "by default no error on higher minor");
+ test_hash ($clone);
+
+ local $Storable::accept_future_minor = 0;
+ test_corrupt ($copy, $sub,
+ "/^Storable binary image v$header->{major}\.$minor4 more recent than I am \\(v$header->{major}\.$minor\\)/",
+ "higher minor");
+ }
$copy = $contents;
my $major1 = $header->{major} + 1;
@@ -224,6 +232,29 @@ sub test_things {
test_corrupt ($copy, $sub,
"/^Corrupted storable $what \\(binary v$header->{major}.$header->{minor}\\)/",
"bogus tag");
+
+ # Now drop the minor version number
+ substr ($copy, $file_magic + 1, 1) = chr $minor1;
+
+ test_corrupt ($copy, $sub,
+ "/^Corrupted storable $what \\(binary v$header->{major}.$minor1\\)/",
+ "bogus tag, minor less 1");
+ # Now increase the minor version number
+ substr ($copy, $file_magic + 1, 1) = chr $minor4;
+
+ # local $Storable::DEBUGME = 1;
+ # This is the delayed croak
+ test_corrupt ($copy, $sub,
+ "/^Storable binary image v$header->{major}.$minor4 contains data of type 255. This Storable is v$header->{major}.$header->{minor} and can only handle data types up to 25/",
+ "bogus tag, minor plus 4");
+ # And check again that this croak is not delayed:
+ {
+ # local $Storable::DEBUGME = 1;
+ local $Storable::accept_future_minor = 0;
+ test_corrupt ($copy, $sub,
+ "/^Storable binary image v$header->{major}\.$minor4 more recent than I am \\(v$header->{major}\.$minor\\)/",
+ "higher minor");
+ }
}
sub slurp {
diff --git a/ext/Storable/t/utf8hash.t b/ext/Storable/t/utf8hash.t
index 25d5307399..a545ac79bd 100644
--- a/ext/Storable/t/utf8hash.t
+++ b/ext/Storable/t/utf8hash.t
@@ -45,8 +45,12 @@ for $Storable::canonical (0, 1) {
# first we generate a nasty hash which keys include both utf8
# on and off with identical PVs
+no utf8; # we have a naked 8-bit byte below (in Latin 1, anyway)
+
+# In Latin 1 -ese the below ord() should end up 0xc0 (192),
+# in EBCDIC 0x64 (100). Both should end up being UTF-8/UTF-EBCDIC.
my @ords = (
- 0xc0, # LATIN CAPITAL LETTER A WITH GRAVE
+ ord("Á"), # LATIN CAPITAL LETTER A WITH GRAVE
0x3000, #IDEOGRAPHIC SPACE
);
diff --git a/hints/dec_osf.sh b/hints/dec_osf.sh
index c5889495cf..7706141ff2 100644
--- a/hints/dec_osf.sh
+++ b/hints/dec_osf.sh
@@ -354,38 +354,34 @@ case "`/usr/sbin/sizer -v`" in
*[1-4].0*) d_modfl=undef ;; # must wait till 5.0
esac
-case "$loclibpth" in
-'') ;;
-*)
+# Keep those leading tabs.
needusrshlib=''
- case "$loclibpth" in
- '') ;;
- *) for p in $loclibpth
- do
- if test -n "`ls $p/libdb.so* 2>/dev/null`"; then
- needusrshlib=yes
- fi
- if test -d $p; then
- echo "Appending $p to LD_LIBRARY_PATH." >& 4
- case "$LD_LIBRARY_PATH" in
- '') LD_LIBRARY_PATH=$p ;;
- *) LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$p ;;
- esac
- fi
- done
- echo "LD_LIBRARY_PATH is now $LD_LIBRARY_PATH." >& 4
- ;;
- esac
- # This is evil but I can't think of a nice workaround:
- # the /usr/shlib/libdb.so needs to be seen first,
- # or running Configure will fail.
- if test -n "$needusrshlib"; then
- echo "Prepending /usr/shlib to loclibpth." >& 4
- loclibpth="/usr/shlib $loclibpth"
- echo "loclibpth is now $loclibpth." >& 4
+ old_LD_LIBRARY_PATH=$LD_LIBRARY_PATH
+for p in $loclibpth
+do
+ if test -n "`ls $p/libdb.so* 2>/dev/null`"; then
+ needusrshlib=yes
fi
- ;;
+ if test -d $p; then
+ echo "Appending $p to LD_LIBRARY_PATH." >& 4
+ case "$LD_LIBRARY_PATH" in
+ '') LD_LIBRARY_PATH=$p ;;
+ *) LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$p ;;
+ esac
+ fi
+done
+case "$LD_LIBRARY_PATH" in
+"$old_LD_LIBRARY_PATH") ;;
+*) echo "LD_LIBRARY_PATH is now $LD_LIBRARY_PATH." >& 4 ;;
esac
+# This is evil but I can't think of a nice workaround:
+# the /usr/shlib/libdb.so needs to be seen first,
+# or running Configure will fail.
+if test -n "$needusrshlib"; then
+ echo "Prepending /usr/shlib to loclibpth." >& 4
+ loclibpth="/usr/shlib $loclibpth"
+ echo "loclibpth is now $loclibpth." >& 4
+fi
#
# Unset temporary variables no more needed.
diff --git a/hints/solaris_2.sh b/hints/solaris_2.sh
index 138be7b628..16c4e71aa0 100644
--- a/hints/solaris_2.sh
+++ b/hints/solaris_2.sh
@@ -96,14 +96,15 @@ EOCBU
case "$cc" in
'') if test -f /opt/SUNWspro/bin/cc; then
+ cc=/opt/SUNWspro/bin/cc
cat <<EOF >&4
-You specified no cc but you seem to have the Workshop compiler installed,
-using that. If you want something else, specify that in the command line,
+You specified no cc but you seem to have the Workshop compiler
+($cc) installed, using that.
+If you want something else, specify that in the command line,
e.g. Configure -Dcc=gcc
EOF
- cc=/opt/SUNWspro/bin/cc
fi
;;
esac
diff --git a/lib/ExtUtils/MM_NW5.pm b/lib/ExtUtils/MM_NW5.pm
index c70dc9979b..97cee2e92d 100644
--- a/lib/ExtUtils/MM_NW5.pm
+++ b/lib/ExtUtils/MM_NW5.pm
@@ -18,6 +18,7 @@ the semantics.
=cut
+use strict;
use Config;
use File::Basename;
@@ -71,7 +72,7 @@ sub const_cccmd {
return $self->{CONST_CCCMD} = <<'MAKE_FRAG';
CCCMD = $(CC) $(CCFLAGS) $(INC) $(OPTIMIZE) \
$(PERLTYPE) $(MPOLLUTE) -o $@ \
- -DVERSION=\"$(VERSION)\" -DXS_VERSION=\"$(XS_VERSION)\"
+ -DVERSION="$(VERSION)" -DXS_VERSION="$(XS_VERSION)"
MAKE_FRAG
}
@@ -247,36 +248,43 @@ PM_TO_BLIB = }.join(" \\\n\t", %{$self->{PM}}).q{
sub static_lib {
my($self) = @_;
-# Come to think of it, if there are subdirs with linkcode, we still have no INST_STATIC
-# return '' unless $self->needs_linking(); #might be because of a subdir
return '' unless $self->has_link_code;
- my(@m);
- push(@m, <<'END');
+ my $m = <<'END';
$(INST_STATIC): $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)\.exists
$(RM_RF) $@
END
# If this extension has it's own library (eg SDBM_File)
# then copy that to $(INST_STATIC) and add $(OBJECT) into it.
- push(@m, "\t$self->{CP} \$(MYEXTLIB) \$\@\n") if $self->{MYEXTLIB};
+ $m .= <<'END' if $self->{MYEXTLIB};
+ $self->{CP} $(MYEXTLIB) $\@
+END
+
+ my $ar_arg;
+ if( $BORLAND ) {
+ $ar_arg = '$@ $(OBJECT:^"+")';
+ }
+ elsif( $GCC ) {
+ $ar_arg = '-ru $@ $(OBJECT)';
+ }
+ else {
+ $ar_arg = '-type library -o $@ $(OBJECT)';
+ }
- push @m,
-q{ $(AR) }.($BORLAND ? '$@ $(OBJECT:^"+")'
- : ($GCC ? '-ru $@ $(OBJECT)'
- : '-type library -o $@ $(OBJECT)')).q{
- }.$self->{NOECHO}.q{echo "$(EXTRALIBS)" > $(INST_ARCHAUTODIR)\extralibs.ld
+ $m .= sprintf <<'END', $ar_arg;
+ $(AR) %s
+ $(NOECHO)echo "$(EXTRALIBS)" > $(INST_ARCHAUTODIR)\extralibs.ld
$(CHMOD) 755 $@
-};
-# CW change ( -type library ... )
-# Old mechanism - still available:
+END
- push @m, "\t$self->{NOECHO}".q{echo "$(EXTRALIBS)" >> $(PERL_SRC)\ext.libs}."\n\n"
- if $self->{PERL_SRC};
+ $m .= <<'END' if $self->{PERL_SRC};
+ $(NOECHO)echo "$(EXTRALIBS)" >> $(PERL_SRC)\ext.libs
- push @m, $self->dir_target('$(INST_ARCHAUTODIR)');
- join('', "\n",@m);
+END
+
+ return $m;
}
diff --git a/lib/Getopt/Long.pm b/lib/Getopt/Long.pm
index f038b8ba51..0ab862a25a 100644
--- a/lib/Getopt/Long.pm
+++ b/lib/Getopt/Long.pm
@@ -2,12 +2,12 @@
package Getopt::Long;
-# RCS Status : $Id: GetoptLong.pm,v 2.56 2002-04-30 13:00:14+02 jv Exp $
+# RCS Status : $Id: GetoptLong.pm,v 2.57 2002-05-03 17:03:38+02 jv Exp $
# Author : Johan Vromans
# Created On : Tue Sep 11 15:00:12 1990
# Last Modified By: Johan Vromans
-# Last Modified On: Tue Apr 30 12:48:49 2002
-# Update Count : 1078
+# Last Modified On: Fri May 3 17:01:26 2002
+# Update Count : 1080
# Status : Released
################ Copyright ################
@@ -35,10 +35,10 @@ use 5.004;
use strict;
use vars qw($VERSION);
-$VERSION = 2.30;
+$VERSION = 2.31;
# For testing versions only.
use vars qw($VERSION_STRING);
-$VERSION_STRING = "2.30";
+$VERSION_STRING = "2.31";
use Exporter;
@@ -183,7 +183,7 @@ sub configure {
my $save = Getopt::Long::Configure ($self->{settings}, @_);
# Restore orig config and save the new config.
- $self->{settings} = Configure ($save);
+ $self->{settings} = Getopt::Long::Configure ($save);
}
sub getoptions {
@@ -260,7 +260,7 @@ sub GetOptions {
$error = '';
print STDERR ("GetOpt::Long $Getopt::Long::VERSION (",
- '$Revision: 2.56 $', ") ",
+ '$Revision: 2.57 $', ") ",
"called from package \"$pkg\".",
"\n ",
"ARGV: (@ARGV)",
diff --git a/lib/Net/Ping.pm b/lib/Net/Ping.pm
index 6c61a47bf8..f689047ffb 100644
--- a/lib/Net/Ping.pm
+++ b/lib/Net/Ping.pm
@@ -1,6 +1,6 @@
package Net::Ping;
-# $Id: Ping.pm,v 1.31 2002/04/11 16:45:06 rob Exp $
+# $Id: Ping.pm,v 1.33 2002/05/03 21:54:59 rob Exp $
require 5.002;
require Exporter;
@@ -12,11 +12,11 @@ use FileHandle;
use Socket qw( SOCK_DGRAM SOCK_STREAM SOCK_RAW PF_INET
inet_aton inet_ntoa sockaddr_in );
use Carp;
-use Errno qw(ECONNREFUSED);
+use POSIX qw(ECONNREFUSED);
@ISA = qw(Exporter);
@EXPORT = qw(pingecho);
-$VERSION = "2.16";
+$VERSION = "2.17";
# Constants
@@ -26,6 +26,12 @@ $max_datasize = 1024; # Maximum data bytes in a packet
# The data we exchange with the server for the stream protocol
$pingstring = "pingschwingping!\n";
+if ($^O =~ /Win32/i) {
+ # Hack to avoid this Win32 spewage:
+ # Your vendor has not defined POSIX macro ECONNREFUSED
+ *ECONNREFUSED = sub {10061;}; # "Unknown Error" Special Win32 Response?
+};
+
# Description: The pingecho() subroutine is provided for backward
# compatibility with the original Net::Ping. It accepts a host
# name/IP and an optional timeout in seconds. Create a tcp ping
@@ -367,8 +373,7 @@ sub ping_tcp
$@ = ""; $! = 0;
$ret = $self -> tcp_connect( $ip, $timeout);
- $ret = 1 if $! == ECONNREFUSED # Connection refused
- || $@ =~ /Unknown Error/i; # Special Win32 response?
+ $ret = 1 if $! == ECONNREFUSED; # Connection refused
$self->{"fh"}->close();
return $ret;
}
@@ -667,7 +672,7 @@ __END__
Net::Ping - check a remote host for reachability
-$Id: Ping.pm,v 1.31 2002/04/11 16:45:06 rob Exp $
+$Id: Ping.pm,v 1.33 2002/05/03 21:54:59 rob Exp $
=head1 SYNOPSIS
diff --git a/lib/Net/Ping/CHANGES b/lib/Net/Ping/CHANGES
index 8bf3c91278..86060b6098 100644
--- a/lib/Net/Ping/CHANGES
+++ b/lib/Net/Ping/CHANGES
@@ -1,6 +1,12 @@
CHANGES
-------
+2.17 May 03 18:00 2002
+ - RPM spec generalizations.
+ michael.mclagan@linux.org (Michael McLagan)
+ - Win32 compatibility changes.
+ (Didn't compile on Win32 since v2.11.)
+
2.16 Apr 11 14:00 2002
- Documentation changes.
- Added INSTALL doc.
diff --git a/lib/Net/Ping/README b/lib/Net/Ping/README
index ff3973930e..2b18447d79 100644
--- a/lib/Net/Ping/README
+++ b/lib/Net/Ping/README
@@ -1,7 +1,7 @@
NAME
Net::Ping - check a remote host for reachability
- $Id: Ping.pm,v 1.31 2002/04/11 16:45:06 rob Exp $
+ $Id: Ping.pm,v 1.33 2002/05/03 21:54:59 rob Exp $
SYNOPSIS
use Net::Ping;
diff --git a/lib/Term/Complete.pm b/lib/Term/Complete.pm
index 308af049a5..e20b2a66ce 100644
--- a/lib/Term/Complete.pm
+++ b/lib/Term/Complete.pm
@@ -116,7 +116,7 @@ sub Complete {
CASE: {
# (TAB) attempt completion
$_ eq "\t" && do {
- @match = grep(/^$return/, @cmp_lst);
+ @match = grep(/^\Q$return/, @cmp_lst);
unless ($#match < 0) {
$l = length($test = shift(@match));
foreach $cmp (@match) {
@@ -133,7 +133,7 @@ sub Complete {
# (^D) completion list
$_ eq $complete && do {
- print(join("\r\n", '', grep(/^$return/, @cmp_lst)), "\r\n");
+ print(join("\r\n", '', grep(/^\Q$return/, @cmp_lst)), "\r\n");
redo LOOP;
};
diff --git a/lib/Unicode/Collate.pm b/lib/Unicode/Collate.pm
index 6d6ed32439..676a3aadfe 100644
--- a/lib/Unicode/Collate.pm
+++ b/lib/Unicode/Collate.pm
@@ -13,7 +13,7 @@ use Carp;
require Exporter;
-our $VERSION = '0.11';
+our $VERSION = '0.12';
our $PACKAGE = __PACKAGE__;
our @ISA = qw(Exporter);
@@ -25,6 +25,26 @@ our @EXPORT = ();
(our $Path = $INC{'Unicode/Collate.pm'}) =~ s/\.pm$//;
our $KeyFile = "allkeys.txt";
+our $UNICODE_VERSION;
+
+eval { require Unicode::UCD };
+
+unless ($@) {
+ $UNICODE_VERSION = Unicode::UCD::UnicodeVersion();
+}
+else { # XXX, Perl 5.6.1
+ my($f, $fh);
+ foreach my $d (@INC) {
+ use File::Spec;
+ $f = File::Spec->catfile($d, "unicode", "Unicode.301");
+ if (open($fh, $f)) {
+ $UNICODE_VERSION = '3.0.1';
+ close $fh;
+ last;
+ }
+ }
+}
+
our $getCombinClass; # coderef for combining class from Unicode::Normalize
use constant Min2 => 0x20; # minimum weight at level 2
@@ -33,6 +53,10 @@ use constant UNDEFINED => 0xFF80; # special value for undefined CE's
our $DefaultRearrange = [ 0x0E40..0x0E44, 0x0EC0..0x0EC4 ];
+sub UCA_Version { "8.0" }
+
+sub Base_Unicode_Version { $UNICODE_VERSION || 'unknown' }
+
##
## constructor
##
@@ -809,7 +833,7 @@ these tags doesn't work validly.
=back
-=head2 Other methods
+=head2 Methods for Collation
=over 4
@@ -913,6 +937,22 @@ is primary equal to C<"m>E<252>C<ss">.
=back
+=head2 Other Methods
+
+=over 4
+
+=item UCA_Version
+
+Returns the version number of Unicode Technical Standard 10
+this module consults.
+
+=item Base_Unicode_Version
+
+Returns the version number of the Unicode Standard
+this module is based on.
+
+=back
+
=head2 EXPORT
None by default.
diff --git a/lib/Unicode/Collate/Changes b/lib/Unicode/Collate/Changes
index bb207d86b0..997117c670 100644
--- a/lib/Unicode/Collate/Changes
+++ b/lib/Unicode/Collate/Changes
@@ -1,9 +1,14 @@
Revision history for Perl extension Unicode::Collate.
+0.12 Sun May 05 09:43:10 2002
+ - add new methods, ->UCA_Version and ->Base_Unicode_Version.
+ - test fix: removed the needless requirement of Unicode::Normalize.
+ [reported by David Hand]
+
0.11 Fri May 03 02:28:10 2002
- fix: now derived collation elements can be used for Hangul Jamo
when their weights are not defined.
- [reported by andreas.koenig@anima.de]
+ [reported by Andreas J. Koenig]
- fix: rearrangements had not worked.
- mentioned pleblem on index() in BUGS.
- more documents, more tests.
diff --git a/lib/Unicode/Collate/README b/lib/Unicode/Collate/README
index 68f7b80369..4d4f12ce97 100644
--- a/lib/Unicode/Collate/README
+++ b/lib/Unicode/Collate/README
@@ -1,4 +1,4 @@
-Unicode/Collate version 0.11
+Unicode/Collate version 0.12
===============================
Unicode::Collate - Unicode Collation Algorithm
diff --git a/lib/Unicode/Collate/t/test.t b/lib/Unicode/Collate/t/test.t
index 957bad1f61..f5a7012ea9 100644
--- a/lib/Unicode/Collate/t/test.t
+++ b/lib/Unicode/Collate/t/test.t
@@ -11,12 +11,17 @@ BEGIN {
}
use Test;
-BEGIN { plan tests => 156 };
+BEGIN { plan tests => 160 };
use Unicode::Collate;
ok(1); # If we made it this far, we're ok.
#########################
+my $UCA_Version = "8.0";
+
+ok(Unicode::Collate::UCA_Version, $UCA_Version);
+ok(Unicode::Collate->UCA_Version, $UCA_Version);
+
my $Collator = Unicode::Collate->new(
table => 'keys.txt',
normalization => undef,
@@ -24,6 +29,9 @@ my $Collator = Unicode::Collate->new(
ok(ref $Collator, "Unicode::Collate");
+ok($Collator->UCA_Version, $UCA_Version);
+ok($Collator->UCA_Version(), $UCA_Version);
+
ok(
join(':', $Collator->sort(
qw/ lib strict Carp ExtUtils CGI Time warnings Math overload Pod CPAN /
@@ -180,6 +188,7 @@ ok($ignoreAE->eq("Perl","ePrl"));
my $onlyABC = Unicode::Collate->new(
table => undef,
+ normalization => undef,
entry => << 'ENTRIES',
0061 ; [.0101.0020.0002.0061] # LATIN SMALL LETTER A
0041 ; [.0101.0020.0008.0041] # LATIN CAPITAL LETTER A
@@ -585,8 +594,8 @@ ok($Collator ->lt("Ca\x{300}ca\x{302}", "ca\x{302}ca\x{300}"));
ok($Collator ->lt("ca\x{300}ca\x{302}", "Ca\x{302}ca\x{300}"));
-# HIRAGANA and KATAKANA are undefined via ignoreName.
-# So they are after CJK Ideographs.
+# HIRAGANA and KATAKANA are made undefined via undefName.
+# So they are after CJK Unified Ideographs.
ok($backLevel2->lt("\x{4E00}", $hiragana));
ok($backLevel2->lt("\x{4E03}", $katakana));
diff --git a/lib/charnames.pm b/lib/charnames.pm
index d9cf7fa4e9..529508080c 100644
--- a/lib/charnames.pm
+++ b/lib/charnames.pm
@@ -268,11 +268,11 @@ charnames - define character names for C<\N{named}> string literal escapes
Pragma C<use charnames> supports arguments C<:full>, C<:short> and
script names. If C<:full> is present, for expansion of
-C<\N{CHARNAME}}> string C<CHARNAME> is first looked in the list of
+C<\N{CHARNAME}> string C<CHARNAME> is first looked in the list of
standard Unicode names of chars. If C<:short> is present, and
C<CHARNAME> has the form C<SCRIPT:CNAME>, then C<CNAME> is looked up
as a letter in script C<SCRIPT>. If pragma C<use charnames> is used
-with script name arguments, then for C<\N{CHARNAME}}> the name
+with script name arguments, then for C<\N{CHARNAME}> the name
C<CHARNAME> is looked up as a letter in the given scripts (in the
specified order).
diff --git a/lib/overload.pm b/lib/overload.pm
index 838c91fcee..1cde64241e 100644
--- a/lib/overload.pm
+++ b/lib/overload.pm
@@ -333,9 +333,9 @@ The following symbols can be specified in C<use overload> directive:
"**", "**=", "<<", "<<=", ">>", ">>=", "x", "x=", ".", ".=",
For these operations a substituted non-assignment variant can be called if
-the assignment variant is not available. Methods for operations "C<+>",
-"C<->", "C<+=>", and "C<-=>" can be called to automatically generate
-increment and decrement methods. The operation "C<->" can be used to
+the assignment variant is not available. Methods for operations C<+>,
+C<->, C<+=>, and C<-=> can be called to automatically generate
+increment and decrement methods. The operation C<-> can be used to
autogenerate missing methods for unary minus or C<abs>.
See L<"MAGIC AUTOGENERATION">, L<"Calling Conventions for Mutators"> and
@@ -355,10 +355,10 @@ arrays, C<cmp> is used to compare values subject to C<use overload>.
"&", "^", "|", "neg", "!", "~",
-"C<neg>" stands for unary minus. If the method for C<neg> is not
+C<neg> stands for unary minus. If the method for C<neg> is not
specified, it can be autogenerated using the method for
-subtraction. If the method for "C<!>" is not specified, it can be
-autogenerated using the methods for "C<bool>", or "C<\"\">", or "C<0+>".
+subtraction. If the method for C<!> is not specified, it can be
+autogenerated using the methods for C<bool>, or C<"">, or C<0+>.
=item * I<Increment and decrement>
@@ -382,11 +382,11 @@ C<0+>.
=item * I<Boolean, string and numeric conversion>
- "bool", "\"\"", "0+",
+ 'bool', '""', '0+',
If one or two of these operations are not overloaded, the remaining ones can
be used instead. C<bool> is used in the flow control operators
-(like C<while>) and for the ternary "C<?:>" operation. These functions can
+(like C<while>) and for the ternary C<?:> operation. These functions can
return any arbitrary Perl value. If the corresponding operation for this value
is overloaded too, that operation will be called again with this value.
diff --git a/makedef.pl b/makedef.pl
index 2ed95d1e72..ffe69b3028 100644
--- a/makedef.pl
+++ b/makedef.pl
@@ -17,12 +17,12 @@ while (@ARGV) {
$define{$1} = $2 if ($flag =~ /^-D(\w+)=(.+)$/);
$CCTYPE = $1 if ($flag =~ /^CCTYPE=(\w+)$/);
$PLATFORM = $1 if ($flag =~ /^PLATFORM=(\w+)$/);
- if ($PLATFORM eq 'netware') {
- $FILETYPE = $1 if ($flag =~ /^FILETYPE=(\w+)$/);
- }
+ if ($PLATFORM eq 'netware') {
+ $FILETYPE = $1 if ($flag =~ /^FILETYPE=(\w+)$/);
+ }
}
-my @PLATFORM = qw(aix win32 os2 MacOS netware);
+my @PLATFORM = qw(aix win32 wince os2 MacOS netware);
my %PLATFORM;
@PLATFORM{@PLATFORM} = ();
@@ -42,7 +42,7 @@ my $perlio_sym = "perlio.sym";
if ($PLATFORM eq 'aix') {
# Nothing for now.
}
-elsif ($PLATFORM eq 'win32' || $PLATFORM eq 'netware') {
+elsif ($PLATFORM =~ /^win(?:32|ce)$/ || $PLATFORM eq 'netware') {
$CCTYPE = "MSVC" unless defined $CCTYPE;
foreach ($thrdvar_h, $intrpvar_h, $perlvars_h, $global_sym,
$pp_sym, $globvar_sym, $perlio_sym) {
@@ -56,7 +56,7 @@ elsif ($PLATFORM eq 'MacOS') {
}
}
-unless ($PLATFORM eq 'win32' || $PLATFORM eq 'MacOS' || $PLATFORM eq 'netware') {
+unless ($PLATFORM eq 'win32' || $PLATFORM eq 'wince' || $PLATFORM eq 'MacOS' || $PLATFORM eq 'netware') {
open(CFG,$config_sh) || die "Cannot open $config_sh: $!\n";
while (<CFG>) {
if (/^(?:ccflags|optimize)='(.+)'$/) {
@@ -106,9 +106,10 @@ if ($define{USE_ITHREADS} && $PLATFORM ne 'win32' && $^O ne 'darwin') {
my $sym_ord = 0;
-if ($PLATFORM eq 'win32') {
+if ($PLATFORM =~ /^win(?:32|ce)$/) {
warn join(' ',keys %define)."\n";
- print "LIBRARY perl58\n";
+ ($dll = ($define{PERL_DLL} || "perl58")) =~ s/\.dll$//i;
+ print "LIBRARY $dll\n";
print "DESCRIPTION 'Perl interpreter'\n";
print "EXPORTS\n";
if ($define{PERL_IMPLICIT_SYS}) {
@@ -243,6 +244,77 @@ if ($PLATFORM eq 'win32') {
Perl_my_popen
)];
}
+elsif ($PLATFORM eq 'wince') {
+ skip_symbols [qw(
+ PL_statusvalue_vms
+ PL_archpat_auto
+ PL_cryptseen
+ PL_DBcv
+ PL_generation
+ PL_lastgotoprobe
+ PL_linestart
+ PL_modcount
+ PL_pending_ident
+ PL_sortcxix
+ PL_sublex_info
+ PL_timesbuf
+ PL_collation_ix
+ PL_collation_name
+ PL_collation_standard
+ PL_collxfrm_base
+ PL_collxfrm_mult
+ PL_numeric_compat1
+ PL_numeric_local
+ PL_numeric_name
+ PL_numeric_radix_sv
+ PL_numeric_standard
+ PL_vtbl_collxfrm
+ Perl_sv_collxfrm
+ setgid
+ setuid
+ win32_async_check
+ win32_free_childdir
+ win32_free_childenv
+ win32_get_childdir
+ win32_get_childenv
+ win32_spawnvp
+ main
+ Perl_ErrorNo
+ Perl_GetVars
+ Perl_do_exec3
+ Perl_do_ipcctl
+ Perl_do_ipcget
+ Perl_do_msgrcv
+ Perl_do_msgsnd
+ Perl_do_semop
+ Perl_do_shmio
+ Perl_dump_fds
+ Perl_init_thread_intern
+ Perl_my_bzero
+ Perl_my_bcopy
+ Perl_my_htonl
+ Perl_my_ntohl
+ Perl_my_swap
+ Perl_my_chsize
+ Perl_same_dirent
+ Perl_setenv_getix
+ Perl_unlnk
+ Perl_watch
+ Perl_safexcalloc
+ Perl_safexmalloc
+ Perl_safexfree
+ Perl_safexrealloc
+ Perl_my_memcmp
+ Perl_my_memset
+ PL_cshlen
+ PL_cshname
+ PL_opsave
+ Perl_do_exec
+ Perl_getenv_len
+ Perl_my_pclose
+ Perl_my_popen
+ )];
+}
elsif ($PLATFORM eq 'aix') {
skip_symbols([qw(
Perl_dump_fds
@@ -880,7 +952,7 @@ while (<DATA>) {
try_symbol($_);
}
-if ($PLATFORM eq 'win32') {
+if ($PLATFORM =~ /^win(?:32|ce)$/) {
foreach my $symbol (qw(
setuid
setgid
@@ -1221,7 +1293,7 @@ sub emit_symbol {
sub output_symbol {
my $symbol = shift;
- if ($PLATFORM eq 'win32') {
+ if ($PLATFORM =~ /^win(?:32|ce)$/) {
$symbol = "_$symbol" if $CCTYPE eq 'BORLAND';
print "\t$symbol\n";
# XXX: binary compatibility between compilers is an exercise
diff --git a/patchlevel.h b/patchlevel.h
index 5c409be799..6b1627458a 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -79,7 +79,7 @@
#if !defined(PERL_PATCHLEVEL_H_IMPLICIT) && !defined(LOCAL_PATCH_COUNT)
static char *local_patches[] = {
NULL
- ,"DEVEL16375"
+ ,"DEVEL16432"
,NULL
};
diff --git a/perl.h b/perl.h
index b4c80c369d..6e508c085f 100644
--- a/perl.h
+++ b/perl.h
@@ -3925,10 +3925,11 @@ typedef struct am_table_short AMTS;
* Boilerplate macros for initializing and accessing interpreter-local
* data from C. All statics in extensions should be reworked to use
* this, if you want to make the extension thread-safe. See ext/re/re.xs
- * for an example of the use of these macros.
+ * for an example of the use of these macros, and perlxs.pod for more.
*
* Code that uses these macros is responsible for the following:
- * 1. #define MY_CXT_KEY to a unique string, e.g. "DynaLoader_guts"
+ * 1. #define MY_CXT_KEY to a unique string, e.g.
+ * "DynaLoader::_guts" XS_VERSION
* 2. Declare a typedef named my_cxt_t that is a structure that contains
* all the data that needs to be interpreter-local.
* 3. Use the START_MY_CXT macro after the declaration of my_cxt_t.
diff --git a/pod/perldelta.pod b/pod/perldelta.pod
index 8f04217aa1..52ffc244e1 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -544,6 +544,11 @@ errors so consider starting laundering now.
=item *
+Tied hash interfaces are now required to have the EXISTS and DELETE
+methods (either own or inherited).
+
+=item *
+
If tr/// is just counting characters, it doesn't attempt to
modify its target.
@@ -1735,10 +1740,6 @@ long doubles support in AIX should be better now. See L<perlaix>.
=item *
-After a long pause, AmigaOS has been verified to be happy with Perl.
-
-=item *
-
AtheOS ( http://www.atheos.cx/ ) is a new platform.
=item *
@@ -1932,6 +1933,40 @@ Fixed numerous memory leaks, especially in eval "".
=item *
+Localised tied variables no more leak memory
+
+ use Tie::Hash;
+ tie my %tied_hash => 'Tie::StdHash';
+
+ ...
+
+ # Used to leak memory every time local() was called,
+ # in a loop this added up.
+ local($tied_hash{Foo}) = 1;
+
+=item *
+
+Localised hash elements (and %ENV) are correctly unlocalised to not to
+exist, if that's what they were.
+
+
+ use Tie::Hash;
+ tie my %tied_hash => 'Tie::StdHash';
+
+ ...
+
+ # Nothing has set the FOO element so far
+
+ { local $tied_hash{FOO} = 'Bar' }
+
+ # Here the FOO element would have been C<undef>,
+ # but no more so.
+
+As a side effect of this fix, tied hash interfaces B<must> define
+the EXISTS and DELETE methods.
+
+=item *
+
mkdir() now ignores trailing slashes in the directory name,
as mandated by POSIX.
@@ -2705,6 +2740,14 @@ This is caused by the characters \xFF (y with diaeresis) and \xBE
(Y with diaeresis) not behaving correctly when being matched
case-insensitively.
+=head2 Modifying $_ Inside for(..)
+
+ for (1..5) { $_++ }
+
+works without complaint. It shouldn't. (You should be able to
+modify only lvalue elements inside the loops.) You can see the
+correct behaviour by replacing the 1..5 with 1, 2, 3, 4, 5.
+
=head2 mod_perl 1.26 Doesn't Build With Threaded Perl
Use mod_perl 1.27 or higher.
@@ -2713,7 +2756,7 @@ Use mod_perl 1.27 or higher.
Don't panic. Read INSTALL 'make test' section instead.
-=head2 HP-UX lib/posix Subtest 9 Fails When LP64-Configured
+=head2 HP-UX lib/posix Subtest 9 Fails When LP64-Configured
If perl is configured with -Duse64bitall, the successful result of the
subtest 10 of lib/posix may arrive before the successful result of the
@@ -2850,18 +2893,6 @@ some output may appear twice.
Use XML::Parser 2.31 or later.
-=head2 Localising a Tied Variable Leaks Memory
-
- use Tie::Hash;
- tie my %tie_hash => 'Tie::StdHash';
-
- ...
-
- local($tie_hash{Foo}) = 1; # leaks
-
-Code like the above is known to leak memory every time the local()
-is executed.
-
=head2 z/OS (OS/390)
z/OS has rather many test failures but the situation is actually
diff --git a/pod/perliol.pod b/pod/perliol.pod
index 1c346e0965..b4c8069723 100644
--- a/pod/perliol.pod
+++ b/pod/perliol.pod
@@ -754,10 +754,14 @@ of I<$scalar>, and writes change the value. In both cases the position
in I<$scalar> starts as zero but can be altered via C<seek>, and
determined via C<tell>.
-=item ":Object" or ":Perl"
+=item ":Via"
-May be provided to allow layers to be implemented as perl code -
-implementation is being investigated.
+Provided to allow layers to be implemented as Perl code. For instance:
+
+ use MIME::QuotedPrint;
+ open(my $fh, ">Via(MIME::QuotedPrint)", "qp");
+
+See L<PerlIO::Via> for details.
=back
diff --git a/pod/perlunicode.pod b/pod/perlunicode.pod
index 12296c019a..d2c48e26b5 100644
--- a/pod/perlunicode.pod
+++ b/pod/perlunicode.pod
@@ -916,8 +916,9 @@ needed. The BOM signatures will be 0x00 0x00 0xFE 0xFF for BE and
UCS-2, UCS-4
Encodings defined by the ISO 10646 standard. UCS-2 is a 16-bit
-encoding, UCS-4 is a 32-bit encoding. Unlike UTF-16, UCS-2
-is not extensible beyond 0xFFFF, because it does not use surrogates.
+encoding. Unlike UTF-16, UCS-2 is not extensible beyond 0xFFFF,
+because it does not use surrogates. UCS-4 is a 32-bit encoding,
+functionally identical to UTF-32.
=item *
diff --git a/pp_hot.c b/pp_hot.c
index 027d1249ac..f2387b4ce0 100644
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -1644,7 +1644,12 @@ PP(pp_helem)
if (SvTYPE(hv) == SVt_PVHV) {
if (PL_op->op_private & OPpLVAL_INTRO)
- preeminent = SvRMAGICAL(hv) ? 1 : hv_exists_ent(hv, keysv, 0);
+ preeminent =
+ ( SvRMAGICAL(hv)
+ && !mg_find((SV*)hv, PERL_MAGIC_tied)
+ && !mg_find((SV*)hv, PERL_MAGIC_env)
+ ) ? 1 : hv_exists_ent(hv, keysv, 0);
+
he = hv_fetch_ent(hv, keysv, lval && !defer, hash);
svp = he ? &HeVAL(he) : 0;
}
@@ -1682,8 +1687,17 @@ PP(pp_helem)
STRLEN keylen;
char *key = SvPV(keysv, keylen);
SAVEDELETE(hv, savepvn(key,keylen), keylen);
- } else
+ } else {
+ SV *sv;
save_helem(hv, keysv, svp);
+ sv = *svp;
+ /* If we're localizing a tied hash element, this new
+ * sv won't actually be stored in the hash - so it
+ * won't get reaped when the localize ends. Ensure it
+ * gets reaped by mortifying it instead. DAPM */
+ if (SvTIED_mg(sv, PERL_MAGIC_tiedelem))
+ sv_2mortal(sv);
+ }
}
}
else if (PL_op->op_private & OPpDEREF)
@@ -2938,8 +2952,17 @@ PP(pp_aelem)
PUSHs(lv);
RETURN;
}
- if (PL_op->op_private & OPpLVAL_INTRO)
+ if (PL_op->op_private & OPpLVAL_INTRO) {
+ SV *sv;
save_aelem(av, elem, svp);
+ sv = *svp;
+ /* If we're localizing a tied array element, this new sv
+ * won't actually be stored in the array - so it won't get
+ * reaped when the localize ends. Ensure it gets reaped by
+ * mortifying it instead. DAPM */
+ if (SvTIED_mg(sv, PERL_MAGIC_tiedelem))
+ sv_2mortal(sv);
+ }
else if (PL_op->op_private & OPpDEREF)
vivify_ref(*svp, PL_op->op_private & OPpDEREF);
}
diff --git a/pp_sys.c b/pp_sys.c
index 0183325cb9..c55f0a4651 100644
--- a/pp_sys.c
+++ b/pp_sys.c
@@ -321,10 +321,13 @@ PP(pp_backtick)
;
}
else if (gimme == G_SCALAR) {
+ SV *oldrs = PL_rs;
+ PL_rs = &PL_sv_undef;
sv_setpv(TARG, ""); /* note that this preserves previous buffer */
while (sv_gets(TARG, fp, SvCUR(TARG)) != Nullch)
/*SUPPRESS 530*/
;
+ PL_rs = oldrs;
XPUSHs(TARG);
SvTAINTED_on(TARG);
}
diff --git a/scope.c b/scope.c
index a7d55b0fbf..85a068017c 100644
--- a/scope.c
+++ b/scope.c
@@ -206,12 +206,6 @@ S_save_scalar_at(pTHX_ SV **sptr)
PL_localizing = 1;
SvSETMAGIC(sv);
PL_localizing = 0;
- /* If we're localizing a tied array/hash element, this new sv
- * won't actually be stored in the array/hash - so it won't get
- * reaped when the localize ends. Ensure it gets reaped by
- * mortifying it instead. DAPM */
- if (SvTIED_mg(sv, PERL_MAGIC_tiedelem))
- sv_2mortal(sv);
}
return sv;
}
diff --git a/sv.c b/sv.c
index 9ba91e6728..974bcbee36 100644
--- a/sv.c
+++ b/sv.c
@@ -7296,9 +7296,6 @@ Perl_sv_bless(pTHX_ SV *sv, HV *stash)
}
/* Downgrades a PVGV to a PVMG.
- *
- * XXX This function doesn't actually appear to be used anywhere
- * DAPM 15-Jun-01
*/
STATIC void
diff --git a/t/io/fs.t b/t/io/fs.t
index 12eec19283..7535e4ebfd 100755
--- a/t/io/fs.t
+++ b/t/io/fs.t
@@ -271,7 +271,7 @@ SKIP: {
# Check truncating a closed file.
eval { truncate "Iofs.tmp", 5; };
- skip("no truncate - $@", 10) if $@;
+ skip("no truncate - $@", 6) if $@;
is(-s "Iofs.tmp", 5, "truncation to five bytes");
@@ -304,7 +304,7 @@ SKIP: {
}
if ($^O eq 'vos') {
- skip ("# TODO - hit VOS bug posix-973 - cannot resize an open file below the current file pos.", 7);
+ skip ("# TODO - hit VOS bug posix-973 - cannot resize an open file below the current file pos.", 3);
}
is(-s "Iofs.tmp", 200, "fh resize to 200 working (filename check)");
diff --git a/t/op/arith.t b/t/op/arith.t
index 55a5e48084..654ce3b857 100755
--- a/t/op/arith.t
+++ b/t/op/arith.t
@@ -22,7 +22,7 @@ sub tryeq_sloppy ($$$) {
print "ok $_[0]\n";
} else {
my $error = abs ($_[1] - $_[2]) / $_[1];
- if ($error < 1e-10) {
+ if ($error < 1e-9) {
print "ok $_[0] # $_[1] is close to $_[2], \$^O eq $^O\n";
} else {
print "not ok $_[0] # $_[1] != $_[2]\n";
@@ -242,7 +242,7 @@ tryeq 120, -0x80000000/1, -0x80000000;
tryeq 121, -0x80000000/-1, 0x80000000;
# The example for sloppy divide, rigged to avoid the peephole optimiser.
-tryeq 122, "20." / "5.", 4;
+tryeq_sloppy 122, "20." / "5.", 4;
tryeq 123, 2.5 / 2, 1.25;
tryeq 124, 3.5 / -2, -1.75;
@@ -252,9 +252,9 @@ tryeq 126, -5.5 / -2, 2.75;
# Bluuurg if your floating point can't accurately cope with powers of 2
# [I suspect this is parsing string->float problems, not actual arith]
tryeq_sloppy 127, 18446744073709551616/1, 18446744073709551616; # Bluuurg
-tryeq 128, 18446744073709551616/2, 9223372036854775808;
-tryeq 129, 18446744073709551616/4294967296, 4294967296;
-tryeq 130, 18446744073709551616/9223372036854775808, 2;
+tryeq_sloppy 128, 18446744073709551616/2, 9223372036854775808;
+tryeq_sloppy 129, 18446744073709551616/4294967296, 4294967296;
+tryeq_sloppy 130, 18446744073709551616/9223372036854775808, 2;
{
# The peephole optimiser is wrong to think that it can substitute intops
@@ -263,7 +263,7 @@ tryeq 130, 18446744073709551616/9223372036854775808, 2;
my $n = 1127;
my $float = ($n % 1000) * 167772160.0;
- tryeq 131, $float, 21307064320;
+ tryeq_sloppy 131, $float, 21307064320;
# On a 32 bit machine, if the i_multiply op is used, you will probably get
# -167772160. It's actually undefined behaviour, so anything may happen.
diff --git a/t/op/exec.t b/t/op/exec.t
index 3edbc6ac62..5f110be32e 100755
--- a/t/op/exec.t
+++ b/t/op/exec.t
@@ -19,7 +19,7 @@ my $Is_Win32 = $^O eq 'MSWin32';
skip_all("Tests mostly usesless on MacOS") if $^O eq 'MacOS';
-plan(tests => 20);
+plan(tests => 21);
my $Perl = which_perl();
@@ -74,6 +74,12 @@ is( $echo_out, "ok\n", 'piped echo emulation');
is( scalar `$Perl -le "print 'ok'" | $Perl -e "print <STDIN>"`,
"ok\n", 'extra newlines on outgoing pipes');
+
+ {
+ local($/) = \2;
+ $out = runperl(prog => 'print q{1234}');
+ is($out, "1234", 'ignore $/ when capturing output in scalar context');
+ }
}
diff --git a/t/op/local.t b/t/op/local.t
index 9f977b2cd4..6da03912e9 100755
--- a/t/op/local.t
+++ b/t/op/local.t
@@ -1,6 +1,6 @@
#!./perl
-print "1..71\n";
+print "1..75\n";
sub foo {
local($a, $b) = @_;
@@ -130,6 +130,7 @@ print +(!defined $a[0]) ? "" : "not ", "ok 41\n";
sub TIEHASH { bless {}, $_[0] }
sub STORE { print "# STORE [@_]\n"; $_[0]->{$_[1]} = $_[2] }
sub FETCH { my $v = $_[0]->{$_[1]}; print "# FETCH [@_=$v]\n"; $v }
+ sub EXISTS { print "# EXISTS [@_]\n"; exists $_[0]->{$_[1]}; }
sub DELETE { print "# DELETE [@_]\n"; delete $_[0]->{$_[1]}; }
sub CLEAR { print "# CLEAR [@_]\n"; %{$_[0]} = (); }
}
@@ -141,6 +142,8 @@ tie %h, 'TH';
{
local($h{'a'}) = 'foo';
local($h{'b'}) = $h{'b'};
+ local($h{'y'});
+ local($h{'z'}) = 33;
print +($h{'a'} eq 'foo') ? "" : "not ", "ok 42\n";
print +($h{'b'} == 2) ? "" : "not ", "ok 43\n";
local($h{'c'});
@@ -182,6 +185,8 @@ $ENV{_X_} = 'a';
$ENV{_Y_} = 'b';
$ENV{_Z_} = 'c';
{
+ local($ENV{_A_});
+ local($ENV{_B_}) = 'foo';
local($ENV{_X_}) = 'foo';
local($ENV{_Y_}) = $ENV{_Y_};
print +($ENV{_X_} eq 'foo') ? "" : "not ", "ok 54\n";
@@ -243,3 +248,12 @@ while (/(o.+?),/gc) {
print "not " if exists $x{c};
print "ok 71\n";
}
+
+# these tests should be physically located after tests 46 and 58,
+# but are here instead to avoid renumbering everything.
+
+# local() should preserve the existenceness of tied hashes and %ENV
+print "not " if exists $h{'y'}; print "ok 72\n";
+print "not " if exists $h{'z'}; print "ok 73\n";
+print "not " if exists $ENV{_A_}; print "ok 74\n";
+print "not " if exists $ENV{_B_}; print "ok 75\n";
diff --git a/t/op/pwent.t b/t/op/pwent.t
index fc71f574ad..4d9de4490f 100755
--- a/t/op/pwent.t
+++ b/t/op/pwent.t
@@ -49,6 +49,18 @@ BEGIN {
}
}
+ if (not defined $where) { # Try NIS+
+ foreach my $niscat (qw(/bin/niscat)) {
+ if (-x $niscat &&
+ open(PW, "$niscat passwd.org_dir 2>/dev/null |") &&
+ defined(<PW>)) {
+ $where = "NIS+ $niscat passwd.org_dir";
+ undef $reason;
+ last;
+ }
+ }
+ }
+
if ($reason) { # Give up.
print "1..0 # Skip: $reason\n";
exit 0;
diff --git a/t/op/tie.t b/t/op/tie.t
index 9a651555fc..f8f2322632 100755
--- a/t/op/tie.t
+++ b/t/op/tie.t
@@ -202,3 +202,12 @@ EXPECT
tie FH, 'main';
EXPECT
+########
+# correct unlocalisation of tied hashes (patch #16431)
+use Tie::Hash ;
+tie %tied, Tie::StdHash;
+{ local $hash{'foo'} } print "exist1\n" if exists $hash{'foo'};
+{ local $tied{'foo'} } print "exist2\n" if exists $tied{'foo'};
+{ local $ENV{'foo'} } print "exist3\n" if exists $ENV{'foo'};
+EXPECT
+
diff --git a/uconfig.h b/uconfig.h
index 2f6188c691..32496541cb 100644
--- a/uconfig.h
+++ b/uconfig.h
@@ -3810,7 +3810,9 @@
* This symbol, if defined, indicates that you must access
* character data through U32-aligned pointers.
*/
+#ifndef U32_ALIGNMENT_REQUIRED
#define U32_ALIGNMENT_REQUIRED /**/
+#endif
/* HAS_USLEEP_PROTO:
* This symbol, if defined, indicates that the system provides
diff --git a/vos/Changes b/vos/Changes
index 407b258992..98bab9dbd8 100644
--- a/vos/Changes
+++ b/vos/Changes
@@ -6,6 +6,9 @@ For 5.8.0:
"install_perl.cm" to use directory naming conventions that
are closer to the perl standard directory names.
+ Added "compile_full_perl.cm", "configure_full_perl.sh" and
+ "make_full_perl.sh" for building full perl.
+
For the first time, full perl can now be built on VOS using
its native Configure script and makefiles. See README.vos
for details.
diff --git a/vos/build.cm b/vos/build.cm
index 991530f448..a07dad36b3 100644
--- a/vos/build.cm
+++ b/vos/build.cm
@@ -38,6 +38,12 @@
&return 1
&end
&
+&if &compiler& = gcc & &cpu& = pa8000
+&then &do
+ &display_line build: "-compiler gcc" is incompatible with "-processor pa8000"
+ &return 1
+ &end
+&
& Set up the appropriate directory suffix for each architecture.
&
&if &cpu& = mc68020
@@ -206,6 +212,8 @@
&if (command_status) ^= 0 &then &return
!&compiler& <<xsutils.c &diag& &cpu& &cflags& -o xsutils&s&
&if (command_status) ^= 0 &then &return
+!&compiler& <vos.c &diag& &cpu& &cflags& -o vos&s&
+&if (command_status) ^= 0 &then &return
&if &version& = alpha
&then &do
!&compiler& <vos_dummies.c &cpu& -O4 -o vos_dummies&s&
@@ -214,11 +222,11 @@
&
&if &compiler& = gcc
&then &do
- !delete_file perl.a
+ &if (exists -file perl.a) &then !delete_file perl.a
!ar rc perl.a av.o deb.o doio.o doop.o dump.o globals.o gv.o hv.o locale.o &+
mg.o numeric.o op.o perl.o perlapi.o perlio.o perly.o pp.o pp_ctl.o &+
pp_hot.o pp_pack.o pp_sort.o pp_sys.o reentr.o regcomp.o regexec.o run.o &+
- scope.o sv.o taint.o toke.o universal.o utf8.o util.o xsutils.o
+ scope.o sv.o taint.o toke.o universal.o utf8.o util.o vos.o xsutils.o
!delete_file *.o -no_ask -brief
&end
&else &do
diff --git a/vos/compile_full_perl.cm b/vos/compile_full_perl.cm
new file mode 100644
index 0000000000..9af1a87cde
--- /dev/null
+++ b/vos/compile_full_perl.cm
@@ -0,0 +1,38 @@
+& This command macro builds and tests full perl using
+& the native perl build scripts. The prerequsites for
+& using this macro are a VOS Continuum system running
+& VOS Release 14.5.0 and VOS GNU C/C++ and GNU Tools 2.0.1.
+&
+& Written 02-05-05 by Paul Green (Paul.Green@stratus.com)
+&
+&begin_parameters
+ debug_sw switch(-debug)
+&end_parameters
+&echo command_lines
+&
+!add_library_path command (master_disk)>system>gnu_library>bin &+
+ -after '(current_dir)'
+&
+&if (process_type) = interactive
+&then !set_terminal_parameters -pause_lines 0
+&
+&set_string release (before (after (module_info system_release) 'VOS Release ') ' ')
+&if &release& < '14.5'
+&then &do
+ &display_line You must be running VOS Release 14.5.0 or later to use this macro.
+ &return e$wrong_version
+&end
+&
+&if ^ (exists -directory (master_disk)>system>gnu_library>lib>perl5)
+&then &do
+ &display_line You must have S877 - GNU C/C++ and GNU Tools Release 2.0.1 to use this macro.
+ &return e$wrong_version
+&end
+&
+!change_current_dir <
+&
+&if &debug_sw&
+&then !bash vos/configure_full_perl.sh -DDEBUGGING -Doptimize=-g
+&else !bash vos/configure_full_perl.sh
+&
+!bash vos/make_full_perl.sh
diff --git a/vos/compile_perl.cm b/vos/compile_perl.cm
index 367b0797d5..c5c7c1e068 100644
--- a/vos/compile_perl.cm
+++ b/vos/compile_perl.cm
@@ -38,6 +38,21 @@
&display_line GCC is not supported by the alpha version of POSIX support.
&return e$translation_failed
&end
+&if &cpu& = mc68020 & &version& = ga
+&then &do
+ &display_line The mc68020 CPU is not supported by the GA version of POSIX support.
+ &return e$translation_failed
+&end
+&if &cpu& = i80860 & &version& = ga
+&then &do
+ &display_line The i80860 CPU is not supported by the GA version of POSIX support.
+ &return e$translation_failed
+&end
+&if &cpu& = pa8000 & &compiler& = gcc
+&then &do
+ &display_line The pa8000 CPU is not supported by the GNU GCC compiler.
+ &return e$translation_failed
+&end
&if ^ (exists obj&obj& -directory)
&then !create_dir obj&obj&
&
diff --git a/vos/configure_full_perl.sh b/vos/configure_full_perl.sh
new file mode 100644
index 0000000000..28eab52513
--- /dev/null
+++ b/vos/configure_full_perl.sh
@@ -0,0 +1,21 @@
+# Configure environment variables for perl build.
+declare -x AWK="/system/gnu_library/bin/gawk.pm"
+export AWK
+declare -x CC="/system/gnu_library/bin/gcc.pm"
+export CC
+declare -x CPP="$CC $CPPFLAGS -E"
+export CPP
+declare -x CPPFLAGS="-D_POSIX_SOURCE=199506L -D_SYSV"
+export CPPFLAGS
+declare -x CONFIG_SHELL="bash"
+export CONFIG_SHELL
+declare -x LD="/system/gnu_library/bin/gcc.pm"
+export LD
+declare -x MAKE="/system/gnu_library/bin/gmake.pm"
+export MAKE
+declare -x RANLIB=":"
+export RANLIB
+declare -x SHELL="/system/gnu_library/bin/bash.pm"
+export SHELL
+#
+bash Configure -Dusedevel -des
diff --git a/vos/make_full_perl.sh b/vos/make_full_perl.sh
new file mode 100644
index 0000000000..8abdafc78b
--- /dev/null
+++ b/vos/make_full_perl.sh
@@ -0,0 +1,3 @@
+# This macro makes full perl and runs its test scripts
+gmake
+gmake test
diff --git a/vos/perl.bind b/vos/perl.bind
index 6531c05086..7206c363f9 100644
--- a/vos/perl.bind
+++ b/vos/perl.bind
@@ -26,6 +26,7 @@ modules: miniperlmain,
pp_sort,
pp_sys,
reentr,
+ regcomp,
regexec,
run,
scope,
@@ -35,6 +36,7 @@ modules: miniperlmain,
universal,
utf8,
util,
+ vos,
xsutils;
end;
diff --git a/wince/Makefile.ce b/wince/Makefile.ce
index a4b4bf4b66..1f94645248 100644
--- a/wince/Makefile.ce
+++ b/wince/Makefile.ce
@@ -6,19 +6,32 @@ SRCDIR = ..
PV = 57
INST_VER = 5.7.3
+# INSTALL_ROOT specifies a path where this perl will be installed on CE device
INSTALL_ROOT=/netzwerk/sprache/perl
+INST_TOP=$(INSTALL_ROOT)
+INST_VER=
# PERLCEDIR shoud be set to current directory
PERLCEDIR = H:\src\wince\perl\wince
-WCEROOT = N:\Windows CE Tools
+# WCEROOT is a directory where Windows CE Tools was installed
WCEROOT = D:\Windows CE Tools
-NTPERL = N:\Programme\perl\bin\perl.exe
-NTPERL = D:\Programme\ActiveState\perl-5.6\bin\Perl.exe
-CEPATH = N:\Programme\Microsoft eMbedded Tools\EVC\WCE211\BIN
+
+# HPERL stands for host perl, which is perl on local desktop machine
+# which is usually ..\miniperl.exe
+#HPERL = N:\Programme\perl\bin\perl.exe
+HPERL = $(MAKEDIR)\..\miniperl.exe
+
CEPATH = D:\Programme\Microsoft eMbedded Tools\EVC\WCE211\BIN
CELIBDLLDIR = h:\src\wince\celib-palm-3.0
CECONSOLEDIR = h:\src\wince\w32console
+
+# specify following options to build perl on local machine, by MSVC
+MSVCDIR = D:\MSVStudio\VC98
+CCHOME = $(MSVCDIR)
+CCINCDIR = $(CCHOME)\include
+CCLIBDIR = $(CCHOME)\lib
+
# Only for WIN2000
#YES = /y
COPY = copy $(YES)
@@ -28,6 +41,15 @@ RCOPY = xcopy $(YES) /f /r /i /e /d
# cecopy program. Make shure it is in your path, as well as cemkdir, cedel
CECOPY = cecopy
+#
+# Comment out next assign to disable perl's I/O subsystem and use compiler's
+# stdio for IO - depending on your compiler vendor and run time library you may
+# then get a number of fails from make test i.e. bugs - complain to them not us ;-).
+# You will also be unable to take full advantage of perl5.8's support for multiple
+# encodings and may see lower IO performance. You have been warned.
+USE_PERLIO = define
+
+
NOOP = @echo
# keep this untouched!
NULL =
@@ -377,6 +399,10 @@ USE_ITHREADS = undef
USE_IMP_SYS = undef
!ENDIF
+!IF "$(USE_PERLIO)" == ""
+USE_PERLIO = undef
+!ENDIF
+
!IF "$(USE_PERLCRT)" == ""
USE_PERLCRT = undef
!ENDIF
@@ -398,6 +424,14 @@ BUILDOPT = $(BUILDOPT) -DPERL_IMPLICIT_CONTEXT
BUILDOPT = $(BUILDOPT) -DPERL_IMPLICIT_SYS
!ENDIF
+!IF "$(USE_PERLIO)" == "define"
+BUILDOPT = $(BUILDOPT) -DUSE_PERLIO
+!ENDIF
+
+!IF "$(CROSS_NAME)" == ""
+CROSS_NAME = wince
+!ENDIF
+
# new option - automatically defined in perl.h...
#BUILDOPT = $(BUILDOPT) -DUSE_ENVIRON_ARRAY
@@ -500,7 +534,7 @@ CFGH_TMPL = config_H.ce
#
# filenames given to xsubpp must have forward slashes (since it puts
# full pathnames in #line strings)
-XSUBPP = $(NTPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp \
+XSUBPP = $(HPERL) -I..\..\lib ..\$(EXTUTILSDIR)\xsubpp \
-C++ -prototypes
MICROCORE_SRC = \
@@ -713,6 +747,7 @@ CFG_VARS = \
"useithreads=$(USE_ITHREADS)" \
"usethreads=$(USE_5005THREADS)" \
"usemultiplicity=$(USE_MULTI)" \
+ "useperlio=$(USE_PERLIO)" \
"LINK_FLAGS=$(LDLIBPATH) $(LINK_FLAGS) $(SUBSYS)" \
"optimize=$(OPTIMIZE)"
@@ -720,24 +755,25 @@ CFG_VARS = \
# Top targets
#
-all: $(MINIMOD) $(CONFIGPM) $(PERLEXE)
+all: hostminiperl $(MINIMOD) $(CONFIGPM) $(PERLEXE)
$(DYNALOADER)$(o) : $(DYNALOADER).c $(CORE_H) $(EXTDIR)\DynaLoader\dlutils.c
$(CONFIGPM): config.h ..\config.sh ..\minimod.pl
- cd .. && $(NTPERL) configpm
+ cd .. && $(HPERL) configpm
+ cd .. && $(HPERL) configpm --cross=$(CROSS_NAME) --no-glossary
-mkdir $(COREDIR)
$(XCOPY) ..\*.h $(COREDIR)\*.*
$(XCOPY) *.h $(COREDIR)\*.*
$(XCOPY) ..\ext\re\re.pm $(LIBDIR)\*.*
$(RCOPY) include $(COREDIR)\*.*
- $(NTPERL) -I..\lib config_h.PL "INST_VER=$(INST_VER)"
+ $(HPERL) -I..\lib config_h.PL "INST_VER=$(INST_VER)"
..\config.sh config.h: config.ce config_sh.PL
- $(NTPERL) -I..\lib config_sh.PL $(CFG_VARS) config.ce > ..\config.sh
+ $(HPERL) -I..\lib config_sh.PL $(CFG_VARS) config.ce > ..\config.sh
$(MINIMOD) : ..\minimod.pl
- cd .. && $(NTPERL) minimod.pl > lib\ExtUtils\Miniperl.pm
+ cd .. && $(HPERL) minimod.pl > lib\ExtUtils\Miniperl.pm
perlmain.c : runperl.c
$(COPY) runperl.c perlmain.c
@@ -745,8 +781,8 @@ perlmain.c : runperl.c
$(DYNALOADER).c: $(EXTDIR)\DynaLoader\dl_win32.xs $(CONFIGPM)
if not exist $(AUTODIR) mkdir $(AUTODIR)
cd $(EXTDIR)\$(*B)
- $(NTPERL) -I..\..\lib $(*B)_pm.PL
- $(NTPERL) -I..\..\lib XSLoader_pm.PL
+ $(HPERL) -I..\..\lib $(*B)_pm.PL
+ $(HPERL) -I..\..\lib XSLoader_pm.PL
cd ..\..\wince
$(XCOPY) $(EXTDIR)\$(*B)\$(*B).pm $(LIBDIR)\$(NULL)
$(XCOPY) $(EXTDIR)\$(*B)\XSLoader.pm $(LIBDIR)\$(NULL)
@@ -759,103 +795,103 @@ $(EXTDIR)\DynaLoader\dl_win32.xs: dl_win32.xs
$(DUMPER_DLL): $(PERLEXE) $(DUMPER).xs
cd $(EXTDIR)\Data\$(*B)
- $(NTPERL) -I..\..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+ $(HPERL) -I..\..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
$(MAKE)
cd ..\..\..\wince
$(DPROF_DLL): $(PERLEXE) $(DPROF).xs
cd $(EXTDIR)\Devel\$(*B)
- $(NTPERL) -I..\..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+ $(HPERL) -I..\..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
$(MAKE)
cd ..\..\..\wince
$(GLOB_DLL): $(PERLEXE) $(GLOB).xs
cd $(EXTDIR)\File\$(*B)
- $(NTPERL) -I..\..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+ $(HPERL) -I..\..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
$(MAKE)
cd ..\..\..\wince
$(PEEK_DLL): $(PERLEXE) $(PEEK).xs
cd $(EXTDIR)\Devel\$(*B)
- $(NTPERL) -I..\..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+ $(HPERL) -I..\..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
$(MAKE)
cd ..\..\..\wince
$(RE_DLL): $(PERLEXE) $(RE).xs
cd $(EXTDIR)\$(*B)
- $(NTPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+ $(HPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
$(MAKE)
cd ..\..\wince
$(B_DLL): $(PERLEXE) $(B).xs
cd $(EXTDIR)\$(*B)
- $(NTPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+ $(HPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
$(MAKE)
cd ..\..\wince
$(THREAD_DLL): $(PERLEXE) $(THREAD).xs
cd $(EXTDIR)\$(*B)
- $(NTPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+ $(HPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
$(MAKE)
cd ..\..\wince
$(ATTRS_DLL): $(PERLEXE) $(ATTRS).xs
cd $(EXTDIR)\$(*B)
- $(NTPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+ $(HPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
$(MAKE)
cd ..\..\wince
$(POSIX_DLL): $(PERLEXE) $(POSIX).xs
cd $(EXTDIR)\$(*B)
- $(NTPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+ $(HPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
$(MAKE)
cd ..\..\wince
$(IO_DLL): $(PERLEXE) $(IO).xs
cd $(EXTDIR)\$(*B)
- $(NTPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+ $(HPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
$(MAKE)
cd ..\..\wince
$(SDBM_FILE_DLL) : $(PERLEXE) $(SDBM_FILE).xs
cd $(EXTDIR)\$(*B)
- $(NTPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+ $(HPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
$(MAKE)
cd ..\..\wince
$(FCNTL_DLL): $(PERLEXE) $(FCNTL).xs
cd $(EXTDIR)\$(*B)
- $(NTPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+ $(HPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
$(MAKE)
cd ..\..\wince
$(OPCODE_DLL): $(PERLEXE) $(OPCODE).xs
cd $(EXTDIR)\$(*B)
- $(NTPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+ $(HPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
$(MAKE)
cd ..\..\wince
$(SOCKET_DLL): $(PERLEXE) $(SOCKET).xs
cd $(EXTDIR)\$(*B)
- $(NTPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+ $(HPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
$(MAKE)
cd ..\..\wince
$(HOSTNAME_DLL): $(PERLEXE) $(HOSTNAME).xs
cd $(EXTDIR)\Sys\$(*B)
- $(NTPERL) -I..\..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+ $(HPERL) -I..\..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
$(MAKE)
cd ..\..\..\wince
$(BYTELOADER_DLL): $(PERLEXE) $(BYTELOADER).xs
cd $(EXTDIR)\$(*B)
- $(NTPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+ $(HPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
$(MAKE)
cd ..\..\wince
$(ERRNO_PM): $(PERLEXE) $(ERRNO)_pm.PL
cd $(EXTDIR)\$(*B)
- $(NTPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
+ $(HPERL) -I..\..\lib Makefile.PL PERL_CORE=1 INSTALLDIRS=perl
$(MAKE)
cd ..\..\wince
@@ -875,7 +911,7 @@ clean:
install_perlexe: $(PERLEXE)
cedel /speicherkarte2/bin/perl.exe
- $(CECOPY) pc:../perl.exe ce:/speicherkarte2/bin
+ $(CECOPY) pc:../perl.exe ce:$(INSTALL_ROOT)/bin
install_perldll: $(PERLDLL)
cedel /speicherkarte2/bin/perl$(PV).dll
@@ -888,17 +924,17 @@ test_perl:
ceexec /speicherkarte2/bin/perl.exe /speicherkarte2/bin/test.pl
install_lib: ../lib/Config.pm
- $(CECOPY) pc:../lib/Config.pm ce:/speicherkarte2/usr/lib/perl5
+ $(CECOPY) pc:../lib/Config.pm ce:$(INSTALL_ROOT)/lib
!ELSEIF "$(MACHINE)" == "wince-arm-hpc"
install_perlexe: $(PERLEXE)
-cedel /speicherkarte/bin/perl.exe
- $(CECOPY) pc:$(MACHINE)/perl.exe ce:/speicherkarte/bin
+ $(CECOPY) pc:$(MACHINE)/perl.exe ce:$(INSTALL_ROOT)/bin
install_perldll: $(PERLDLL)
-cedel /speicherkarte/bin/perl$(PV).dll
- $(CECOPY) pc:$(MACHINE)/perl$(PV).dll ce:/speicherkarte/bin
+ $(CECOPY) pc:$(MACHINE)/perl$(PV).dll ce:$(INSTALL_ROOT)/bin
install_perl: install_perlexe install_perldll
@@ -907,7 +943,7 @@ test_perl:
ceexec /speicherkarte/bin/perl.exe /speicherkarte/bin/test.pl
install_lib: ../lib/Config.pm
- $(CECOPY) pc:../lib/Config.pm ce:/speicherkarte/usr/lib/perl5
+ $(CECOPY) pc:../lib/Config.pm ce:$(INSTALL_ROOT)/lib
!ELSEIF "$(MACHINE)" == "wince-mips-hpc"
@@ -924,7 +960,7 @@ test_perl:
ceexec /netzwerk/compaq/bin/perl.exe $(INSTALL_ROOT)/test.pl
install_lib: ../lib/Config.pm
- $(CECOPY) pc:../lib/Config.pm ce:/netzwerk/compaq/usr/lib/perl5
+ $(CECOPY) pc:../lib/Config.pm ce:$(INSTALL_ROOT)/lib
!ELSEIF "$(MACHINE)" == "wince-x86em-pocket"
@@ -934,10 +970,10 @@ install_lib:
ftpcopy ../lib/Exporter/Heavy.pm ftp!ftp@localhost:/perl/lib/Exporter
install_perlexe: $(PERLEXE)
- $(CECOPY) pc:../perl.exe ce:/netzwerk/compaq/bin
+ $(CECOPY) pc:../perl.exe ce:$(INSTALL_ROOT)/bin
install_perldll: $(PERLDLL)
- $(CECOPY) pc:../perl$(PV).dll ce:/netzwerk/compaq/bin
+ $(CECOPY) pc:../perl$(PV).dll ce:$(INSTALL_ROOT)/bin
install_perl: install_perlexe install_perldll
@@ -994,6 +1030,10 @@ $(DLLDIR)\DynaLoader.obj
{$(SRCDIR)/wince}.c{$(DLLDIR)}.obj:
$(CC) -c $(CFLAGS) -DPERL_EXTERNAL_GLOB -Fo$(DLLDIR)\ $<
+perldll.def : $(HPERL) $(CONFIGPM) ..\global.sym ..\pp.sym ..\makedef.pl
+ $(HPERL) -w ..\makedef.pl PLATFORM=wince $(OPTIMIZE) $(DEFINES) $(BUILDOPT) \
+ CCTYPE=$(CCTYPE) -DPERL_DLL=$(PERLDLL) > perldll.def
+
$(PERLDLL) : $(DLLDIR) perldll.def $(XDLLOBJS) $(PERLDLL_RES)
$(LINK32) -dll -def:perldll.def -out:$@ \
$(SUBSYS) $(LDLIBPATH) \
@@ -1049,43 +1089,33 @@ makedist: all dlls
!if "$(MACHINE)" == "wince-arm-hpc-wce300"
install: all
- $(CECOPY) pc:$(MACHINE)/perl.exe ce:/speicherkarte/bin
- $(CECOPY) pc:$(MACHINE)/perl$(PV).dll ce:/speicherkarte/bin
+ $(CECOPY) pc:$(MACHINE)/perl.exe ce:$(INSTALL_ROOT)/bin
+ $(CECOPY) pc:$(MACHINE)/perl$(PV).dll ce:$(INSTALL_ROOT)/bin
install_dlls: dlls
- $(CECOPY) pc:../lib/auto/IO/io.dll ce:/speicherkarte/usr/lib/perl5/auto/IO/io.dll
+ $(CECOPY) pc:../lib/auto/IO/io.dll ce:$(INSTALL_ROOT)/lib/auto/IO/io.dll
!else
install: all
-cemkdir "$(INSTALL_ROOT)"
-cemkdir "$(INSTALL_ROOT)\bin"
-cemkdir "$(INSTALL_ROOT)\lib"
$(CECOPY) "pc:$(MACHINE)/perl.exe" "ce:$(INSTALL_ROOT)/bin"
- $(CECOPY) "pc:$(MACHINE)/perl.dll" "ce:$(INSTALL_ROOT)/bin"
- $(CECOPY) "pc:../lib/Config.pm" "ce:$(INSTALL_ROOT)/lib"
+ $(CECOPY) "pc:$(MACHINE)/perl$(PV).dll" "ce:$(INSTALL_ROOT)/bin"
+ $(CECOPY) "pc:../xlib/wince/Config.pm" "ce:$(INSTALL_ROOT)/lib"
!endif
-!if "$(MACHINE)" == "wince-arm-hpc-wce211"
-install: all
- $(CECOPY) pc:$(MACHINE)/perl.exe ce:/speicherkarte/bin
- $(CECOPY) pc:$(MACHINE)/perl$(PV).dll ce:/speicherkarte/bin
-!endif
-
-!if "$(MACHINE)" == "wince-mips-hpc-wce211"
-install:
- $(CECOPY) pc:$(MACHINE)/perl.exe ce:/bin
- $(CECOPY) pc:$(MACHINE)/perl$(PV).dll ce:/bin
-!endif
+perl.ico:
+ $(HPERL) makeico.pl
-!if "$(MACHINE)" == "wince-mips-hpc-wce200"
-install:
- $(CECOPY) pc:$(MACHINE)/perl.exe ce:/bin
- $(CECOPY) pc:$(MACHINE)/perl$(PV).dll ce:/bin
-!endif
+hostminiperl: ..\miniperl.exe
-!if "$(MACHINE)" == "wince-sh3-hpc-wce211"
-install:
- $(CECOPY) pc:$(MACHINE)/perl.exe ce:$(INSTALL_ROOT)/bin
- $(CECOPY) pc:$(MACHINE)/perl$(PV).dll ce:$(INSTALL_ROOT)/bin
-!endif
+..\miniperl.exe:
+ cd ../win32
+ set PATH=$(CCHOME)\bin;$(PATH)
+ $(MAKE) -f Makefile "CCHOME=$(MSVCDIR)" "CCINCDIR=$(CCHOME)\include" "CCLIBDIR=$(CCHOME)\lib" "INCLUDE=$(CCHOME)\include" "LIB=$(CCHOME)\lib" "LINK_FLAGS=" .\config.h ..\miniperl.exe
+ cd ../wince
-perl.ico:
- perl makeico.pl
+host-install:
+ perl -MConfig -MExtUtils::Install -we "install({'../lib/CORE', qq#$$Config{installprefixexp}/xlib/$(CROSS_NAME)/CORE#},1)"
+ perl -MConfig -MExtUtils::Install -we "install({'../xlib/$(CROSS_NAME)', qq#$$Config{installprefixexp}/xlib/$(CROSS_NAME)#},1)"
+ perl -MConfig -MFile::Copy -we "copy qq#./$(MACHINE)/perl$(PV).lib#, qq#$$Config{installprefixexp}/xlib/$(CROSS_NAME)/CORE#"
+ perl -MConfig -MFile::Copy -we "copy qq#../lib/Cross.pm#, qq#$$Config{installprefixexp}/lib#"
diff --git a/wince/README.compile b/wince/README.compile
index 30c3d479aa..3325402414 100644
--- a/wince/README.compile
+++ b/wince/README.compile
@@ -11,6 +11,34 @@ Socket and IO dlls compiled. Seem to work.
The sequence for building a new target is:
-make clean # clean up
-make all # build for target
+make -f Makefile.ce clean # clean up
+make -f Makefile.ce all # build for target
+CROSS_NAME macro is provided to name your current cross compilation.
+It is "wince" by default, but may be any other identifier to
+differentiate and co-exist miscellaneous configurations.
+So your command often will be
+
+make -f Makefile.ce all CROSS_NAME=[my-cross-name]
+
+It is implemented an easy way to build most of module extensions.
+First, you need to do
+
+ nmake host-install CROSS_NAME=[my-cross-name]
+
+This command will install a set of files into your perl directory.
+That will allow you to do cross-compiling for your CE device.
+Those files are C libraries, h-files, Cross.pm, Config.pm. Note
+that it will use first found perl in your path. You should think about
+your PATH variable and change it at your will before copying such files.
+
+After that to do cross-compiling you need to invoke
+
+ perl -MCross Makefile.PL
+
+or
+
+ perl -MCross=[my-cross-name] Makefile.PL
+
+to prepare Makefile, and then nmake, nmake install, as usually you do.
+'test' tartget is still not ready.
diff --git a/wince/cecopy-lib.pl b/wince/cecopy-lib.pl
index 8281b0c20c..f194ffd55a 100644
--- a/wince/cecopy-lib.pl
+++ b/wince/cecopy-lib.pl
@@ -12,8 +12,8 @@ sub mk {
$r=~/^(.*)\/[^\/]*?$/;
mk($1);
}
- system("$^X comp.pl --do cemkdir [p]\\lib\\$r");
- print STDERR "$^X comp.pl --do cemkpath [p]\\lib\\$r\n";
+ print STDERR "..\\miniperl.exe comp.pl --do cemkdir [p]\\lib\\$r\n";
+ system("..\\miniperl.exe -I..\\lib comp.pl --do cemkdir [p]\\lib\\$r");
$dirs{$r}++;
}
for (@files) {
@@ -22,7 +22,7 @@ for (@files) {
mk($1);
}
# currently no stripping POD
- system("$^X comp.pl --do cecopy pc:..\\lib\\$_ ce:[p]\\lib\\$_");
+ system("..\\miniperl.exe -I..\\lib comp.pl --copy pc:..\\lib\\$_ ce:[p]\\lib\\$_");
}
sub BEGIN {
diff --git a/wince/comp.pl b/wince/comp.pl
index 8ecc95855d..ea061ee280 100644
--- a/wince/comp.pl
+++ b/wince/comp.pl
@@ -2,21 +2,12 @@
helper script to make life for PerlCE easier.
-You need edit values for @defs array to reflect your changes and then do
-
- perl comp.pl [any-additional-options]
-
-This will call
- nmake -f Makefile.ce
-with most parameters overrided as you specified and additional options
-(such as build target) will also be prepended to command line to execute.
-
-There are also additional different modes for running this script:
+There are different modes for running this script:
perl comp.pl --run [any-command-line-arguments]
and
perl comp.pl --do [any-command-line-arguments]
and
- perl comp.pl --copy-pm pc:[pc-location] ce:[ce-location]
+ perl comp.pl --copy pc:[pc-location] ce:[ce-location]
--run executes this build of perl on CE device with arguments provided
--run=test will display a predefined messagebox that say everything is ok.
@@ -37,32 +28,16 @@ and
=cut
-use Cwd;
use strict;
+use Cross;
+use Config;
# edit value of $inst_root variable to reflect your desired location of
# built perl
-my $inst_root = "\\Storage Card\\perl-tests\\perl\@16225";
-my @defs = (
- "\"PV=\"",
- "\"INST_VER=\"",
- "\"INSTALL_ROOT=$inst_root\"",
- "\"WCEROOT=$ENV{SDKROOT}\"",
- "NTPERL=$^X", #todo: check version: this must be (almost?) current version
- "\"CEPATH=$ENV{WCEROOT}\"",
- "CELIBDLLDIR=d:\\personal\\pocketPC\\celib-palm-3.0",
- "CECONSOLEDIR=d:\\personal\\pocketPC\\w32console",
- "YES=/y",
- "CFG=RELEASE",
- "MACHINE=wince-mips-pocket-wce300",
- "PERLCEDIR=".cwd,
- #NIY "\"CECOPY=\$(NTPERL) \$(PERLCEDIR)\\$0 --copy=compact\"",
- "\"CECOPY=\$(NTPERL) \$(PERLCEDIR)\\$0 --copy\"",
-);
+my $inst_root = $Config{prefix};
my %opts = (
- # %known_opts enumerates allowed opts as well as specifies default
- # and initial values
+ # %known_opts enumerates allowed opts as well as specifies default and initial values
my %known_opts = (
'do' => '',
'run' => '',
@@ -98,9 +73,7 @@ elsif ($opts{'copy'}) {
system("cecopy",@ARGV);
}
else {
- my $cmd = "nmake -f Makefile.ce @defs @ARGV";
- print $cmd;
- system($cmd);
+ # todo
}
diff --git a/wince/compile.bat b/wince/compile.bat
new file mode 100644
index 0000000000..582d422e81
--- /dev/null
+++ b/wince/compile.bat
@@ -0,0 +1,25 @@
+@echo off
+rem
+rem edit ARG-xxx variable to reflect your system and run
+rem compile.bat [target] [additional parameters for nmake]
+rem
+
+set ARG-1=PV=
+set ARG-2=INST_VER=
+set ARG-3=INSTALL_ROOT=\Storage Card\perl-tests\perl@16376
+set ARG-4=WCEROOT=%SDKROOT%
+set ARG-5=CEPATH=%WCEROOT%
+set ARG-6=CELIBDLLDIR=d:\personal\pocketPC\celib-palm-3.0
+set ARG-7=CECONSOLEDIR=d:\personal\pocketPC\w32console
+
+rem Only for WIN2000
+set ARG-8=YES=/y
+
+set ARG-9=CFG=RELEASE
+set ARG-10=MACHINE=wince-mips-pocket-wce300
+set ARG-11=PERLCEDIR=$(MAKEDIR)
+set ARG-12=MSVCDIR=D:\MSVStudio\VC98
+set ARG-13=CECOPY=$(HPERL) -I$(PERLCEDIR)\lib $(PERLCEDIR)\comp.pl --copy
+set ARG-14=USE_PERLIO=undef
+
+nmake -f Makefile.ce "%ARG-1%" "%ARG-2%" "%ARG-3%" "%ARG-4%" "%ARG-5%" "%ARG-6%" "%ARG-7%" "%ARG-8%" "%ARG-9%" "%ARG-10%" "%ARG-11%" "%ARG-12%" "%ARG-13%" "%ARG-14%" %1 %2 %3 %4 %5 %6 %7 %8 %9
diff --git a/wince/config.ce b/wince/config.ce
index 9e42882296..07eed645f3 100644
--- a/wince/config.ce
+++ b/wince/config.ce
@@ -43,7 +43,7 @@ byteorder='1234'
c=''
castflags='0'
cat='type'
-cc='cl'
+cc='~CC~'
cccdlflags=' '
ccdlflags=' '
ccflags='-DWIN32'
@@ -61,14 +61,14 @@ compress=''
contains='grep'
cp='copy'
cpio=''
-cpp='cl -nologo -E'
+cpp='~CC~ -nologo -E'
cpp_stuff='42'
cppccsymbols=''
cppflags='-DWIN32'
cpplast=''
cppminus=''
-cpprun='cl -nologo -E'
-cppstdin='cl -nologo -E'
+cpprun='~CC~ -nologo -E'
+cppstdin='~CC~ -nologo -E'
cppsymbols=''
crosscompile='undef'
crypt_r_proto='0'
@@ -331,7 +331,7 @@ d_setgrps='undef'
d_sethent='undef'
d_sethostent_r='undef'
d_setlinebuf='undef'
-d_setlocale='undef'
+d_setlocale='define'
d_setlocale_r='undef'
d_setnent='undef'
d_setnetent_r='undef'
@@ -379,7 +379,7 @@ d_stdio_stream_array='undef'
d_stdiobase='undef'
d_stdstdio='undef'
d_strchr='define'
-d_strcoll='undef'
+d_strcoll='define'
d_strctcpy='define'
d_strerrm='strerror(e)'
d_strerror='define'
@@ -529,6 +529,7 @@ i_gdbm='undef'
i_grp='undef'
i_ieeefp='undef'
i_inttypes='undef'
+i_langinfo='undef'
i_limits='define'
i_locale='undef'
i_machcthr='undef'
@@ -542,6 +543,7 @@ i_neterrno='undef'
i_netinettcp='undef'
i_niin='undef'
i_poll='undef'
+i_prot='undef'
i_pthread='undef'
i_pwd='undef'
i_rpcsvcdbm='define'
@@ -701,6 +703,7 @@ optimize='-O'
orderlib='false'
osname='MSWin32'
osvers='4.0'
+otherlibdirs=''
package='perl5'
pager='more /e'
passcat=''
@@ -852,7 +855,7 @@ use5005threads='undef'
use64bitall='undef'
use64bitint='undef'
usedl='define'
-useithreads='undef'
+useithreads='~USE_ITHREADS~'
uselargefiles='undef'
uselongdouble='undef'
usemorebits='undef'
@@ -860,7 +863,7 @@ usemultiplicity='undef'
usemymalloc='n'
usenm='false'
useopcode='true'
-useperlio='define'
+useperlio='~USE_PERLIO~'
useposix='true'
usesfio='false'
useshrplib='yes'
diff --git a/wince/config.h b/wince/config.h
deleted file mode 100644
index 53ed69c65d..0000000000
--- a/wince/config.h
+++ /dev/null
@@ -1,3430 +0,0 @@
-/*
- * This file was produced by running the config_h.SH script, which
- * gets its values from undef, which is generally produced by
- * running Configure.
- *
- * Feel free to modify any of this as the need arises. Note, however,
- * that running config_h.SH again will wipe out any changes you've made.
- * For a more permanent change edit undef and rerun config_h.SH.
- *
- * $Id: Config_h.U,v 3.0.1.5 1997/02/28 14:57:43 ram Exp $
- */
-
-/*
- * Package name : perl5
- * Source directory :
- * Configuration time: Wed Aug 1 21:35:14 2001
- * Configured by : Rainer Keuchel
- * Target system :
- */
-
-#ifndef _config_h_
-#define _config_h_
-
-/* LOC_SED:
- * This symbol holds the complete pathname to the sed program.
- */
-#define LOC_SED "" /**/
-
-/* HAS_ALARM:
- * This symbol, if defined, indicates that the alarm routine is
- * available.
- */
-/*#define HAS_ALARM /**/
-
-/* HASATTRIBUTE:
- * This symbol indicates the C compiler can check for function attributes,
- * such as printf formats. This is normally only supported by GNU cc.
- */
-/*#define HASATTRIBUTE /**/
-#ifndef HASATTRIBUTE
-#define __attribute__(_arg_)
-#endif
-
-/* HAS_BCMP:
- * This symbol is defined if the bcmp() routine is available to
- * compare blocks of memory.
- */
-/*#define HAS_BCMP /**/
-
-/* HAS_BCOPY:
- * This symbol is defined if the bcopy() routine is available to
- * copy blocks of memory.
- */
-/*#define HAS_BCOPY /**/
-
-/* HAS_BZERO:
- * This symbol is defined if the bzero() routine is available to
- * set a memory block to 0.
- */
-/*#define HAS_BZERO /**/
-
-/* HAS_CHOWN:
- * This symbol, if defined, indicates that the chown routine is
- * available.
- */
-/*#define HAS_CHOWN /**/
-
-/* HAS_CHROOT:
- * This symbol, if defined, indicates that the chroot routine is
- * available.
- */
-/*#define HAS_CHROOT /**/
-
-/* HAS_CHSIZE:
- * This symbol, if defined, indicates that the chsize routine is available
- * to truncate files. You might need a -lx to get this routine.
- */
-#define HAS_CHSIZE /**/
-
-/* HASCONST:
- * This symbol, if defined, indicates that this C compiler knows about
- * the const type. There is no need to actually test for that symbol
- * within your programs. The mere use of the "const" keyword will
- * trigger the necessary tests.
- */
-#define HASCONST /**/
-#ifndef HASCONST
-#define const
-#endif
-
-/* HAS_CRYPT:
- * This symbol, if defined, indicates that the crypt routine is available
- * to encrypt passwords and the like.
- */
-/*#define HAS_CRYPT /**/
-
-/* HAS_CUSERID:
- * This symbol, if defined, indicates that the cuserid routine is
- * available to get character login names.
- */
-/*#define HAS_CUSERID /**/
-
-/* HAS_DBL_DIG:
- * This symbol, if defined, indicates that this system's <float.h>
- * or <limits.h> defines the symbol DBL_DIG, which is the number
- * of significant digits in a double precision number. If this
- * symbol is not defined, a guess of 15 is usually pretty good.
- */
-#define HAS_DBL_DIG /**/
-
-/* HAS_DIFFTIME:
- * This symbol, if defined, indicates that the difftime routine is
- * available.
- */
-#define HAS_DIFFTIME /**/
-
-/* HAS_DLERROR:
- * This symbol, if defined, indicates that the dlerror routine is
- * available to return a string describing the last error that
- * occurred from a call to dlopen(), dlclose() or dlsym().
- */
-#define HAS_DLERROR /**/
-
-/* HAS_DUP2:
- * This symbol, if defined, indicates that the dup2 routine is
- * available to duplicate file descriptors.
- */
-#define HAS_DUP2 /**/
-
-/* HAS_FCHMOD:
- * This symbol, if defined, indicates that the fchmod routine is available
- * to change mode of opened files. If unavailable, use chmod().
- */
-/*#define HAS_FCHMOD /**/
-
-/* HAS_FCHOWN:
- * This symbol, if defined, indicates that the fchown routine is available
- * to change ownership of opened files. If unavailable, use chown().
- */
-/*#define HAS_FCHOWN /**/
-
-/* HAS_FCNTL:
- * This symbol, if defined, indicates to the C program that
- * the fcntl() function exists.
- */
-/*#define HAS_FCNTL /**/
-
-/* HAS_FGETPOS:
- * This symbol, if defined, indicates that the fgetpos routine is
- * available to get the file position indicator, similar to ftell().
- */
-#define HAS_FGETPOS /**/
-
-/* HAS_FLOCK:
- * This symbol, if defined, indicates that the flock routine is
- * available to do file locking.
- */
-/*#define HAS_FLOCK /**/
-
-/* HAS_FORK:
- * This symbol, if defined, indicates that the fork routine is
- * available.
- */
-/*#define HAS_FORK /**/
-
-/* HAS_FSETPOS:
- * This symbol, if defined, indicates that the fsetpos routine is
- * available to set the file position indicator, similar to fseek().
- */
-#define HAS_FSETPOS /**/
-
-/* HAS_GETTIMEOFDAY:
- * This symbol, if defined, indicates that the gettimeofday() system
- * call is available for a sub-second accuracy clock. Usually, the file
- * <sys/resource.h> needs to be included (see I_SYS_RESOURCE).
- * The type "Timeval" should be used to refer to "struct timeval".
- */
-/*#define HAS_GETTIMEOFDAY /**/
-#ifdef HAS_GETTIMEOFDAY
-#define Timeval struct timeval /* Structure used by gettimeofday() */
-#endif
-
-/* HAS_GETGROUPS:
- * This symbol, if defined, indicates that the getgroups() routine is
- * available to get the list of process groups. If unavailable, multiple
- * groups are probably not supported.
- */
-/*#define HAS_GETGROUPS /**/
-
-/* HAS_GETLOGIN:
- * This symbol, if defined, indicates that the getlogin routine is
- * available to get the login name.
- */
-#define HAS_GETLOGIN /**/
-
-/* HAS_GETPGID:
- * This symbol, if defined, indicates to the C program that
- * the getpgid(pid) function is available to get the
- * process group id.
- */
-/*#define HAS_GETPGID /**/
-
-/* HAS_GETPGRP2:
- * This symbol, if defined, indicates that the getpgrp2() (as in DG/UX)
- * routine is available to get the current process group.
- */
-/*#define HAS_GETPGRP2 /**/
-
-/* HAS_GETPPID:
- * This symbol, if defined, indicates that the getppid routine is
- * available to get the parent process ID.
- */
-/*#define HAS_GETPPID /**/
-
-/* HAS_GETPRIORITY:
- * This symbol, if defined, indicates that the getpriority routine is
- * available to get a process's priority.
- */
-/*#define HAS_GETPRIORITY /**/
-
-/* HAS_INET_ATON:
- * This symbol, if defined, indicates to the C program that the
- * inet_aton() function is available to parse IP address "dotted-quad"
- * strings.
- */
-/*#define HAS_INET_ATON /**/
-
-/* HAS_KILLPG:
- * This symbol, if defined, indicates that the killpg routine is available
- * to kill process groups. If unavailable, you probably should use kill
- * with a negative process number.
- */
-/*#define HAS_KILLPG /**/
-
-/* HAS_LINK:
- * This symbol, if defined, indicates that the link routine is
- * available to create hard links.
- */
-#define HAS_LINK /**/
-
-/* HAS_LOCALECONV:
- * This symbol, if defined, indicates that the localeconv routine is
- * available for numeric and monetary formatting conventions.
- */
-#define HAS_LOCALECONV /**/
-
-/* HAS_LOCKF:
- * This symbol, if defined, indicates that the lockf routine is
- * available to do file locking.
- */
-/*#define HAS_LOCKF /**/
-
-/* HAS_LSTAT:
- * This symbol, if defined, indicates that the lstat routine is
- * available to do file stats on symbolic links.
- */
-/*#define HAS_LSTAT /**/
-
-/* HAS_MBLEN:
- * This symbol, if defined, indicates that the mblen routine is available
- * to find the number of bytes in a multibye character.
- */
-#define HAS_MBLEN /**/
-
-/* HAS_MBSTOWCS:
- * This symbol, if defined, indicates that the mbstowcs routine is
- * available to covert a multibyte string into a wide character string.
- */
-#define HAS_MBSTOWCS /**/
-
-/* HAS_MBTOWC:
- * This symbol, if defined, indicates that the mbtowc routine is available
- * to covert a multibyte to a wide character.
- */
-#define HAS_MBTOWC /**/
-
-/* HAS_MEMCMP:
- * This symbol, if defined, indicates that the memcmp routine is available
- * to compare blocks of memory.
- */
-#define HAS_MEMCMP /**/
-
-/* HAS_MEMCPY:
- * This symbol, if defined, indicates that the memcpy routine is available
- * to copy blocks of memory.
- */
-#define HAS_MEMCPY /**/
-
-/* HAS_MEMMOVE:
- * This symbol, if defined, indicates that the memmove routine is available
- * to copy potentially overlapping blocks of memory. This should be used
- * only when HAS_SAFE_BCOPY is not defined. If neither is there, roll your
- * own version.
- */
-#define HAS_MEMMOVE /**/
-
-/* HAS_MEMSET:
- * This symbol, if defined, indicates that the memset routine is available
- * to set blocks of memory.
- */
-#define HAS_MEMSET /**/
-
-/* HAS_MKDIR:
- * This symbol, if defined, indicates that the mkdir routine is available
- * to create directories. Otherwise you should fork off a new process to
- * exec /bin/mkdir.
- */
-#define HAS_MKDIR /**/
-
-/* HAS_MKFIFO:
- * This symbol, if defined, indicates that the mkfifo routine is
- * available to create FIFOs. Otherwise, mknod should be able to
- * do it for you. However, if mkfifo is there, mknod might require
- * super-user privileges which mkfifo will not.
- */
-/*#define HAS_MKFIFO /**/
-
-/* HAS_MKTIME:
- * This symbol, if defined, indicates that the mktime routine is
- * available.
- */
-#define HAS_MKTIME /**/
-
-/* HAS_MSYNC:
- * This symbol, if defined, indicates that the msync system call is
- * available to synchronize a mapped file.
- */
-/*#define HAS_MSYNC /**/
-
-/* HAS_MUNMAP:
- * This symbol, if defined, indicates that the munmap system call is
- * available to unmap a region, usually mapped by mmap().
- */
-/*#define HAS_MUNMAP /**/
-
-/* HAS_NICE:
- * This symbol, if defined, indicates that the nice routine is
- * available.
- */
-/*#define HAS_NICE /**/
-
-/* HAS_PATHCONF:
- * This symbol, if defined, indicates that pathconf() is available
- * to determine file-system related limits and options associated
- * with a given filename.
- */
-/* HAS_FPATHCONF:
- * This symbol, if defined, indicates that pathconf() is available
- * to determine file-system related limits and options associated
- * with a given open file descriptor.
- */
-/*#define HAS_PATHCONF /**/
-/*#define HAS_FPATHCONF /**/
-
-/* HAS_PAUSE:
- * This symbol, if defined, indicates that the pause routine is
- * available to suspend a process until a signal is received.
- */
-#define HAS_PAUSE /**/
-
-/* HAS_PIPE:
- * This symbol, if defined, indicates that the pipe routine is
- * available to create an inter-process channel.
- */
-/*#define HAS_PIPE /**/
-
-/* HAS_POLL:
- * This symbol, if defined, indicates that the poll routine is
- * available to poll active file descriptors. You may safely
- * include <poll.h> when this symbol is defined.
- */
-/*#define HAS_POLL /**/
-
-/* HAS_READDIR:
- * This symbol, if defined, indicates that the readdir routine is
- * available to read directory entries. You may have to include
- * <dirent.h>. See I_DIRENT.
- */
-#define HAS_READDIR /**/
-
-/* HAS_SEEKDIR:
- * This symbol, if defined, indicates that the seekdir routine is
- * available. You may have to include <dirent.h>. See I_DIRENT.
- */
-#define HAS_SEEKDIR /**/
-
-/* HAS_TELLDIR:
- * This symbol, if defined, indicates that the telldir routine is
- * available. You may have to include <dirent.h>. See I_DIRENT.
- */
-#define HAS_TELLDIR /**/
-
-/* HAS_REWINDDIR:
- * This symbol, if defined, indicates that the rewinddir routine is
- * available. You may have to include <dirent.h>. See I_DIRENT.
- */
-#define HAS_REWINDDIR /**/
-
-/* HAS_READLINK:
- * This symbol, if defined, indicates that the readlink routine is
- * available to read the value of a symbolic link.
- */
-/*#define HAS_READLINK /**/
-
-/* HAS_RENAME:
- * This symbol, if defined, indicates that the rename routine is available
- * to rename files. Otherwise you should do the unlink(), link(), unlink()
- * trick.
- */
-#define HAS_RENAME /**/
-
-/* HAS_RMDIR:
- * This symbol, if defined, indicates that the rmdir routine is
- * available to remove directories. Otherwise you should fork off a
- * new process to exec /bin/rmdir.
- */
-#define HAS_RMDIR /**/
-
-/* HAS_SELECT:
- * This symbol, if defined, indicates that the select routine is
- * available to select active file descriptors. If the timeout field
- * is used, <sys/time.h> may need to be included.
- */
-#define HAS_SELECT /**/
-
-/* HAS_SETEGID:
- * This symbol, if defined, indicates that the setegid routine is available
- * to change the effective gid of the current program.
- */
-/*#define HAS_SETEGID /**/
-
-/* HAS_SETEUID:
- * This symbol, if defined, indicates that the seteuid routine is available
- * to change the effective uid of the current program.
- */
-/*#define HAS_SETEUID /**/
-
-/* HAS_SETLINEBUF:
- * This symbol, if defined, indicates that the setlinebuf routine is
- * available to change stderr or stdout from block-buffered or unbuffered
- * to a line-buffered mode.
- */
-/*#define HAS_SETLINEBUF /**/
-
-/* HAS_SETLOCALE:
- * This symbol, if defined, indicates that the setlocale routine is
- * available to handle locale-specific ctype implementations.
- */
-/*#define HAS_SETLOCALE /**/
-
-/* HAS_SETPGID:
- * This symbol, if defined, indicates that the setpgid(pid, gpid)
- * routine is available to set process group ID.
- */
-/*#define HAS_SETPGID /**/
-
-/* HAS_SETPGRP2:
- * This symbol, if defined, indicates that the setpgrp2() (as in DG/UX)
- * routine is available to set the current process group.
- */
-/*#define HAS_SETPGRP2 /**/
-
-/* HAS_SETPRIORITY:
- * This symbol, if defined, indicates that the setpriority routine is
- * available to set a process's priority.
- */
-/*#define HAS_SETPRIORITY /**/
-
-/* HAS_SETREGID:
- * This symbol, if defined, indicates that the setregid routine is
- * available to change the real and effective gid of the current
- * process.
- */
-/* HAS_SETRESGID:
- * This symbol, if defined, indicates that the setresgid routine is
- * available to change the real, effective and saved gid of the current
- * process.
- */
-/*#define HAS_SETREGID /**/
-/*#define HAS_SETRESGID /**/
-
-/* HAS_SETREUID:
- * This symbol, if defined, indicates that the setreuid routine is
- * available to change the real and effective uid of the current
- * process.
- */
-/* HAS_SETRESUID:
- * This symbol, if defined, indicates that the setresuid routine is
- * available to change the real, effective and saved uid of the current
- * process.
- */
-/*#define HAS_SETREUID /**/
-/*#define HAS_SETRESUID /**/
-
-/* HAS_SETRGID:
- * This symbol, if defined, indicates that the setrgid routine is available
- * to change the real gid of the current program.
- */
-/*#define HAS_SETRGID /**/
-
-/* HAS_SETRUID:
- * This symbol, if defined, indicates that the setruid routine is available
- * to change the real uid of the current program.
- */
-/*#define HAS_SETRUID /**/
-
-/* HAS_SETSID:
- * This symbol, if defined, indicates that the setsid routine is
- * available to set the process group ID.
- */
-/*#define HAS_SETSID /**/
-
-/* Shmat_t:
- * This symbol holds the return type of the shmat() system call.
- * Usually set to 'void *' or 'char *'.
- */
-/* HAS_SHMAT_PROTOTYPE:
- * This symbol, if defined, indicates that the sys/shm.h includes
- * a prototype for shmat(). Otherwise, it is up to the program to
- * guess one. Shmat_t shmat(int, Shmat_t, int) is a good guess,
- * but not always right so it should be emitted by the program only
- * when HAS_SHMAT_PROTOTYPE is not defined to avoid conflicting defs.
- */
-#define Shmat_t void * /**/
-/*#define HAS_SHMAT_PROTOTYPE /**/
-
-/* HAS_STRCHR:
- * This symbol is defined to indicate that the strchr()/strrchr()
- * functions are available for string searching. If not, try the
- * index()/rindex() pair.
- */
-/* HAS_INDEX:
- * This symbol is defined to indicate that the index()/rindex()
- * functions are available for string searching.
- */
-#define HAS_STRCHR /**/
-/*#define HAS_INDEX /**/
-
-/* HAS_STRCOLL:
- * This symbol, if defined, indicates that the strcoll routine is
- * available to compare strings using collating information.
- */
-/*#define HAS_STRCOLL /**/
-
-/* USE_STRUCT_COPY:
- * This symbol, if defined, indicates that this C compiler knows how
- * to copy structures. If undefined, you'll need to use a block copy
- * routine of some sort instead.
- */
-#define USE_STRUCT_COPY /**/
-
-/* HAS_STRTOD:
- * This symbol, if defined, indicates that the strtod routine is
- * available to provide better numeric string conversion than atof().
- */
-#define HAS_STRTOD /**/
-
-/* HAS_STRTOL:
- * This symbol, if defined, indicates that the strtol routine is available
- * to provide better numeric string conversion than atoi() and friends.
- */
-#define HAS_STRTOL /**/
-
-/* HAS_STRXFRM:
- * This symbol, if defined, indicates that the strxfrm() routine is
- * available to transform strings.
- */
-/*#define HAS_STRXFRM /**/
-
-/* HAS_SYMLINK:
- * This symbol, if defined, indicates that the symlink routine is available
- * to create symbolic links.
- */
-/*#define HAS_SYMLINK /**/
-
-/* HAS_SYSCALL:
- * This symbol, if defined, indicates that the syscall routine is
- * available to call arbitrary system calls. If undefined, that's tough.
- */
-/*#define HAS_SYSCALL /**/
-
-/* HAS_SYSCONF:
- * This symbol, if defined, indicates that sysconf() is available
- * to determine system related limits and options.
- */
-/*#define HAS_SYSCONF /**/
-
-/* HAS_SYSTEM:
- * This symbol, if defined, indicates that the system routine is
- * available to issue a shell command.
- */
-#define HAS_SYSTEM /**/
-
-/* HAS_TCGETPGRP:
- * This symbol, if defined, indicates that the tcgetpgrp routine is
- * available to get foreground process group ID.
- */
-/*#define HAS_TCGETPGRP /**/
-
-/* HAS_TCSETPGRP:
- * This symbol, if defined, indicates that the tcsetpgrp routine is
- * available to set foreground process group ID.
- */
-/*#define HAS_TCSETPGRP /**/
-
-/* HAS_TRUNCATE:
- * This symbol, if defined, indicates that the truncate routine is
- * available to truncate files.
- */
-/*#define HAS_TRUNCATE /**/
-
-/* HAS_TZNAME:
- * This symbol, if defined, indicates that the tzname[] array is
- * available to access timezone names.
- */
-#define HAS_TZNAME /**/
-
-/* HAS_UMASK:
- * This symbol, if defined, indicates that the umask routine is
- * available to set and get the value of the file creation mask.
- */
-#define HAS_UMASK /**/
-
-/* HAS_USLEEP:
- * This symbol, if defined, indicates that the usleep routine is
- * available to let the process sleep on a sub-second accuracy.
- */
-/*#define HAS_USLEEP /**/
-
-/* HASVOLATILE:
- * This symbol, if defined, indicates that this C compiler knows about
- * the volatile declaration.
- */
-#define HASVOLATILE /**/
-#ifndef HASVOLATILE
-#define volatile
-#endif
-
-/* HAS_WAIT4:
- * This symbol, if defined, indicates that wait4() exists.
- */
-/*#define HAS_WAIT4 /**/
-
-/* HAS_WAITPID:
- * This symbol, if defined, indicates that the waitpid routine is
- * available to wait for child process.
- */
-#define HAS_WAITPID /**/
-
-/* HAS_WCSTOMBS:
- * This symbol, if defined, indicates that the wcstombs routine is
- * available to convert wide character strings to multibyte strings.
- */
-#define HAS_WCSTOMBS /**/
-
-/* HAS_WCTOMB:
- * This symbol, if defined, indicates that the wctomb routine is available
- * to covert a wide character to a multibyte.
- */
-#define HAS_WCTOMB /**/
-
-/* I_ARPA_INET:
- * This symbol, if defined, indicates to the C program that it should
- * include <arpa/inet.h> to get inet_addr and friends declarations.
- */
-#define I_ARPA_INET /**/
-
-/* I_DBM:
- * This symbol, if defined, indicates that <dbm.h> exists and should
- * be included.
- */
-/* I_RPCSVC_DBM:
- * This symbol, if defined, indicates that <rpcsvc/dbm.h> exists and
- * should be included.
- */
-/*#define I_DBM /**/
-#define I_RPCSVC_DBM /**/
-
-/* I_DIRENT:
- * This symbol, if defined, indicates to the C program that it should
- * include <dirent.h>. Using this symbol also triggers the definition
- * of the Direntry_t define which ends up being 'struct dirent' or
- * 'struct direct' depending on the availability of <dirent.h>.
- */
-/* DIRNAMLEN:
- * This symbol, if defined, indicates to the C program that the length
- * of directory entry names is provided by a d_namlen field. Otherwise
- * you need to do strlen() on the d_name field.
- */
-/* Direntry_t:
- * This symbol is set to 'struct direct' or 'struct dirent' depending on
- * whether dirent is available or not. You should use this pseudo type to
- * portably declare your directory entries.
- */
-#define I_DIRENT /**/
-#define DIRNAMLEN /**/
-#define Direntry_t struct direct
-
-/* I_DLFCN:
- * This symbol, if defined, indicates that <dlfcn.h> exists and should
- * be included.
- */
-#define I_DLFCN /**/
-
-/* I_FCNTL:
- * This manifest constant tells the C program to include <fcntl.h>.
- */
-#define I_FCNTL /**/
-
-/* I_FLOAT:
- * This symbol, if defined, indicates to the C program that it should
- * include <float.h> to get definition of symbols like DBL_MAX or
- * DBL_MIN, i.e. machine dependent floating point values.
- */
-#define I_FLOAT /**/
-
-/* I_LIMITS:
- * This symbol, if defined, indicates to the C program that it should
- * include <limits.h> to get definition of symbols like WORD_BIT or
- * LONG_MAX, i.e. machine dependant limitations.
- */
-#define I_LIMITS /**/
-
-/* I_LOCALE:
- * This symbol, if defined, indicates to the C program that it should
- * include <locale.h>.
- */
-/*#define I_LOCALE /**/
-
-/* I_MATH:
- * This symbol, if defined, indicates to the C program that it should
- * include <math.h>.
- */
-#define I_MATH /**/
-
-/* I_MEMORY:
- * This symbol, if defined, indicates to the C program that it should
- * include <memory.h>.
- */
-/*#define I_MEMORY /**/
-
-/* I_NDBM:
- * This symbol, if defined, indicates that <ndbm.h> exists and should
- * be included.
- */
-/*#define I_NDBM /**/
-
-/* I_NET_ERRNO:
- * This symbol, if defined, indicates that <net/errno.h> exists and
- * should be included.
- */
-/*#define I_NET_ERRNO /**/
-
-/* I_NETINET_IN:
- * This symbol, if defined, indicates to the C program that it should
- * include <netinet/in.h>. Otherwise, you may try <sys/in.h>.
- */
-/*#define I_NETINET_IN /**/
-
-/* I_SFIO:
- * This symbol, if defined, indicates to the C program that it should
- * include <sfio.h>.
- */
-/*#define I_SFIO /**/
-
-/* I_STDDEF:
- * This symbol, if defined, indicates that <stddef.h> exists and should
- * be included.
- */
-#define I_STDDEF /**/
-
-/* I_STDLIB:
- * This symbol, if defined, indicates that <stdlib.h> exists and should
- * be included.
- */
-#define I_STDLIB /**/
-
-/* I_STRING:
- * This symbol, if defined, indicates to the C program that it should
- * include <string.h> (USG systems) instead of <strings.h> (BSD systems).
- */
-#define I_STRING /**/
-
-/* I_SYS_DIR:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/dir.h>.
- */
-/*#define I_SYS_DIR /**/
-
-/* I_SYS_FILE:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/file.h> to get definition of R_OK and friends.
- */
-/*#define I_SYS_FILE /**/
-
-/* I_SYS_IOCTL:
- * This symbol, if defined, indicates that <sys/ioctl.h> exists and should
- * be included. Otherwise, include <sgtty.h> or <termio.h>.
- */
-/* I_SYS_SOCKIO:
- * This symbol, if defined, indicates the <sys/sockio.h> should be included
- * to get socket ioctl options, like SIOCATMARK.
- */
-/*#define I_SYS_IOCTL /**/
-/*#define I_SYS_SOCKIO /**/
-
-/* I_SYS_NDIR:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/ndir.h>.
- */
-/*#define I_SYS_NDIR /**/
-
-/* I_SYS_PARAM:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/param.h>.
- */
-/*#define I_SYS_PARAM /**/
-
-/* I_SYS_RESOURCE:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/resource.h>.
- */
-/*#define I_SYS_RESOURCE /**/
-
-/* I_SYS_SELECT:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/select.h> in order to get definition of struct timeval.
- */
-/*#define I_SYS_SELECT /**/
-
-/* I_SYS_STAT:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/stat.h>.
- */
-#define I_SYS_STAT /**/
-
-/* I_SYS_TIMES:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/times.h>.
- */
-/*#define I_SYS_TIMES /**/
-
-/* I_SYS_TYPES:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/types.h>.
- */
-/*#define I_SYS_TYPES /**/
-
-/* I_SYS_UN:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/un.h> to get UNIX domain socket definitions.
- */
-/*#define I_SYS_UN /**/
-
-/* I_SYS_WAIT:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/wait.h>.
- */
-/*#define I_SYS_WAIT /**/
-
-/* I_TERMIO:
- * This symbol, if defined, indicates that the program should include
- * <termio.h> rather than <sgtty.h>. There are also differences in
- * the ioctl() calls that depend on the value of this symbol.
- */
-/* I_TERMIOS:
- * This symbol, if defined, indicates that the program should include
- * the POSIX termios.h rather than sgtty.h or termio.h.
- * There are also differences in the ioctl() calls that depend on the
- * value of this symbol.
- */
-/* I_SGTTY:
- * This symbol, if defined, indicates that the program should include
- * <sgtty.h> rather than <termio.h>. There are also differences in
- * the ioctl() calls that depend on the value of this symbol.
- */
-/*#define I_TERMIO /**/
-/*#define I_TERMIOS /**/
-/*#define I_SGTTY /**/
-
-/* I_UNISTD:
- * This symbol, if defined, indicates to the C program that it should
- * include <unistd.h>.
- */
-/*#define I_UNISTD /**/
-
-/* I_UTIME:
- * This symbol, if defined, indicates to the C program that it should
- * include <utime.h>.
- */
-#define I_UTIME /**/
-
-/* I_VALUES:
- * This symbol, if defined, indicates to the C program that it should
- * include <values.h> to get definition of symbols like MINFLOAT or
- * MAXLONG, i.e. machine dependant limitations. Probably, you
- * should use <limits.h> instead, if it is available.
- */
-/*#define I_VALUES /**/
-
-/* I_VFORK:
- * This symbol, if defined, indicates to the C program that it should
- * include vfork.h.
- */
-/*#define I_VFORK /**/
-
-/* CAN_PROTOTYPE:
- * If defined, this macro indicates that the C compiler can handle
- * function prototypes.
- */
-#define CAN_PROTOTYPE /**/
-
-/* SH_PATH:
- * This symbol contains the full pathname to the shell used on this
- * on this system to execute Bourne shell scripts. Usually, this will be
- * /bin/sh, though it's possible that some systems will have /bin/ksh,
- * /bin/pdksh, /bin/ash, /bin/bash, or even something such as
- * D:/bin/sh.exe.
- */
-#define SH_PATH "cmd /x /c" /**/
-
-/* INTSIZE:
- * This symbol contains the value of sizeof(int) so that the C
- * preprocessor can make decisions based on it.
- */
-/* LONGSIZE:
- * This symbol contains the value of sizeof(long) so that the C
- * preprocessor can make decisions based on it.
- */
-/* SHORTSIZE:
- * This symbol contains the value of sizeof(short) so that the C
- * preprocessor can make decisions based on it.
- */
-#define INTSIZE 4 /**/
-#define LONGSIZE 4 /**/
-#define SHORTSIZE 2 /**/
-
-/* MULTIARCH:
- * This symbol, if defined, signifies that the build
- * process will produce some binary files that are going to be
- * used in a cross-platform environment. This is the case for
- * example with the NeXT "fat" binaries that contain executables
- * for several CPUs.
- */
-/*#define MULTIARCH /**/
-
-/* HAS_QUAD:
- * This symbol, if defined, tells that there's a 64-bit integer type,
- * Quad_t, and its unsigned counterpar, Uquad_t. QUADKIND will be one
- * of QUAD_IS_INT, QUAD_IS_LONG, QUAD_IS_LONG_LONG, or QUAD_IS_INT64_T.
- */
-/*#define HAS_QUAD /**/
-#ifdef HAS_QUAD
-# define Quad_t __int64 /**/
-# define Uquad_t unsigned __int64 /**/
-# define QUADKIND 5 /**/
-# define QUAD_IS_INT 1
-# define QUAD_IS_LONG 2
-# define QUAD_IS_LONG_LONG 3
-# define QUAD_IS_INT64_T 4
-#endif
-
-/* HAS_ACCESSX:
- * This symbol, if defined, indicates that the accessx routine is
- * available to do extended access checks.
- */
-/*#define HAS_ACCESSX /**/
-
-/* HAS_EACCESS:
- * This symbol, if defined, indicates that the eaccess routine is
- * available to do extended access checks.
- */
-/*#define HAS_EACCESS /**/
-
-/* I_SYS_ACCESS:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/access.h>.
- */
-/*#define I_SYS_ACCESS /**/
-
-/* I_SYS_SECURITY:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/security.h>.
- */
-/*#define I_SYS_SECURITY /**/
-
-/* OSNAME:
- * This symbol contains the name of the operating system, as determined
- * by Configure. You shouldn't rely on it too much; the specific
- * feature tests from Configure are generally more reliable.
- */
-/* OSVERS:
- * This symbol contains the version of the operating system, as determined
- * by Configure. You shouldn't rely on it too much; the specific
- * feature tests from Configure are generally more reliable.
- */
-#define OSNAME "MSWin32" /**/
-#define OSVERS "4.0" /**/
-
-/* MEM_ALIGNBYTES:
- * This symbol contains the number of bytes required to align a
- * double, or a long double when applicable. Usual values are 2,
- * 4 and 8. The default is eight, for safety.
- */
-#if defined(USE_CROSS_COMPILE) || defined(MULTIARCH)
-# define MEM_ALIGNBYTES 8
-#else
-#define MEM_ALIGNBYTES 8
-#endif
-
-/* ARCHLIB:
- * This variable, if defined, holds the name of the directory in
- * which the user wants to put architecture-dependent public
- * library files for perl5. It is most often a local directory
- * such as /usr/local/lib. Programs using this variable must be
- * prepared to deal with filename expansion. If ARCHLIB is the
- * same as PRIVLIB, it is not defined, since presumably the
- * program already searches PRIVLIB.
- */
-/* ARCHLIB_EXP:
- * This symbol contains the ~name expanded version of ARCHLIB, to be used
- * in programs that are not prepared to deal with ~ expansion at run-time.
- */
-#define ARCHLIB "5.7.3\\lib" /**/
-/*#define ARCHLIB_EXP "" /**/
-
-/* ARCHNAME:
- * This symbol holds a string representing the architecture name.
- * It may be used to construct an architecture-dependant pathname
- * where library files may be held under a private library, for
- * instance.
- */
-#define ARCHNAME "HPC2000-WCE300-ARM" /**/
-
-/* HAS_ATOLF:
- * This symbol, if defined, indicates that the atolf routine is
- * available to convert strings into long doubles.
- */
-/*#define HAS_ATOLF /**/
-
-/* HAS_ATOLL:
- * This symbol, if defined, indicates that the atoll routine is
- * available to convert strings into long longs.
- */
-/*#define HAS_ATOLL /**/
-
-/* BIN:
- * This symbol holds the path of the bin directory where the package will
- * be installed. Program must be prepared to deal with ~name substitution.
- */
-/* BIN_EXP:
- * This symbol is the filename expanded version of the BIN symbol, for
- * programs that do not want to deal with that at run-time.
- */
-#define BIN "5.7.3\\bin" /**/
-#define BIN_EXP "5.7.3\\bin" /**/
-
-/* BYTEORDER:
- * This symbol holds the hexadecimal constant defined in byteorder,
- * i.e. 0x1234 or 0x4321, etc...
- * If the compiler supports cross-compiling or multiple-architecture
- * binaries (eg. on NeXT systems), use compiler-defined macros to
- * determine the byte order.
- * On NeXT 3.2 (and greater), you can build "Fat" Multiple Architecture
- * Binaries (MAB) on either big endian or little endian machines.
- * The endian-ness is available at compile-time. This only matters
- * for perl, where the config.h can be generated and installed on
- * one system, and used by a different architecture to build an
- * extension. Older versions of NeXT that might not have
- * defined either *_ENDIAN__ were all on Motorola 680x0 series,
- * so the default case (for NeXT) is big endian to catch them.
- * This might matter for NeXT 3.0.
- */
-#if defined(USE_CROSS_COMPILE) || defined(MULTIARCH)
-# ifdef __LITTLE_ENDIAN__
-# if LONGSIZE == 4
-# define BYTEORDER 0x1234
-# else
-# if LONGSIZE == 8
-# define BYTEORDER 0x12345678
-# endif
-# endif
-# else
-# ifdef __BIG_ENDIAN__
-# if LONGSIZE == 4
-# define BYTEORDER 0x4321
-# else
-# if LONGSIZE == 8
-# define BYTEORDER 0x87654321
-# endif
-# endif
-# endif
-# endif
-# if !defined(BYTEORDER) && (defined(NeXT) || defined(__NeXT__))
-# define BYTEORDER 0x4321
-# endif
-#else
-#define BYTEORDER 0x1234 /* large digits for MSB */
-#endif /* NeXT */
-
-/* CAT2:
- * This macro catenates 2 tokens together.
- */
-/* STRINGIFY:
- * This macro surrounds its token with double quotes.
- */
-#if 42 == 1
-#define CAT2(a,b) a/**/b
-#define STRINGIFY(a) "a"
- /* If you can get stringification with catify, tell me how! */
-#endif
-#if 42 == 42
-#define PeRl_CaTiFy(a, b) a ## b
-#define PeRl_StGiFy(a) #a
-/* the additional level of indirection enables these macros to be
- * used as arguments to other macros. See K&R 2nd ed., page 231. */
-#define CAT2(a,b) PeRl_CaTiFy(a,b)
-#define StGiFy(a) PeRl_StGiFy(a)
-#define STRINGIFY(a) PeRl_StGiFy(a)
-#endif
-#if 42 != 1 && 42 != 42
-# include "Bletch: How does this C preprocessor catenate tokens?"
-#endif
-
-/* CPPSTDIN:
- * This symbol contains the first part of the string which will invoke
- * the C preprocessor on the standard input and produce to standard
- * output. Typical value of "cc -E" or "/lib/cpp", but it can also
- * call a wrapper. See CPPRUN.
- */
-/* CPPMINUS:
- * This symbol contains the second part of the string which will invoke
- * the C preprocessor on the standard input and produce to standard
- * output. This symbol will have the value "-" if CPPSTDIN needs a minus
- * to specify standard input, otherwise the value is "".
- */
-/* CPPRUN:
- * This symbol contains the string which will invoke a C preprocessor on
- * the standard input and produce to standard output. It needs to end
- * with CPPLAST, after all other preprocessor flags have been specified.
- * The main difference with CPPSTDIN is that this program will never be a
- * pointer to a shell wrapper, i.e. it will be empty if no preprocessor is
- * available directly to the user. Note that it may well be different from
- * the preprocessor used to compile the C program.
- */
-/* CPPLAST:
- * This symbol is intended to be used along with CPPRUN in the same manner
- * symbol CPPMINUS is used with CPPSTDIN. It contains either "-" or "".
- */
-#define CPPSTDIN "cl -nologo -E"
-#define CPPMINUS ""
-#define CPPRUN "cl -nologo -E"
-#define CPPLAST ""
-
-/* HAS__FWALK:
- * This symbol, if defined, indicates that the _fwalk system call is
- * available to apply a function to all the file handles.
- */
-/*#define HAS__FWALK /**/
-
-/* HAS_ACCESS:
- * This manifest constant lets the C program know that the access()
- * system call is available to check for accessibility using real UID/GID.
- * (always present on UNIX.)
- */
-#define HAS_ACCESS /**/
-
-/* CASTI32:
- * This symbol is defined if the C compiler can cast negative
- * or large floating point numbers to 32-bit ints.
- */
-/*#define CASTI32 /**/
-
-/* CASTNEGFLOAT:
- * This symbol is defined if the C compiler can cast negative
- * numbers to unsigned longs, ints and shorts.
- */
-/* CASTFLAGS:
- * This symbol contains flags that say what difficulties the compiler
- * has casting odd floating values to unsigned long:
- * 0 = ok
- * 1 = couldn't cast < 0
- * 2 = couldn't cast >= 0x80000000
- * 4 = couldn't cast in argument expression list
- */
-#define CASTNEGFLOAT /**/
-#define CASTFLAGS 0 /**/
-
-/* VOID_CLOSEDIR:
- * This symbol, if defined, indicates that the closedir() routine
- * does not return a value.
- */
-/*#define VOID_CLOSEDIR /**/
-
-/* HAS_STRUCT_CMSGHDR:
- * This symbol, if defined, indicates that the struct cmsghdr
- * is supported.
- */
-/*#define HAS_STRUCT_CMSGHDR /**/
-
-/* HAS_CSH:
- * This symbol, if defined, indicates that the C-shell exists.
- */
-/* CSH:
- * This symbol, if defined, contains the full pathname of csh.
- */
-/*#define HAS_CSH /**/
-#ifdef HAS_CSH
-#define CSH "" /**/
-#endif
-
-/* DLSYM_NEEDS_UNDERSCORE:
- * This symbol, if defined, indicates that we need to prepend an
- * underscore to the symbol name before calling dlsym(). This only
- * makes sense if you *have* dlsym, which we will presume is the
- * case if you're using dl_dlopen.xs.
- */
-/*#define DLSYM_NEEDS_UNDERSCORE /**/
-
-/* HAS_DRAND48_PROTO:
- * This symbol, if defined, indicates that the system provides
- * a prototype for the drand48() function. Otherwise, it is up
- * to the program to supply one. A good guess is
- * extern double drand48(void);
- */
-/*#define HAS_DRAND48_PROTO /**/
-
-/* HAS_ENDGRENT:
- * This symbol, if defined, indicates that the getgrent routine is
- * available for finalizing sequential access of the group database.
- */
-/*#define HAS_ENDGRENT /**/
-
-/* HAS_ENDHOSTENT:
- * This symbol, if defined, indicates that the endhostent() routine is
- * available to close whatever was being used for host queries.
- */
-/*#define HAS_ENDHOSTENT /**/
-
-/* HAS_ENDNETENT:
- * This symbol, if defined, indicates that the endnetent() routine is
- * available to close whatever was being used for network queries.
- */
-/*#define HAS_ENDNETENT /**/
-
-/* HAS_ENDPROTOENT:
- * This symbol, if defined, indicates that the endprotoent() routine is
- * available to close whatever was being used for protocol queries.
- */
-/*#define HAS_ENDPROTOENT /**/
-
-/* HAS_ENDPWENT:
- * This symbol, if defined, indicates that the getgrent routine is
- * available for finalizing sequential access of the passwd database.
- */
-/*#define HAS_ENDPWENT /**/
-
-/* HAS_ENDSERVENT:
- * This symbol, if defined, indicates that the endservent() routine is
- * available to close whatever was being used for service queries.
- */
-/*#define HAS_ENDSERVENT /**/
-
-/* HAS_FCHDIR:
- * This symbol, if defined, indicates that the fchdir routine is
- * available to change directory using a file descriptor.
- */
-/*#define HAS_FCHDIR /**/
-
-/* FCNTL_CAN_LOCK:
- * This symbol, if defined, indicates that fcntl() can be used
- * for file locking. Normally on Unix systems this is defined.
- * It may be undefined on VMS.
- */
-/*#define FCNTL_CAN_LOCK /**/
-
-/* HAS_FD_SET:
- * This symbol, when defined, indicates presence of the fd_set typedef
- * in <sys/types.h>
- */
-#define HAS_FD_SET /**/
-
-/* FLEXFILENAMES:
- * This symbol, if defined, indicates that the system supports filenames
- * longer than 14 characters.
- */
-#define FLEXFILENAMES /**/
-
-/* HAS_FPOS64_T:
- * This symbol will be defined if the C compiler supports fpos64_t.
- */
-/*#define HAS_FPOS64_T /**/
-
-/* HAS_FREXPL:
- * This symbol, if defined, indicates that the frexpl routine is
- * available to break a long double floating-point number into
- * a normalized fraction and an integral power of 2.
- */
-/*#define HAS_FREXPL /**/
-
-/* HAS_STRUCT_FS_DATA:
- * This symbol, if defined, indicates that the struct fs_data
- * to do statfs() is supported.
- */
-/*#define HAS_STRUCT_FS_DATA /**/
-
-/* HAS_FSEEKO:
- * This symbol, if defined, indicates that the fseeko routine is
- * available to fseek beyond 32 bits (useful for ILP32 hosts).
- */
-/*#define HAS_FSEEKO /**/
-
-/* HAS_FSTATFS:
- * This symbol, if defined, indicates that the fstatfs routine is
- * available to stat filesystems by file descriptors.
- */
-/*#define HAS_FSTATFS /**/
-
-/* HAS_FSYNC:
- * This symbol, if defined, indicates that the fsync routine is
- * available to write a file's modified data and attributes to
- * permanent storage.
- */
-/*#define HAS_FSYNC /**/
-
-/* HAS_FTELLO:
- * This symbol, if defined, indicates that the ftello routine is
- * available to ftell beyond 32 bits (useful for ILP32 hosts).
- */
-/*#define HAS_FTELLO /**/
-
-/* Gconvert:
- * This preprocessor macro is defined to convert a floating point
- * number to a string without a trailing decimal point. This
- * emulates the behavior of sprintf("%g"), but is sometimes much more
- * efficient. If gconvert() is not available, but gcvt() drops the
- * trailing decimal point, then gcvt() is used. If all else fails,
- * a macro using sprintf("%g") is used. Arguments for the Gconvert
- * macro are: value, number of digits, whether trailing zeros should
- * be retained, and the output buffer.
- * Possible values are:
- * d_Gconvert='gconvert((x),(n),(t),(b))'
- * d_Gconvert='gcvt((x),(n),(b))'
- * d_Gconvert='sprintf((b),"%.*g",(n),(x))'
- * The last two assume trailing zeros should not be kept.
- */
-#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
-
-/* HAS_GETCWD:
- * This symbol, if defined, indicates that the getcwd routine is
- * available to get the current working directory.
- */
-/*#define HAS_GETCWD /**/
-
-/* HAS_GETESPWNAM:
- * This symbol, if defined, indicates that the getespwnam system call is
- * available to retrieve enchanced (shadow) password entries by name.
- */
-/*#define HAS_GETESPWNAM /**/
-
-/* HAS_GETFSSTAT:
- * This symbol, if defined, indicates that the getfsstat routine is
- * available to stat filesystems in bulk.
- */
-/*#define HAS_GETFSSTAT /**/
-
-/* HAS_GETGRENT:
- * This symbol, if defined, indicates that the getgrent routine is
- * available for sequential access of the group database.
- */
-/*#define HAS_GETGRENT /**/
-
-/* HAS_GETHOSTBYADDR:
- * This symbol, if defined, indicates that the gethostbyaddr() routine is
- * available to look up hosts by their IP addresses.
- */
-#define HAS_GETHOSTBYADDR /**/
-
-/* HAS_GETHOSTBYNAME:
- * This symbol, if defined, indicates that the gethostbyname() routine is
- * available to look up host names in some data base or other.
- */
-#define HAS_GETHOSTBYNAME /**/
-
-/* HAS_GETHOSTENT:
- * This symbol, if defined, indicates that the gethostent() routine is
- * available to look up host names in some data base or another.
- */
-/*#define HAS_GETHOSTENT /**/
-
-/* HAS_GETHOSTNAME:
- * This symbol, if defined, indicates that the C program may use the
- * gethostname() routine to derive the host name. See also HAS_UNAME
- * and PHOSTNAME.
- */
-/* HAS_UNAME:
- * This symbol, if defined, indicates that the C program may use the
- * uname() routine to derive the host name. See also HAS_GETHOSTNAME
- * and PHOSTNAME.
- */
-/* PHOSTNAME:
- * This symbol, if defined, indicates the command to feed to the
- * popen() routine to derive the host name. See also HAS_GETHOSTNAME
- * and HAS_UNAME. Note that the command uses a fully qualified path,
- * so that it is safe even if used by a process with super-user
- * privileges.
- */
-/* HAS_PHOSTNAME:
- * This symbol, if defined, indicates that the C program may use the
- * contents of PHOSTNAME as a command to feed to the popen() routine
- * to derive the host name.
- */
-#define HAS_GETHOSTNAME /**/
-#define HAS_UNAME /**/
-/*#define HAS_PHOSTNAME /**/
-#ifdef HAS_PHOSTNAME
-#define PHOSTNAME "" /* How to get the host name */
-#endif
-
-/* HAS_GETHOST_PROTOS:
- * This symbol, if defined, indicates that <netdb.h> includes
- * prototypes for gethostent(), gethostbyname(), and
- * gethostbyaddr(). Otherwise, it is up to the program to guess
- * them. See netdbtype.U for probing for various Netdb_xxx_t types.
- */
-#define HAS_GETHOST_PROTOS /**/
-
-/* HAS_GETITIMER:
- * This symbol, if defined, indicates that the getitimer routine is
- * available to return interval timers.
- */
-/*#define HAS_GETITIMER /**/
-
-/* HAS_GETMNT:
- * This symbol, if defined, indicates that the getmnt routine is
- * available to get filesystem mount info by filename.
- */
-/*#define HAS_GETMNT /**/
-
-/* HAS_GETMNTENT:
- * This symbol, if defined, indicates that the getmntent routine is
- * available to iterate through mounted file systems to get their info.
- */
-/*#define HAS_GETMNTENT /**/
-
-/* HAS_GETNETBYADDR:
- * This symbol, if defined, indicates that the getnetbyaddr() routine is
- * available to look up networks by their IP addresses.
- */
-/*#define HAS_GETNETBYADDR /**/
-
-/* HAS_GETNETBYNAME:
- * This symbol, if defined, indicates that the getnetbyname() routine is
- * available to look up networks by their names.
- */
-/*#define HAS_GETNETBYNAME /**/
-
-/* HAS_GETNETENT:
- * This symbol, if defined, indicates that the getnetent() routine is
- * available to look up network names in some data base or another.
- */
-/*#define HAS_GETNETENT /**/
-
-/* HAS_GETNET_PROTOS:
- * This symbol, if defined, indicates that <netdb.h> includes
- * prototypes for getnetent(), getnetbyname(), and
- * getnetbyaddr(). Otherwise, it is up to the program to guess
- * them. See netdbtype.U for probing for various Netdb_xxx_t types.
- */
-/*#define HAS_GETNET_PROTOS /**/
-
-/* HAS_GETPAGESIZE:
- * This symbol, if defined, indicates that the getpagesize system call
- * is available to get system page size, which is the granularity of
- * many memory management calls.
- */
-/*#define HAS_GETPAGESIZE /**/
-
-/* HAS_GETPROTOENT:
- * This symbol, if defined, indicates that the getprotoent() routine is
- * available to look up protocols in some data base or another.
- */
-/*#define HAS_GETPROTOENT /**/
-
-/* HAS_GETPGRP:
- * This symbol, if defined, indicates that the getpgrp routine is
- * available to get the current process group.
- */
-/* USE_BSD_GETPGRP:
- * This symbol, if defined, indicates that getpgrp needs one
- * arguments whereas USG one needs none.
- */
-/*#define HAS_GETPGRP /**/
-/*#define USE_BSD_GETPGRP /**/
-
-/* HAS_GETPROTOBYNAME:
- * This symbol, if defined, indicates that the getprotobyname()
- * routine is available to look up protocols by their name.
- */
-/* HAS_GETPROTOBYNUMBER:
- * This symbol, if defined, indicates that the getprotobynumber()
- * routine is available to look up protocols by their number.
- */
-#define HAS_GETPROTOBYNAME /**/
-#define HAS_GETPROTOBYNUMBER /**/
-
-/* HAS_GETPROTO_PROTOS:
- * This symbol, if defined, indicates that <netdb.h> includes
- * prototypes for getprotoent(), getprotobyname(), and
- * getprotobyaddr(). Otherwise, it is up to the program to guess
- * them. See netdbtype.U for probing for various Netdb_xxx_t types.
- */
-#define HAS_GETPROTO_PROTOS /**/
-
-/* HAS_GETPRPWNAM:
- * This symbol, if defined, indicates that the getprpwnam system call is
- * available to retrieve protected (shadow) password entries by name.
- */
-/*#define HAS_GETPRPWNAM /**/
-
-/* HAS_GETPWENT:
- * This symbol, if defined, indicates that the getpwent routine is
- * available for sequential access of the passwd database.
- * If this is not available, the older getpw() function may be available.
- */
-/*#define HAS_GETPWENT /**/
-
-/* HAS_GETSERVENT:
- * This symbol, if defined, indicates that the getservent() routine is
- * available to look up network services in some data base or another.
- */
-/*#define HAS_GETSERVENT /**/
-
-/* HAS_GETSERV_PROTOS:
- * This symbol, if defined, indicates that <netdb.h> includes
- * prototypes for getservent(), getservbyname(), and
- * getservbyaddr(). Otherwise, it is up to the program to guess
- * them. See netdbtype.U for probing for various Netdb_xxx_t types.
- */
-#define HAS_GETSERV_PROTOS /**/
-
-/* HAS_GETSPNAM:
- * This symbol, if defined, indicates that the getspnam system call is
- * available to retrieve SysV shadow password entries by name.
- */
-/*#define HAS_GETSPNAM /**/
-
-/* HAS_GETSERVBYNAME:
- * This symbol, if defined, indicates that the getservbyname()
- * routine is available to look up services by their name.
- */
-/* HAS_GETSERVBYPORT:
- * This symbol, if defined, indicates that the getservbyport()
- * routine is available to look up services by their port.
- */
-#define HAS_GETSERVBYNAME /**/
-#define HAS_GETSERVBYPORT /**/
-
-/* HAS_GNULIBC:
- * This symbol, if defined, indicates to the C program that
- * the GNU C library is being used.
- */
-/*#define HAS_GNULIBC /**/
-#if defined(HAS_GNULIBC) && !defined(_GNU_SOURCE)
-# define _GNU_SOURCE
-#endif
-/* HAS_HASMNTOPT:
- * This symbol, if defined, indicates that the hasmntopt routine is
- * available to query the mount options of file systems.
- */
-/*#define HAS_HASMNTOPT /**/
-
-/* HAS_HTONL:
- * This symbol, if defined, indicates that the htonl() routine (and
- * friends htons() ntohl() ntohs()) are available to do network
- * order byte swapping.
- */
-/* HAS_HTONS:
- * This symbol, if defined, indicates that the htons() routine (and
- * friends htonl() ntohl() ntohs()) are available to do network
- * order byte swapping.
- */
-/* HAS_NTOHL:
- * This symbol, if defined, indicates that the ntohl() routine (and
- * friends htonl() htons() ntohs()) are available to do network
- * order byte swapping.
- */
-/* HAS_NTOHS:
- * This symbol, if defined, indicates that the ntohs() routine (and
- * friends htonl() htons() ntohl()) are available to do network
- * order byte swapping.
- */
-#define HAS_HTONL /**/
-#define HAS_HTONS /**/
-#define HAS_NTOHL /**/
-#define HAS_NTOHS /**/
-
-/* HAS_INT64_T:
- * This symbol will defined if the C compiler supports int64_t.
- * Usually the <inttypes.h> needs to be included, but sometimes
- * <sys/types.h> is enough.
- */
-/*#define HAS_INT64_T /**/
-
-/* HAS_ISASCII:
- * This manifest constant lets the C program know that isascii
- * is available.
- */
-#define HAS_ISASCII /**/
-
-/* HAS_ISNAN:
- * This symbol, if defined, indicates that the isnan routine is
- * available to check whether a double is a NaN.
- */
-/*#define HAS_ISNAN /**/
-
-/* HAS_ISNANL:
- * This symbol, if defined, indicates that the isnanl routine is
- * available to check whether a long double is a NaN.
- */
-/*#define HAS_ISNANL /**/
-
-/* HAS_LCHOWN:
- * This symbol, if defined, indicates that the lchown routine is
- * available to operate on a symbolic link (instead of following the
- * link).
- */
-/*#define HAS_LCHOWN /**/
-
-/* HAS_LDBL_DIG:
- * This symbol, if defined, indicates that this system's <float.h>
- * or <limits.h> defines the symbol LDBL_DIG, which is the number
- * of significant digits in a long double precision number. Unlike
- * for DBL_DIG, there's no good guess for LDBL_DIG if it is undefined.
- */
-#define HAS_LDBL_DIG /**/
-
-/* HAS_LONG_DOUBLE:
- * This symbol will be defined if the C compiler supports long
- * doubles.
- */
-/* LONG_DOUBLESIZE:
- * This symbol contains the size of a long double, so that the
- * C preprocessor can make decisions based on it. It is only
- * defined if the system supports long doubles.
- */
-/*#define HAS_LONG_DOUBLE /**/
-#ifdef HAS_LONG_DOUBLE
-#define LONG_DOUBLESIZE 10 /**/
-#endif
-
-/* HAS_LONG_LONG:
- * This symbol will be defined if the C compiler supports long long.
- */
-/* LONGLONGSIZE:
- * This symbol contains the size of a long long, so that the
- * C preprocessor can make decisions based on it. It is only
- * defined if the system supports long long.
- */
-/*#define HAS_LONG_LONG /**/
-#ifdef HAS_LONG_LONG
-#define LONGLONGSIZE 8 /**/
-#endif
-
-/* HAS_LSEEK_PROTO:
- * This symbol, if defined, indicates that the system provides
- * a prototype for the lseek() function. Otherwise, it is up
- * to the program to supply one. A good guess is
- * extern off_t lseek(int, off_t, int);
- */
-#define HAS_LSEEK_PROTO /**/
-
-/* HAS_MADVISE:
- * This symbol, if defined, indicates that the madvise system call is
- * available to map a file into memory.
- */
-/*#define HAS_MADVISE /**/
-
-/* HAS_MEMCHR:
- * This symbol, if defined, indicates that the memchr routine is available
- * to locate characters within a C string.
- */
-#define HAS_MEMCHR /**/
-
-/* HAS_MKDTEMP:
- * This symbol, if defined, indicates that the mkdtemp routine is
- * available to exclusively create a uniquely named temporary directory.
- */
-/*#define HAS_MKDTEMP /**/
-
-/* HAS_MKSTEMP:
- * This symbol, if defined, indicates that the mkstemp routine is
- * available to exclusively create and open a uniquely named
- * temporary file.
- */
-/*#define HAS_MKSTEMP /**/
-
-/* HAS_MKSTEMPS:
- * This symbol, if defined, indicates that the mkstemps routine is
- * available to excluslvely create and open a uniquely named
- * (with a suffix) temporary file.
- */
-/*#define HAS_MKSTEMPS /**/
-
-/* HAS_MMAP:
- * This symbol, if defined, indicates that the mmap system call is
- * available to map a file into memory.
- */
-/* Mmap_t:
- * This symbol holds the return type of the mmap() system call
- * (and simultaneously the type of the first argument).
- * Usually set to 'void *' or 'cadd_t'.
- */
-/*#define HAS_MMAP /**/
-#define Mmap_t void * /**/
-
-/* HAS_MODFL:
- * This symbol, if defined, indicates that the modfl routine is
- * available to split a long double x into a fractional part f and
- * an integer part i such that |f| < 1.0 and (f + i) = x.
- */
-/* HAS_MODFL_POW32_BUG:
- * This symbol, if defined, indicates that the modfl routine is
- * broken for long doubles >= pow(2, 32).
- * For example from 4294967303.150000 one would get 4294967302.000000
- * and 1.150000. The bug has been seen in certain versions of glibc,
- * release 2.2.2 is known to be okay.
- */
-/*#define HAS_MODFL /**/
-/*#define HAS_MODFL_POW32_BUG /**/
-
-/* HAS_MPROTECT:
- * This symbol, if defined, indicates that the mprotect system call is
- * available to modify the access protection of a memory mapped file.
- */
-/*#define HAS_MPROTECT /**/
-
-/* HAS_MSG:
- * This symbol, if defined, indicates that the entire msg*(2) library is
- * supported (IPC mechanism based on message queues).
- */
-/*#define HAS_MSG /**/
-
-/* HAS_STRUCT_MSGHDR:
- * This symbol, if defined, indicates that the struct msghdr
- * is supported.
- */
-/*#define HAS_STRUCT_MSGHDR /**/
-
-/* HAS_OFF64_T:
- * This symbol will be defined if the C compiler supports off64_t.
- */
-/*#define HAS_OFF64_T /**/
-
-/* HAS_OPEN3:
- * This manifest constant lets the C program know that the three
- * argument form of open(2) is available.
- */
-/*#define HAS_OPEN3 /**/
-
-/* OLD_PTHREAD_CREATE_JOINABLE:
- * This symbol, if defined, indicates how to create pthread
- * in joinable (aka undetached) state. NOTE: not defined
- * if pthread.h already has defined PTHREAD_CREATE_JOINABLE
- * (the new version of the constant).
- * If defined, known values are PTHREAD_CREATE_UNDETACHED
- * and __UNDETACHED.
- */
-/*#define OLD_PTHREAD_CREATE_JOINABLE /**/
-
-/* HAS_PTHREAD_YIELD:
- * This symbol, if defined, indicates that the pthread_yield
- * routine is available to yield the execution of the current
- * thread. sched_yield is preferable to pthread_yield.
- */
-/* SCHED_YIELD:
- * This symbol defines the way to yield the execution of
- * the current thread. Known ways are sched_yield,
- * pthread_yield, and pthread_yield with NULL.
- */
-/* HAS_SCHED_YIELD:
- * This symbol, if defined, indicates that the sched_yield
- * routine is available to yield the execution of the current
- * thread. sched_yield is preferable to pthread_yield.
- */
-/*#define HAS_PTHREAD_YIELD /**/
-#define SCHED_YIELD /**/
-/*#define HAS_SCHED_YIELD /**/
-
-/* HAS_READV:
- * This symbol, if defined, indicates that the readv routine is
- * available to do gather reads. You will also need <sys/uio.h>
- * and there I_SYSUIO.
- */
-/*#define HAS_READV /**/
-
-/* HAS_RECVMSG:
- * This symbol, if defined, indicates that the recvmsg routine is
- * available to send structured socket messages.
- */
-/*#define HAS_RECVMSG /**/
-
-/* HAS_SAFE_BCOPY:
- * This symbol, if defined, indicates that the bcopy routine is available
- * to copy potentially overlapping memory blocks. Normally, you should
- * probably use memmove() or memcpy(). If neither is defined, roll your
- * own version.
- */
-/*#define HAS_SAFE_BCOPY /**/
-
-/* HAS_SAFE_MEMCPY:
- * This symbol, if defined, indicates that the memcpy routine is available
- * to copy potentially overlapping memory blocks. If you need to
- * copy overlapping memory blocks, you should check HAS_MEMMOVE and
- * use memmove() instead, if available.
- */
-/*#define HAS_SAFE_MEMCPY /**/
-
-/* HAS_SANE_MEMCMP:
- * This symbol, if defined, indicates that the memcmp routine is available
- * and can be used to compare relative magnitudes of chars with their high
- * bits set. If it is not defined, roll your own version.
- */
-#define HAS_SANE_MEMCMP /**/
-
-/* HAS_SBRK_PROTO:
- * This symbol, if defined, indicates that the system provides
- * a prototype for the sbrk() function. Otherwise, it is up
- * to the program to supply one. Good guesses are
- * extern void* sbrk(int);
- * extern void* sbrk(size_t);
- */
-/*#define HAS_SBRK_PROTO /**/
-
-/* HAS_SEM:
- * This symbol, if defined, indicates that the entire sem*(2) library is
- * supported.
- */
-/*#define HAS_SEM /**/
-
-/* HAS_SENDMSG:
- * This symbol, if defined, indicates that the sendmsg routine is
- * available to send structured socket messages.
- */
-/*#define HAS_SENDMSG /**/
-
-/* HAS_SETGRENT:
- * This symbol, if defined, indicates that the setgrent routine is
- * available for initializing sequential access of the group database.
- */
-/*#define HAS_SETGRENT /**/
-
-/* HAS_SETGROUPS:
- * This symbol, if defined, indicates that the setgroups() routine is
- * available to set the list of process groups. If unavailable, multiple
- * groups are probably not supported.
- */
-/*#define HAS_SETGROUPS /**/
-
-/* HAS_SETHOSTENT:
- * This symbol, if defined, indicates that the sethostent() routine is
- * available.
- */
-/*#define HAS_SETHOSTENT /**/
-
-/* HAS_SETITIMER:
- * This symbol, if defined, indicates that the setitimer routine is
- * available to set interval timers.
- */
-/*#define HAS_SETITIMER /**/
-
-/* HAS_SETNETENT:
- * This symbol, if defined, indicates that the setnetent() routine is
- * available.
- */
-/*#define HAS_SETNETENT /**/
-
-/* HAS_SETPROTOENT:
- * This symbol, if defined, indicates that the setprotoent() routine is
- * available.
- */
-/*#define HAS_SETPROTOENT /**/
-
-/* HAS_SETPGRP:
- * This symbol, if defined, indicates that the setpgrp routine is
- * available to set the current process group.
- */
-/* USE_BSD_SETPGRP:
- * This symbol, if defined, indicates that setpgrp needs two
- * arguments whereas USG one needs none. See also HAS_SETPGID
- * for a POSIX interface.
- */
-/*#define HAS_SETPGRP /**/
-/*#define USE_BSD_SETPGRP /**/
-
-/* HAS_SETPROCTITLE:
- * This symbol, if defined, indicates that the setproctitle routine is
- * available to set process title.
- */
-/*#define HAS_SETPROCTITLE /**/
-
-/* HAS_SETPWENT:
- * This symbol, if defined, indicates that the setpwent routine is
- * available for initializing sequential access of the passwd database.
- */
-/*#define HAS_SETPWENT /**/
-
-/* HAS_SETSERVENT:
- * This symbol, if defined, indicates that the setservent() routine is
- * available.
- */
-/*#define HAS_SETSERVENT /**/
-
-/* HAS_SETVBUF:
- * This symbol, if defined, indicates that the setvbuf routine is
- * available to change buffering on an open stdio stream.
- * to a line-buffered mode.
- */
-/*#define HAS_SETVBUF /**/
-
-/* USE_SFIO:
- * This symbol, if defined, indicates that sfio should
- * be used.
- */
-/*#define USE_SFIO /**/
-
-/* HAS_SHM:
- * This symbol, if defined, indicates that the entire shm*(2) library is
- * supported.
- */
-/*#define HAS_SHM /**/
-
-/* HAS_SIGACTION:
- * This symbol, if defined, indicates that Vr4's sigaction() routine
- * is available.
- */
-/*#define HAS_SIGACTION /**/
-
-/* HAS_SIGSETJMP:
- * This variable indicates to the C program that the sigsetjmp()
- * routine is available to save the calling process's registers
- * and stack environment for later use by siglongjmp(), and
- * to optionally save the process's signal mask. See
- * Sigjmp_buf, Sigsetjmp, and Siglongjmp.
- */
-/* Sigjmp_buf:
- * This is the buffer type to be used with Sigsetjmp and Siglongjmp.
- */
-/* Sigsetjmp:
- * This macro is used in the same way as sigsetjmp(), but will invoke
- * traditional setjmp() if sigsetjmp isn't available.
- * See HAS_SIGSETJMP.
- */
-/* Siglongjmp:
- * This macro is used in the same way as siglongjmp(), but will invoke
- * traditional longjmp() if siglongjmp isn't available.
- * See HAS_SIGSETJMP.
- */
-/*#define HAS_SIGSETJMP /**/
-#ifdef HAS_SIGSETJMP
-#define Sigjmp_buf sigjmp_buf
-#define Sigsetjmp(buf,save_mask) sigsetjmp((buf),(save_mask))
-#define Siglongjmp(buf,retval) siglongjmp((buf),(retval))
-#else
-#define Sigjmp_buf jmp_buf
-#define Sigsetjmp(buf,save_mask) setjmp((buf))
-#define Siglongjmp(buf,retval) longjmp((buf),(retval))
-#endif
-
-/* HAS_SOCKET:
- * This symbol, if defined, indicates that the BSD socket interface is
- * supported.
- */
-/* HAS_SOCKETPAIR:
- * This symbol, if defined, indicates that the BSD socketpair() call is
- * supported.
- */
-/* HAS_MSG_CTRUNC:
- * This symbol, if defined, indicates that the MSG_CTRUNC is supported.
- * Checking just with #ifdef might not be enough because this symbol
- * has been known to be an enum.
- */
-/* HAS_MSG_DONTROUTE:
- * This symbol, if defined, indicates that the MSG_DONTROUTE is supported.
- * Checking just with #ifdef might not be enough because this symbol
- * has been known to be an enum.
- */
-/* HAS_MSG_OOB:
- * This symbol, if defined, indicates that the MSG_OOB is supported.
- * Checking just with #ifdef might not be enough because this symbol
- * has been known to be an enum.
- */
-/* HAS_MSG_PEEK:
- * This symbol, if defined, indicates that the MSG_PEEK is supported.
- * Checking just with #ifdef might not be enough because this symbol
- * has been known to be an enum.
- */
-/* HAS_MSG_PROXY:
- * This symbol, if defined, indicates that the MSG_PROXY is supported.
- * Checking just with #ifdef might not be enough because this symbol
- * has been known to be an enum.
- */
-/* HAS_SCM_RIGHTS:
- * This symbol, if defined, indicates that the SCM_RIGHTS is supported.
- * Checking just with #ifdef might not be enough because this symbol
- * has been known to be an enum.
- */
-#define HAS_SOCKET /**/
-/*#define HAS_SOCKETPAIR /**/
-/*#define HAS_MSG_CTRUNC /**/
-/*#define HAS_MSG_DONTROUTE /**/
-/*#define HAS_MSG_OOB /**/
-/*#define HAS_MSG_PEEK /**/
-/*#define HAS_MSG_PROXY /**/
-/*#define HAS_SCM_RIGHTS /**/
-
-/* HAS_SOCKS5_INIT:
- * This symbol, if defined, indicates that the socks5_init routine is
- * available to initialize SOCKS 5.
- */
-/*#define HAS_SOCKS5_INIT /**/
-
-/* HAS_SQRTL:
- * This symbol, if defined, indicates that the sqrtl routine is
- * available to do long double square roots.
- */
-/*#define HAS_SQRTL /**/
-
-/* USE_STAT_BLOCKS:
- * This symbol is defined if this system has a stat structure declaring
- * st_blksize and st_blocks.
- */
-#ifndef USE_STAT_BLOCKS
-/*#define USE_STAT_BLOCKS /**/
-#endif
-
-/* HAS_STRUCT_STATFS_F_FLAGS:
- * This symbol, if defined, indicates that the struct statfs
- * does have the f_flags member containing the mount flags of
- * the filesystem containing the file.
- * This kind of struct statfs is coming from <sys/mount.h> (BSD 4.3),
- * not from <sys/statfs.h> (SYSV). Older BSDs (like Ultrix) do not
- * have statfs() and struct statfs, they have ustat() and getmnt()
- * with struct ustat and struct fs_data.
- */
-/*#define HAS_STRUCT_STATFS_F_FLAGS /**/
-
-/* HAS_STRUCT_STATFS:
- * This symbol, if defined, indicates that the struct statfs
- * to do statfs() is supported.
- */
-/*#define HAS_STRUCT_STATFS /**/
-
-/* HAS_FSTATVFS:
- * This symbol, if defined, indicates that the fstatvfs routine is
- * available to stat filesystems by file descriptors.
- */
-/*#define HAS_FSTATVFS /**/
-
-/* USE_STDIO_PTR:
- * This symbol is defined if the _ptr and _cnt fields (or similar)
- * of the stdio FILE structure can be used to access the stdio buffer
- * for a file handle. If this is defined, then the FILE_ptr(fp)
- * and FILE_cnt(fp) macros will also be defined and should be used
- * to access these fields.
- */
-/* FILE_ptr:
- * This macro is used to access the _ptr field (or equivalent) of the
- * FILE structure pointed to by its argument. This macro will always be
- * defined if USE_STDIO_PTR is defined.
- */
-/* STDIO_PTR_LVALUE:
- * This symbol is defined if the FILE_ptr macro can be used as an
- * lvalue.
- */
-/* FILE_cnt:
- * This macro is used to access the _cnt field (or equivalent) of the
- * FILE structure pointed to by its argument. This macro will always be
- * defined if USE_STDIO_PTR is defined.
- */
-/* STDIO_CNT_LVALUE:
- * This symbol is defined if the FILE_cnt macro can be used as an
- * lvalue.
- */
-/* STDIO_PTR_LVAL_SETS_CNT:
- * This symbol is defined if using the FILE_ptr macro as an lvalue
- * to increase the pointer by n has the side effect of decreasing the
- * value of File_cnt(fp) by n.
- */
-/* STDIO_PTR_LVAL_NOCHANGE_CNT:
- * This symbol is defined if using the FILE_ptr macro as an lvalue
- * to increase the pointer by n leaves File_cnt(fp) unchanged.
- */
-/*#define USE_STDIO_PTR /**/
-#ifdef USE_STDIO_PTR
-#define FILE_ptr(fp)
-/*#define STDIO_PTR_LVALUE /**/
-#define FILE_cnt(fp)
-/*#define STDIO_CNT_LVALUE /**/
-/*#define STDIO_PTR_LVAL_SETS_CNT /**/
-/*#define STDIO_PTR_LVAL_NOCHANGE_CNT /**/
-#endif
-
-/* USE_STDIO_BASE:
- * This symbol is defined if the _base field (or similar) of the
- * stdio FILE structure can be used to access the stdio buffer for
- * a file handle. If this is defined, then the FILE_base(fp) macro
- * will also be defined and should be used to access this field.
- * Also, the FILE_bufsiz(fp) macro will be defined and should be used
- * to determine the number of bytes in the buffer. USE_STDIO_BASE
- * will never be defined unless USE_STDIO_PTR is.
- */
-/* FILE_base:
- * This macro is used to access the _base field (or equivalent) of the
- * FILE structure pointed to by its argument. This macro will always be
- * defined if USE_STDIO_BASE is defined.
- */
-/* FILE_bufsiz:
- * This macro is used to determine the number of bytes in the I/O
- * buffer pointed to by _base field (or equivalent) of the FILE
- * structure pointed to its argument. This macro will always be defined
- * if USE_STDIO_BASE is defined.
- */
-/*#define USE_STDIO_BASE /**/
-#ifdef USE_STDIO_BASE
-#define FILE_base(fp)
-#define FILE_bufsiz(fp)
-#endif
-
-/* HAS_STRERROR:
- * This symbol, if defined, indicates that the strerror routine is
- * available to translate error numbers to strings. See the writeup
- * of Strerror() in this file before you try to define your own.
- */
-/* HAS_SYS_ERRLIST:
- * This symbol, if defined, indicates that the sys_errlist array is
- * available to translate error numbers to strings. The extern int
- * sys_nerr gives the size of that table.
- */
-/* Strerror:
- * This preprocessor symbol is defined as a macro if strerror() is
- * not available to translate error numbers to strings but sys_errlist[]
- * array is there.
- */
-#define HAS_STRERROR /**/
-#define HAS_SYS_ERRLIST /**/
-#define Strerror(e) strerror(e)
-
-/* HAS_STRTOLD:
- * This symbol, if defined, indicates that the strtold routine is
- * available to convert strings to long doubles.
- */
-/*#define HAS_STRTOLD /**/
-
-/* HAS_STRTOLL:
- * This symbol, if defined, indicates that the strtoll routine is
- * available to convert strings to long longs.
- */
-/*#define HAS_STRTOLL /**/
-
-/* HAS_STRTOQ:
- * This symbol, if defined, indicates that the strtoq routine is
- * available to convert strings to long longs (quads).
- */
-/*#define HAS_STRTOQ /**/
-
-/* HAS_STRTOUL:
- * This symbol, if defined, indicates that the strtoul routine is
- * available to provide conversion of strings to unsigned long.
- */
-#define HAS_STRTOUL /**/
-
-/* HAS_STRTOULL:
- * This symbol, if defined, indicates that the strtoull routine is
- * available to convert strings to unsigned long longs.
- */
-/*#define HAS_STRTOULL /**/
-
-/* HAS_STRTOUQ:
- * This symbol, if defined, indicates that the strtouq routine is
- * available to convert strings to unsigned long longs (quads).
- */
-/*#define HAS_STRTOUQ /**/
-
-/* HAS_TELLDIR_PROTO:
- * This symbol, if defined, indicates that the system provides
- * a prototype for the telldir() function. Otherwise, it is up
- * to the program to supply one. A good guess is
- * extern long telldir(DIR*);
- */
-#define HAS_TELLDIR_PROTO /**/
-
-/* Time_t:
- * This symbol holds the type returned by time(). It can be long,
- * or time_t on BSD sites (in which case <sys/types.h> should be
- * included).
- */
-#define Time_t time_t /* Time type */
-
-/* HAS_TIMES:
- * This symbol, if defined, indicates that the times() routine exists.
- * Note that this became obsolete on some systems (SUNOS), which now
- * use getrusage(). It may be necessary to include <sys/times.h>.
- */
-#define HAS_TIMES /**/
-
-/* HAS_UALARM:
- * This symbol, if defined, indicates that the ualarm routine is
- * available to do alarms with microsecond granularity.
- */
-/*#define HAS_UALARM /**/
-
-/* HAS_UNION_SEMUN:
- * This symbol, if defined, indicates that the union semun is
- * defined by including <sys/sem.h>. If not, the user code
- * probably needs to define it as:
- * union semun {
- * int val;
- * struct semid_ds *buf;
- * unsigned short *array;
- * }
- */
-/* USE_SEMCTL_SEMUN:
- * This symbol, if defined, indicates that union semun is
- * used for semctl IPC_STAT.
- */
-/* USE_SEMCTL_SEMID_DS:
- * This symbol, if defined, indicates that struct semid_ds * is
- * used for semctl IPC_STAT.
- */
-#define HAS_UNION_SEMUN /**/
-/*#define USE_SEMCTL_SEMUN /**/
-/*#define USE_SEMCTL_SEMID_DS /**/
-
-/* HAS_USTAT:
- * This symbol, if defined, indicates that the ustat system call is
- * available to query file system statistics by dev_t.
- */
-/*#define HAS_USTAT /**/
-
-/* HAS_VFORK:
- * This symbol, if defined, indicates that vfork() exists.
- */
-/*#define HAS_VFORK /**/
-
-/* Signal_t:
- * This symbol's value is either "void" or "int", corresponding to the
- * appropriate return type of a signal handler. Thus, you can declare
- * a signal handler using "Signal_t (*handler)()", and define the
- * handler using "Signal_t handler(sig)".
- */
-#define Signal_t void /* Signal handler's return type */
-
-/* HAS_VPRINTF:
- * This symbol, if defined, indicates that the vprintf routine is available
- * to printf with a pointer to an argument list. If unavailable, you
- * may need to write your own, probably in terms of _doprnt().
- */
-/* USE_CHAR_VSPRINTF:
- * This symbol is defined if this system has vsprintf() returning type
- * (char*). The trend seems to be to declare it as "int vsprintf()". It
- * is up to the package author to declare vsprintf correctly based on the
- * symbol.
- */
-#define HAS_VPRINTF /**/
-/*#define USE_CHAR_VSPRINTF /**/
-
-/* HAS_WRITEV:
- * This symbol, if defined, indicates that the writev routine is
- * available to do scatter writes.
- */
-/*#define HAS_WRITEV /**/
-
-/* USE_DYNAMIC_LOADING:
- * This symbol, if defined, indicates that dynamic loading of
- * some sort is available.
- */
-#define USE_DYNAMIC_LOADING /**/
-
-/* DOUBLESIZE:
- * This symbol contains the size of a double, so that the C preprocessor
- * can make decisions based on it.
- */
-#define DOUBLESIZE 8 /**/
-
-/* EBCDIC:
- * This symbol, if defined, indicates that this system uses
- * EBCDIC encoding.
- */
-/*#define EBCDIC /**/
-
-/* FFLUSH_NULL:
- * This symbol, if defined, tells that fflush(NULL) does flush
- * all pending stdio output.
- */
-/* FFLUSH_ALL:
- * This symbol, if defined, tells that to flush
- * all pending stdio output one must loop through all
- * the stdio file handles stored in an array and fflush them.
- * Note that if fflushNULL is defined, fflushall will not
- * even be probed for and will be left undefined.
- */
-#define FFLUSH_NULL /**/
-/*#define FFLUSH_ALL /**/
-
-/* Fpos_t:
- * This symbol holds the type used to declare file positions in libc.
- * It can be fpos_t, long, uint, etc... It may be necessary to include
- * <sys/types.h> to get any typedef'ed information.
- */
-#define Fpos_t fpos_t /* File position type */
-
-/* Gid_t_f:
- * This symbol defines the format string used for printing a Gid_t.
- */
-#define Gid_t_f "ld" /**/
-
-/* Gid_t_sign:
- * This symbol holds the signedess of a Gid_t.
- * 1 for unsigned, -1 for signed.
- */
-#define Gid_t_sign -1 /* GID sign */
-
-/* Gid_t_size:
- * This symbol holds the size of a Gid_t in bytes.
- */
-#define Gid_t_size 4 /* GID size */
-
-/* Gid_t:
- * This symbol holds the return type of getgid() and the type of
- * argument to setrgid() and related functions. Typically,
- * it is the type of group ids in the kernel. It can be int, ushort,
- * gid_t, etc... It may be necessary to include <sys/types.h> to get
- * any typedef'ed information.
- */
-#define Gid_t gid_t /* Type for getgid(), etc... */
-
-/* Groups_t:
- * This symbol holds the type used for the second argument to
- * getgroups() and setgroups(). Usually, this is the same as
- * gidtype (gid_t) , but sometimes it isn't.
- * It can be int, ushort, gid_t, etc...
- * It may be necessary to include <sys/types.h> to get any
- * typedef'ed information. This is only required if you have
- * getgroups() or setgroups()..
- */
-#if defined(HAS_GETGROUPS) || defined(HAS_SETGROUPS)
-#define Groups_t gid_t /* Type for 2nd arg to [sg]etgroups() */
-#endif
-
-/* DB_Prefix_t:
- * This symbol contains the type of the prefix structure element
- * in the <db.h> header file. In older versions of DB, it was
- * int, while in newer ones it is u_int32_t.
- */
-/* DB_Hash_t:
- * This symbol contains the type of the prefix structure element
- * in the <db.h> header file. In older versions of DB, it was
- * int, while in newer ones it is size_t.
- */
-/* DB_VERSION_MAJOR_CFG:
- * This symbol, if defined, defines the major version number of
- * Berkeley DB found in the <db.h> header when Perl was configured.
- */
-/* DB_VERSION_MINOR_CFG:
- * This symbol, if defined, defines the minor version number of
- * Berkeley DB found in the <db.h> header when Perl was configured.
- * For DB version 1 this is always 0.
- */
-/* DB_VERSION_PATCH_CFG:
- * This symbol, if defined, defines the patch version number of
- * Berkeley DB found in the <db.h> header when Perl was configured.
- * For DB version 1 this is always 0.
- */
-#define DB_Hash_t int /**/
-#define DB_Prefix_t int /**/
-#define DB_VERSION_MAJOR_CFG undef /**/
-#define DB_VERSION_MINOR_CFG undef /**/
-#define DB_VERSION_PATCH_CFG undef /**/
-
-/* I_GRP:
- * This symbol, if defined, indicates to the C program that it should
- * include <grp.h>.
- */
-/* GRPASSWD:
- * This symbol, if defined, indicates to the C program that struct group
- * in <grp.h> contains gr_passwd.
- */
-/*#define I_GRP /**/
-/*#define GRPASSWD /**/
-
-/* I_IEEEFP:
- * This symbol, if defined, indicates that <ieeefp.h> exists and
- * should be included.
- */
-/*#define I_IEEEFP /**/
-
-/* I_INTTYPES:
- * This symbol, if defined, indicates to the C program that it should
- * include <inttypes.h>.
- */
-/*#define I_INTTYPES /**/
-
-/* I_LIBUTIL:
- * This symbol, if defined, indicates that <libutil.h> exists and
- * should be included.
- */
-/*#define I_LIBUTIL /**/
-
-/* I_MACH_CTHREADS:
- * This symbol, if defined, indicates to the C program that it should
- * include <mach/cthreads.h>.
- */
-/*#define I_MACH_CTHREADS /**/
-
-/* I_MNTENT:
- * This symbol, if defined, indicates that <mntent.h> exists and
- * should be included.
- */
-/*#define I_MNTENT /**/
-
-/* I_NETDB:
- * This symbol, if defined, indicates that <netdb.h> exists and
- * should be included.
- */
-/*#define I_NETDB /**/
-
-/* I_NETINET_TCP:
- * This symbol, if defined, indicates to the C program that it should
- * include <netinet/tcp.h>.
- */
-/*#define I_NETINET_TCP /**/
-
-/* I_POLL:
- * This symbol, if defined, indicates that <poll.h> exists and
- * should be included.
- */
-/*#define I_POLL /**/
-
-/* I_PROT:
- * This symbol, if defined, indicates that <prot.h> exists and
- * should be included.
- */
-/*#define I_PROT /**/
-
-/* I_PTHREAD:
- * This symbol, if defined, indicates to the C program that it should
- * include <pthread.h>.
- */
-/*#define I_PTHREAD /**/
-
-/* I_PWD:
- * This symbol, if defined, indicates to the C program that it should
- * include <pwd.h>.
- */
-/* PWQUOTA:
- * This symbol, if defined, indicates to the C program that struct passwd
- * contains pw_quota.
- */
-/* PWAGE:
- * This symbol, if defined, indicates to the C program that struct passwd
- * contains pw_age.
- */
-/* PWCHANGE:
- * This symbol, if defined, indicates to the C program that struct passwd
- * contains pw_change.
- */
-/* PWCLASS:
- * This symbol, if defined, indicates to the C program that struct passwd
- * contains pw_class.
- */
-/* PWEXPIRE:
- * This symbol, if defined, indicates to the C program that struct passwd
- * contains pw_expire.
- */
-/* PWCOMMENT:
- * This symbol, if defined, indicates to the C program that struct passwd
- * contains pw_comment.
- */
-/* PWGECOS:
- * This symbol, if defined, indicates to the C program that struct passwd
- * contains pw_gecos.
- */
-/* PWPASSWD:
- * This symbol, if defined, indicates to the C program that struct passwd
- * contains pw_passwd.
- */
-/*#define I_PWD /**/
-/*#define PWQUOTA /**/
-/*#define PWAGE /**/
-/*#define PWCHANGE /**/
-/*#define PWCLASS /**/
-/*#define PWEXPIRE /**/
-/*#define PWCOMMENT /**/
-/*#define PWGECOS /**/
-/*#define PWPASSWD /**/
-
-/* I_SHADOW:
- * This symbol, if defined, indicates that <shadow.h> exists and
- * should be included.
- */
-/*#define I_SHADOW /**/
-
-/* I_SOCKS:
- * This symbol, if defined, indicates that <socks.h> exists and
- * should be included.
- */
-/*#define I_SOCKS /**/
-
-/* I_SUNMATH:
- * This symbol, if defined, indicates that <sunmath.h> exists and
- * should be included.
- */
-/*#define I_SUNMATH /**/
-
-/* I_SYSLOG:
- * This symbol, if defined, indicates that <syslog.h> exists and
- * should be included.
- */
-/*#define I_SYSLOG /**/
-
-/* I_SYSMODE:
- * This symbol, if defined, indicates that <sys/mode.h> exists and
- * should be included.
- */
-/*#define I_SYSMODE /**/
-
-/* I_SYS_MOUNT:
- * This symbol, if defined, indicates that <sys/mount.h> exists and
- * should be included.
- */
-/*#define I_SYS_MOUNT /**/
-
-/* I_SYS_STATFS:
- * This symbol, if defined, indicates that <sys/statfs.h> exists.
- */
-/*#define I_SYS_STATFS /**/
-
-/* I_SYS_STATVFS:
- * This symbol, if defined, indicates that <sys/statvfs.h> exists and
- * should be included.
- */
-/*#define I_SYS_STATVFS /**/
-
-/* I_SYSUIO:
- * This symbol, if defined, indicates that <sys/uio.h> exists and
- * should be included.
- */
-/*#define I_SYSUIO /**/
-
-/* I_SYSUTSNAME:
- * This symbol, if defined, indicates that <sys/utsname.h> exists and
- * should be included.
- */
-/*#define I_SYSUTSNAME /**/
-
-/* I_SYS_VFS:
- * This symbol, if defined, indicates that <sys/vfs.h> exists and
- * should be included.
- */
-/*#define I_SYS_VFS /**/
-
-/* I_TIME:
- * This symbol, if defined, indicates to the C program that it should
- * include <time.h>.
- */
-/* I_SYS_TIME:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/time.h>.
- */
-/* I_SYS_TIME_KERNEL:
- * This symbol, if defined, indicates to the C program that it should
- * include <sys/time.h> with KERNEL defined.
- */
-/*#define I_TIME /**/
-/*#define I_SYS_TIME /**/
-/*#define I_SYS_TIME_KERNEL /**/
-
-/* I_USTAT:
- * This symbol, if defined, indicates that <ustat.h> exists and
- * should be included.
- */
-/*#define I_USTAT /**/
-
-/* PERL_INC_VERSION_LIST:
- * This variable specifies the list of subdirectories in over
- * which perl.c:incpush() and lib/lib.pm will automatically
- * search when adding directories to @INC, in a format suitable
- * for a C initialization string. See the inc_version_list entry
- * in Porting/Glossary for more details.
- */
-#define PERL_INC_VERSION_LIST 0 /**/
-
-/* INSTALL_USR_BIN_PERL:
- * This symbol, if defined, indicates that Perl is to be installed
- * also as /usr/bin/perl.
- */
-/*#define INSTALL_USR_BIN_PERL /**/
-
-/* PERL_PRIfldbl:
- * This symbol, if defined, contains the string used by stdio to
- * format long doubles (format 'f') for output.
- */
-/* PERL_PRIgldbl:
- * This symbol, if defined, contains the string used by stdio to
- * format long doubles (format 'g') for output.
- */
-/* PERL_PRIeldbl:
- * This symbol, if defined, contains the string used by stdio to
- * format long doubles (format 'e') for output.
- */
-/* PERL_SCNfldbl:
- * This symbol, if defined, contains the string used by stdio to
- * format long doubles (format 'f') for input.
- */
-/*#define PERL_PRIfldbl "f" /**/
-/*#define PERL_PRIgldbl "g" /**/
-/*#define PERL_PRIeldbl "e" /**/
-/*#define PERL_SCNfldbl undef /**/
-
-/* Off_t:
- * This symbol holds the type used to declare offsets in the kernel.
- * It can be int, long, off_t, etc... It may be necessary to include
- * <sys/types.h> to get any typedef'ed information.
- */
-/* LSEEKSIZE:
- * This symbol holds the number of bytes used by the Off_t.
- */
-/* Off_t_size:
- * This symbol holds the number of bytes used by the Off_t.
- */
-#define Off_t long /* <offset> type */
-#define LSEEKSIZE 4 /* <offset> size */
-#define Off_t_size 4 /* <offset> size */
-
-/* Free_t:
- * This variable contains the return type of free(). It is usually
- * void, but occasionally int.
- */
-/* Malloc_t:
- * This symbol is the type of pointer returned by malloc and realloc.
- */
-#define Malloc_t void * /**/
-#define Free_t void /**/
-
-/* MYMALLOC:
- * This symbol, if defined, indicates that we're using our own malloc.
- */
-/*#define MYMALLOC /**/
-
-/* Mode_t:
- * This symbol holds the type used to declare file modes
- * for systems calls. It is usually mode_t, but may be
- * int or unsigned short. It may be necessary to include <sys/types.h>
- * to get any typedef'ed information.
- */
-#define Mode_t mode_t /* file mode parameter for system calls */
-
-/* VAL_O_NONBLOCK:
- * This symbol is to be used during open() or fcntl(F_SETFL) to turn on
- * non-blocking I/O for the file descriptor. Note that there is no way
- * back, i.e. you cannot turn it blocking again this way. If you wish to
- * alternatively switch between blocking and non-blocking, use the
- * ioctl(FIOSNBIO) call instead, but that is not supported by all devices.
- */
-/* VAL_EAGAIN:
- * This symbol holds the errno error code set by read() when no data was
- * present on the non-blocking file descriptor.
- */
-/* RD_NODATA:
- * This symbol holds the return code from read() when no data is present
- * on the non-blocking file descriptor. Be careful! If EOF_NONBLOCK is
- * not defined, then you can't distinguish between no data and EOF by
- * issuing a read(). You'll have to find another way to tell for sure!
- */
-/* EOF_NONBLOCK:
- * This symbol, if defined, indicates to the C program that a read() on
- * a non-blocking file descriptor will return 0 on EOF, and not the value
- * held in RD_NODATA (-1 usually, in that case!).
- */
-#define VAL_O_NONBLOCK O_NONBLOCK
-#define VAL_EAGAIN EAGAIN
-#define RD_NODATA -1
-#define EOF_NONBLOCK
-
-/* NEED_VA_COPY:
- * This symbol, if defined, indicates that the system stores
- * the variable argument list datatype, va_list, in a format
- * that cannot be copied by simple assignment, so that some
- * other means must be used when copying is required.
- * As such systems vary in their provision (or non-provision)
- * of copying mechanisms, handy.h defines a platform-
- * independent macro, Perl_va_copy(src, dst), to do the job.
- */
-/*#define NEED_VA_COPY /**/
-
-/* Netdb_host_t:
- * This symbol holds the type used for the 1st argument
- * to gethostbyaddr().
- */
-/* Netdb_hlen_t:
- * This symbol holds the type used for the 2nd argument
- * to gethostbyaddr().
- */
-/* Netdb_name_t:
- * This symbol holds the type used for the argument to
- * gethostbyname().
- */
-/* Netdb_net_t:
- * This symbol holds the type used for the 1st argument to
- * getnetbyaddr().
- */
-#define Netdb_host_t char * /**/
-#define Netdb_hlen_t int /**/
-#define Netdb_name_t char * /**/
-#define Netdb_net_t long /**/
-
-/* PERL_OTHERLIBDIRS:
- * This variable contains a colon-separated set of paths for the perl
- * binary to search for additional library files or modules.
- * These directories will be tacked to the end of @INC.
- * Perl will automatically search below each path for version-
- * and architecture-specific directories. See PERL_INC_VERSION_LIST
- * for more details.
- */
-/*#define PERL_OTHERLIBDIRS "undef" /**/
-
-/* IVTYPE:
- * This symbol defines the C type used for Perl's IV.
- */
-/* UVTYPE:
- * This symbol defines the C type used for Perl's UV.
- */
-/* I8TYPE:
- * This symbol defines the C type used for Perl's I8.
- */
-/* U8TYPE:
- * This symbol defines the C type used for Perl's U8.
- */
-/* I16TYPE:
- * This symbol defines the C type used for Perl's I16.
- */
-/* U16TYPE:
- * This symbol defines the C type used for Perl's U16.
- */
-/* I32TYPE:
- * This symbol defines the C type used for Perl's I32.
- */
-/* U32TYPE:
- * This symbol defines the C type used for Perl's U32.
- */
-/* I64TYPE:
- * This symbol defines the C type used for Perl's I64.
- */
-/* U64TYPE:
- * This symbol defines the C type used for Perl's U64.
- */
-/* NVTYPE:
- * This symbol defines the C type used for Perl's NV.
- */
-/* IVSIZE:
- * This symbol contains the sizeof(IV).
- */
-/* UVSIZE:
- * This symbol contains the sizeof(UV).
- */
-/* I8SIZE:
- * This symbol contains the sizeof(I8).
- */
-/* U8SIZE:
- * This symbol contains the sizeof(U8).
- */
-/* I16SIZE:
- * This symbol contains the sizeof(I16).
- */
-/* U16SIZE:
- * This symbol contains the sizeof(U16).
- */
-/* I32SIZE:
- * This symbol contains the sizeof(I32).
- */
-/* U32SIZE:
- * This symbol contains the sizeof(U32).
- */
-/* I64SIZE:
- * This symbol contains the sizeof(I64).
- */
-/* U64SIZE:
- * This symbol contains the sizeof(U64).
- */
-/* NVSIZE:
- * This symbol contains the sizeof(NV).
- */
-/* NV_PRESERVES_UV:
- * This symbol, if defined, indicates that a variable of type NVTYPE
- * can preserve all the bits of a variable of type UVTYPE.
- */
-/* NV_PRESERVES_UV_BITS:
- * This symbol contains the number of bits a variable of type NVTYPE
- * can preserve of a variable of type UVTYPE.
- */
-#define IVTYPE long /**/
-#define UVTYPE unsigned long /**/
-#define I8TYPE char /**/
-#define U8TYPE unsigned char /**/
-#define I16TYPE short /**/
-#define U16TYPE unsigned short /**/
-#define I32TYPE long /**/
-#define U32TYPE unsigned long /**/
-#ifdef HAS_QUAD
-#define I64TYPE __int64 /**/
-#define U64TYPE unsigned __int64 /**/
-#endif
-#define NVTYPE double /**/
-#define IVSIZE 4 /**/
-#define UVSIZE 4 /**/
-#define I8SIZE 1 /**/
-#define U8SIZE 1 /**/
-#define I16SIZE 2 /**/
-#define U16SIZE 2 /**/
-#define I32SIZE 4 /**/
-#define U32SIZE 4 /**/
-#ifdef HAS_QUAD
-#define I64SIZE 8 /**/
-#define U64SIZE 8 /**/
-#endif
-#define NVSIZE 8 /**/
-#define NV_PRESERVES_UV
-#define NV_PRESERVES_UV_BITS undef
-
-/* IVdf:
- * This symbol defines the format string used for printing a Perl IV
- * as a signed decimal integer.
- */
-/* UVuf:
- * This symbol defines the format string used for printing a Perl UV
- * as an unsigned decimal integer.
- */
-/* UVof:
- * This symbol defines the format string used for printing a Perl UV
- * as an unsigned octal integer.
- */
-/* UVxf:
- * 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.
- */
-/* NVff:
- * This symbol defines the format string used for printing a Perl NV
- * using %f-ish floating point format.
- */
-/* NVgf:
- * This symbol defines the format string used for printing a Perl NV
- * using %g-ish floating point format.
- */
-#define IVdf "ld" /**/
-#define UVuf "lu" /**/
-#define UVof "lo" /**/
-#define UVxf "lx" /**/
-#define UVXf undef /**/
-#define NVef "e" /**/
-#define NVff "f" /**/
-#define NVgf "g" /**/
-
-/* Pid_t:
- * This symbol holds the type used to declare process ids in the kernel.
- * It can be int, uint, pid_t, etc... It may be necessary to include
- * <sys/types.h> to get any typedef'ed information.
- */
-#define Pid_t int /* PID type */
-
-/* PRIVLIB:
- * This symbol contains the name of the private library for this package.
- * The library is private in the sense that it needn't be in anyone's
- * execution path, but it should be accessible by the world. The program
- * should be prepared to do ~ expansion.
- */
-/* PRIVLIB_EXP:
- * This symbol contains the ~name expanded version of PRIVLIB, to be used
- * in programs that are not prepared to deal with ~ expansion at run-time.
- */
-#define PRIVLIB "5.7.3\\lib" /**/
-#define PRIVLIB_EXP (win32_get_privlib("5.7.3")) /**/
-
-/* PTRSIZE:
- * This symbol contains the size of a pointer, so that the C preprocessor
- * can make decisions based on it. It will be sizeof(void *) if
- * the compiler supports (void *); otherwise it will be
- * sizeof(char *).
- */
-#define PTRSIZE 4 /**/
-
-/* Drand01:
- * This macro is to be used to generate uniformly distributed
- * random numbers over the range [0., 1.[. You may have to supply
- * an 'extern double drand48();' in your program since SunOS 4.1.3
- * doesn't provide you with anything relevant in its headers.
- * See HAS_DRAND48_PROTO.
- */
-/* Rand_seed_t:
- * This symbol defines the type of the argument of the
- * random seed function.
- */
-/* seedDrand01:
- * This symbol defines the macro to be used in seeding the
- * random number generator (see Drand01).
- */
-/* RANDBITS:
- * This symbol indicates how many bits are produced by the
- * function used to generate normalized random numbers.
- * Values include 15, 16, 31, and 48.
- */
-#define Drand01() (rand()/(double)((unsigned)1<<RANDBITS)) /**/
-#define Rand_seed_t unsigned /**/
-#define seedDrand01(x) srand((Rand_seed_t)x) /**/
-#define RANDBITS 15 /**/
-
-/* SELECT_MIN_BITS:
- * This symbol holds the minimum number of bits operated by select.
- * That is, if you do select(n, ...), how many bits at least will be
- * cleared in the masks if some activity is detected. Usually this
- * is either n or 32*ceil(n/32), especially many little-endians do
- * the latter. This is only useful if you have select(), naturally.
- */
-#define SELECT_MIN_BITS 32 /**/
-
-/* Select_fd_set_t:
- * This symbol holds the type used for the 2nd, 3rd, and 4th
- * arguments to select. Usually, this is 'fd_set *', if HAS_FD_SET
- * is defined, and 'int *' otherwise. This is only useful if you
- * have select(), of course.
- */
-#define Select_fd_set_t Perl_fd_set * /**/
-
-/* SIG_NAME:
- * This symbol contains a list of signal names in order of
- * signal number. This is intended
- * to be used as a static array initialization, like this:
- * char *sig_name[] = { SIG_NAME };
- * The signals in the list are separated with commas, and each signal
- * is surrounded by double quotes. There is no leading SIG in the signal
- * name, i.e. SIGQUIT is known as "QUIT".
- * Gaps in the signal numbers (up to NSIG) are filled in with NUMnn,
- * etc., where nn is the actual signal number (e.g. NUM37).
- * The signal number for sig_name[i] is stored in sig_num[i].
- * The last element is 0 to terminate the list with a NULL. This
- * corresponds to the 0 at the end of the sig_num list.
- */
-/* SIG_NUM:
- * This symbol contains a list of signal numbers, in the same order as the
- * SIG_NAME list. It is suitable for static array initialization, as in:
- * int sig_num[] = { SIG_NUM };
- * The signals in the list are separated with commas, and the indices
- * within that list and the SIG_NAME list match, so it's easy to compute
- * the signal name from a number or vice versa at the price of a small
- * dynamic linear lookup.
- * Duplicates are allowed, but are moved to the end of the list.
- * The signal number corresponding to sig_name[i] is sig_number[i].
- * if (i < NSIG) then sig_number[i] == i.
- * 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", "NUM01", "INT", "QUIT", "ILL", "NUM05", "NUM06", "NUM07", "FPE", "KILL", "NUM10", "SEGV", "NUM12", "PIPE", "ALRM", "TERM", "NUM16", "NUM17", "NUM18", "NUM19", "CHLD", "BREAK", "ABRT", "STOP", "NUM24", "CONT", "CLD", 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, 20, 0 /**/
-#define SIG_SIZE 0 /**/
-
-/* SITEARCH:
- * This symbol contains the name of the private library for this package.
- * The library is private in the sense that it needn't be in anyone's
- * execution path, but it should be accessible by the world. The program
- * should be prepared to do ~ expansion.
- * The standard distribution will put nothing in this directory.
- * After perl has been installed, users may install their own local
- * architecture-dependent modules in this directory with
- * MakeMaker Makefile.PL
- * or equivalent. See INSTALL for details.
- */
-/* SITEARCH_EXP:
- * This symbol contains the ~name expanded version of SITEARCH, to be used
- * in programs that are not prepared to deal with ~ expansion at run-time.
- */
-#define SITEARCH "\\site5.7.3\\lib" /**/
-/*#define SITEARCH_EXP "" /**/
-
-/* SITELIB:
- * This symbol contains the name of the private library for this package.
- * The library is private in the sense that it needn't be in anyone's
- * execution path, but it should be accessible by the world. The program
- * should be prepared to do ~ expansion.
- * The standard distribution will put nothing in this directory.
- * After perl has been installed, users may install their own local
- * architecture-independent modules in this directory with
- * MakeMaker Makefile.PL
- * or equivalent. See INSTALL for details.
- */
-/* SITELIB_EXP:
- * This symbol contains the ~name expanded version of SITELIB, to be used
- * in programs that are not prepared to deal with ~ expansion at run-time.
- */
-/* SITELIB_STEM:
- * This define is SITELIB_EXP with any trailing version-specific component
- * removed. The elements in inc_version_list (inc_version_list.U) can
- * be tacked onto this variable to generate a list of directories to search.
- */
-#define SITELIB "\\site5.7.3\\lib" /**/
-#define SITELIB_EXP (win32_get_sitelib("5.7.3")) /**/
-#define SITELIB_STEM "" /**/
-
-/* Size_t_size:
- * This symbol holds the size of a Size_t in bytes.
- */
-#define Size_t_size 4 /**/
-
-/* Size_t:
- * This symbol holds the type used to declare length parameters
- * for string functions. It is usually size_t, but may be
- * unsigned long, int, etc. It may be necessary to include
- * <sys/types.h> to get any typedef'ed information.
- */
-#define Size_t size_t /* length paramater for string functions */
-
-/* Sock_size_t:
- * This symbol holds the type used for the size argument of
- * various socket calls (just the base type, not the pointer-to).
- */
-#define Sock_size_t int /**/
-
-/* SSize_t:
- * This symbol holds the type used by functions that return
- * a count of bytes or an error condition. It must be a signed type.
- * It is usually ssize_t, but may be long or int, etc.
- * It may be necessary to include <sys/types.h> or <unistd.h>
- * to get any typedef'ed information.
- * We will pick a type such that sizeof(SSize_t) == sizeof(Size_t).
- */
-#define SSize_t int /* signed count of bytes */
-
-/* STARTPERL:
- * This variable contains the string to put in front of a perl
- * script to make sure (one hopes) that it runs with perl and not
- * some shell.
- */
-#define STARTPERL "#!perl" /**/
-
-/* STDCHAR:
- * This symbol is defined to be the type of char used in stdio.h.
- * It has the values "unsigned char" or "char".
- */
-#define STDCHAR char /**/
-
-/* HAS_STDIO_STREAM_ARRAY:
- * This symbol, if defined, tells that there is an array
- * holding the stdio streams.
- */
-/* STDIO_STREAM_ARRAY:
- * This symbol tells the name of the array holding the stdio streams.
- * Usual values include _iob, __iob, and __sF.
- */
-/*#define HAS_STDIO_STREAM_ARRAY /**/
-#define STDIO_STREAM_ARRAY
-
-/* Uid_t_f:
- * This symbol defines the format string used for printing a Uid_t.
- */
-#define Uid_t_f "ld" /**/
-
-/* Uid_t_sign:
- * This symbol holds the signedess of a Uid_t.
- * 1 for unsigned, -1 for signed.
- */
-#define Uid_t_sign -1 /* UID sign */
-
-/* Uid_t_size:
- * This symbol holds the size of a Uid_t in bytes.
- */
-#define Uid_t_size 4 /* UID size */
-
-/* Uid_t:
- * This symbol holds the type used to declare user ids in the kernel.
- * It can be int, ushort, uid_t, etc... It may be necessary to include
- * <sys/types.h> to get any typedef'ed information.
- */
-#define Uid_t uid_t /* UID type */
-
-/* USE_64_BIT_INT:
- * This symbol, if defined, indicates that 64-bit integers should
- * be used when available. If not defined, the native integers
- * will be employed (be they 32 or 64 bits). The minimal possible
- * 64-bitness is used, just enough to get 64-bit integers into Perl.
- * This may mean using for example "long longs", while your memory
- * may still be limited to 2 gigabytes.
- */
-/* USE_64_BIT_ALL:
- * This symbol, if defined, indicates that 64-bit integers should
- * be used when available. If not defined, the native integers
- * will be used (be they 32 or 64 bits). The maximal possible
- * 64-bitness is employed: LP64 or ILP64, meaning that you will
- * be able to use more than 2 gigabytes of memory. This mode is
- * even more binary incompatible than USE_64_BIT_INT. You may not
- * be able to run the resulting executable in a 32-bit CPU at all or
- * you may need at least to reboot your OS to 64-bit mode.
- */
-#ifndef USE_64_BIT_INT
-/*#define USE_64_BIT_INT /**/
-#endif
-
-#ifndef USE_64_BIT_ALL
-/*#define USE_64_BIT_ALL /**/
-#endif
-
-/* USE_LARGE_FILES:
- * This symbol, if defined, indicates that large file support
- * should be used when available.
- */
-#ifndef USE_LARGE_FILES
-/*#define USE_LARGE_FILES /**/
-#endif
-
-/* USE_LONG_DOUBLE:
- * This symbol, if defined, indicates that long doubles should
- * be used when available.
- */
-#ifndef USE_LONG_DOUBLE
-/*#define USE_LONG_DOUBLE /**/
-#endif
-
-/* USE_MORE_BITS:
- * This symbol, if defined, indicates that 64-bit interfaces and
- * long doubles should be used when available.
- */
-#ifndef USE_MORE_BITS
-/*#define USE_MORE_BITS /**/
-#endif
-
-/* MULTIPLICITY:
- * This symbol, if defined, indicates that Perl should
- * be built to use multiplicity.
- */
-#ifndef MULTIPLICITY
-/*#define MULTIPLICITY /**/
-#endif
-
-/* USE_PERLIO:
- * This symbol, if defined, indicates that the PerlIO abstraction should
- * be used throughout. If not defined, stdio should be
- * used in a fully backward compatible manner.
- */
-#ifndef USE_PERLIO
-#define USE_PERLIO /**/
-#endif
-
-/* USE_SOCKS:
- * This symbol, if defined, indicates that Perl should
- * be built to use socks.
- */
-#ifndef USE_SOCKS
-/*#define USE_SOCKS /**/
-#endif
-
-/* USE_ITHREADS:
- * This symbol, if defined, indicates that Perl should be built to
- * use the interpreter-based threading implementation.
- */
-/* USE_5005THREADS:
- * This symbol, if defined, indicates that Perl should be built to
- * use the 5.005-based threading implementation.
- */
-/* OLD_PTHREADS_API:
- * This symbol, if defined, indicates that Perl should
- * be built to use the old draft POSIX threads API.
- */
-/* USE_REENTRANT_API:
- * This symbol, if defined, indicates that Perl should
- * try to use the various _r versions of library functions.
- * This is extremely experimental.
- */
-/*#define USE_5005THREADS /**/
-/*#define USE_ITHREADS /**/
-#if defined(USE_5005THREADS) && !defined(USE_ITHREADS)
-#define USE_5005THREADS /* until src is revised*/
-#endif
-/*#define OLD_PTHREADS_API /**/
-/*#define USE_REENTRANT_API /**/
-
-/* PERL_VENDORARCH:
- * If defined, this symbol contains the name of a private library.
- * The library is private in the sense that it needn't be in anyone's
- * execution path, but it should be accessible by the world.
- * It may have a ~ on the front.
- * The standard distribution will put nothing in this directory.
- * Vendors who distribute perl may wish to place their own
- * architecture-dependent modules and extensions in this directory with
- * MakeMaker Makefile.PL INSTALLDIRS=vendor
- * or equivalent. See INSTALL for details.
- */
-/* PERL_VENDORARCH_EXP:
- * This symbol contains the ~name expanded version of PERL_VENDORARCH, to be used
- * in programs that are not prepared to deal with ~ expansion at run-time.
- */
-/*#define PERL_VENDORARCH "" /**/
-/*#define PERL_VENDORARCH_EXP "" /**/
-
-/* PERL_VENDORLIB_EXP:
- * This symbol contains the ~name expanded version of VENDORLIB, to be used
- * in programs that are not prepared to deal with ~ expansion at run-time.
- */
-/* PERL_VENDORLIB_STEM:
- * This define is PERL_VENDORLIB_EXP with any trailing version-specific component
- * removed. The elements in inc_version_list (inc_version_list.U) can
- * be tacked onto this variable to generate a list of directories to search.
- */
-/*#define PERL_VENDORLIB_EXP "" /**/
-/*#define PERL_VENDORLIB_STEM "" /**/
-
-/* VOIDFLAGS:
- * This symbol indicates how much support of the void type is given by this
- * compiler. What various bits mean:
- *
- * 1 = supports declaration of void
- * 2 = supports arrays of pointers to functions returning void
- * 4 = supports comparisons between pointers to void functions and
- * addresses of void functions
- * 8 = suports declaration of generic void pointers
- *
- * The package designer should define VOIDUSED to indicate the requirements
- * of the package. This can be done either by #defining VOIDUSED before
- * including config.h, or by defining defvoidused in Myinit.U. If the
- * latter approach is taken, only those flags will be tested. If the
- * level of void support necessary is not present, defines void to int.
- */
-#ifndef VOIDUSED
-#define VOIDUSED 15
-#endif
-#define VOIDFLAGS 15
-#if (VOIDFLAGS & VOIDUSED) != VOIDUSED
-#define void int /* is void to be avoided? */
-#define M_VOID /* Xenix strikes again */
-#endif
-
-/* PERL_XS_APIVERSION:
- * This variable contains the version of the oldest perl binary
- * compatible with the present perl. perl.c:incpush() and
- * lib/lib.pm will automatically search in \\site5.7.3\\lib for older
- * directories across major versions back to xs_apiversion.
- * This is only useful if you have a perl library directory tree
- * structured like the default one.
- * See INSTALL for how this works.
- * The versioned site_perl directory was introduced in 5.005,
- * so that is the lowest possible value.
- * Since this can depend on compile time options
- * it is set by Configure. Other non-default sources
- * of potential incompatibility, such as multiplicity, threads,
- * debugging, 64bits, sfio, etc., are not checked for currently,
- * though in principle we could go snooping around in old
- * Config.pm files.
- */
-/* PERL_PM_APIVERSION:
- * This variable contains the version of the oldest perl
- * compatible with the present perl. (That is, pure perl modules
- * written for pm_apiversion will still work for the current
- * version). perl.c:incpush() and lib/lib.pm will automatically
- * search in \\site5.7.3\\lib for older directories across major versions
- * back to pm_apiversion. This is only useful if you have a perl
- * library directory tree structured like the default one. The
- * versioned site_perl library was introduced in 5.005, so that's
- * the default setting for this variable. It's hard to imagine
- * it changing before Perl6. It is included here for symmetry
- * with xs_apiveprsion -- the searching algorithms will
- * (presumably) be similar.
- * See the INSTALL file for how this works.
- */
-#define PERL_XS_APIVERSION "5.6.0"
-#define PERL_PM_APIVERSION "5.005"
-
-/* SETUID_SCRIPTS_ARE_SECURE_NOW:
- * This symbol, if defined, indicates that the bug that prevents
- * setuid scripts from being secure is not present in this kernel.
- */
-/* DOSUID:
- * This symbol, if defined, indicates that the C program should
- * check the script that it is executing for setuid/setgid bits, and
- * attempt to emulate setuid/setgid on systems that have disabled
- * setuid #! scripts because the kernel can't do it securely.
- * It is up to the package designer to make sure that this emulation
- * is done securely. Among other things, it should do an fstat on
- * the script it just opened to make sure it really is a setuid/setgid
- * script, it should make sure the arguments passed correspond exactly
- * to the argument on the #! line, and it should not trust any
- * subprocesses to which it must pass the filename rather than the
- * file descriptor of the script to be executed.
- */
-/*#define SETUID_SCRIPTS_ARE_SECURE_NOW /**/
-/*#define DOSUID /**/
-
-/* I_STDARG:
- * This symbol, if defined, indicates that <stdarg.h> exists and should
- * be included.
- */
-/* I_VARARGS:
- * This symbol, if defined, indicates to the C program that it should
- * include <varargs.h>.
- */
-#define I_STDARG /**/
-/*#define I_VARARGS /**/
-
-/* USE_CROSS_COMPILE:
- * This symbol, if defined, indicates that Perl is being cross-compiled.
- */
-/* PERL_TARGETARCH:
- * This symbol, if defined, indicates the target architecture
- * Perl has been cross-compiled to. Undefined if not a cross-compile.
- */
-#ifndef USE_CROSS_COMPILE
-/*#define USE_CROSS_COMPILE /**/
-#define PERL_TARGETARCH "undef" /**/
-#endif
-
-/* HAS_DBMINIT_PROTO:
- * This symbol, if defined, indicates that the system provides
- * a prototype for the dbminit() function. Otherwise, it is up
- * to the program to supply one. A good guess is
- * extern int dbminit(char *);
- */
-/*#define HAS_DBMINIT_PROTO /**/
-
-/* HAS_FLOCK_PROTO:
- * This symbol, if defined, indicates that the system provides
- * a prototype for the flock() function. Otherwise, it is up
- * to the program to supply one. A good guess is
- * extern int flock(int, int);
- */
-/*#define HAS_FLOCK_PROTO /**/
-
-/* HAS_NL_LANGINFO:
- * This symbol, if defined, indicates that the nl_langinfo routine is
- * available to return local data. You will also need <langinfo.h>
- * and therefore I_LANGINFO.
- */
-/*#define HAS_NL_LANGINFO /**/
-
-/* 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 /**/
-
-/* HAS_SOCKATMARK:
- * This symbol, if defined, indicates that the sockatmark routine is
- * available to test whether a socket is at the out-of-band mark.
- */
-/*#define HAS_SOCKATMARK /**/
-
-/* HAS_SOCKATMARK_PROTO:
- * This symbol, if defined, indicates that the system provides
- * a prototype for the sockatmark() function. Otherwise, it is up
- * to the program to supply one. A good guess is
- * extern int sockatmark(int);
- */
-/*#define HAS_SOCKATMARK_PROTO /**/
-
-/* HAS_SETRESGID_PROTO:
- * This symbol, if defined, indicates that the system provides
- * a prototype for the setresgid() function. Otherwise, it is up
- * to the program to supply one. Good guesses are
- * extern int setresgid(uid_t ruid, uid_t euid, uid_t suid);
- */
-/*#define HAS_SETRESGID_PROTO /**/
-
-/* HAS_SETRESUID_PROTO:
- * This symbol, if defined, indicates that the system provides
- * a prototype for the setresuid() function. Otherwise, it is up
- * to the program to supply one. Good guesses are
- * extern int setresuid(uid_t ruid, uid_t euid, uid_t suid);
- */
-/*#define HAS_SETRESUID_PROTO /**/
-
-/* HAS_STRFTIME:
- * This symbol, if defined, indicates that the strftime routine is
- * available to do time formatting.
- */
-/*#define HAS_STRFTIME /**/
-
-/* HAS_SYSCALL_PROTO:
- * This symbol, if defined, indicates that the system provides
- * a prototype for the syscall() function. Otherwise, it is up
- * to the program to supply one. Good guesses are
- * extern int syscall(int, ...);
- * extern int syscall(long, ...);
- */
-/*#define HAS_SYSCALL_PROTO /**/
-
-/* U32_ALIGNMENT_REQUIRED:
- * This symbol, if defined, indicates that you must access
- * character data through U32-aligned pointers.
- */
-/*#define U32_ALIGNMENT_REQUIRED /**/
-
-/* HAS_USLEEP_PROTO:
- * This symbol, if defined, indicates that the system provides
- * a prototype for the usleep() function. Otherwise, it is up
- * to the program to supply one. A good guess is
- * extern int usleep(useconds_t);
- */
-/*#define HAS_USLEEP_PROTO /**/
-
-/* I_LANGINFO:
- * This symbol, if defined, indicates that <langinfo.h> exists and
- * should be included.
- */
-/*#define I_LANGINFO /**/
-
-/* HAS_PTHREAD_ATFORK:
- * This symbol, if defined, indicates that the pthread_atfork routine
- * is available setup fork handlers.
- */
-/*#define HAS_PTHREAD_ATFORK /**/
-
-#endif
diff --git a/wince/config_h.PL b/wince/config_h.PL
index d78a62ea59..957966c59f 100644
--- a/wince/config_h.PL
+++ b/wince/config_h.PL
@@ -1,5 +1,11 @@
#
-use Config;
+BEGIN { warn "Running ".__FILE__."\n" };
+BEGIN
+ {
+ require "../lib/Config.pm";
+ die "../Config.pm:$@" if $@;
+ Config::->import;
+ }
use File::Compare qw(compare);
use File::Copy qw(copy);
my $name = $0;
@@ -13,6 +19,8 @@ while (@ARGV && $ARGV[0] =~ /^([\w_]+)=(.*)$/)
$opt{CONFIG_H} ||= 'config.h';
+warn "Writing $opt{CONFIG_H}\n";
+
my $patchlevel = $opt{INST_VER};
$patchlevel =~ s|^[\\/]||;
$patchlevel =~ s|~VERSION~|$Config{version}|g;
@@ -68,9 +76,9 @@ close(H);
close(SH);
-chmod(0666,"config.h");
-copy("$file.new","config.h") || die "Cannot copy:$!";
-chmod(0444,"config.h");
+chmod(0666,"../lib/CORE/config.h");
+copy("$file.new","../lib/CORE/config.h") || die "Cannot copy:$!";
+chmod(0444,"../lib/CORE/config.h");
if (compare("$file.new",$file))
{
diff --git a/wince/perldll.def b/wince/perldll.def
deleted file mode 100644
index c95e33a2a0..0000000000
--- a/wince/perldll.def
+++ /dev/null
@@ -1,1040 +0,0 @@
-LIBRARY Perl
-
-EXPORTS
- PL_AMG_names
- PL_Argv
- PL_Cmd
- PL_DBgv
- PL_DBline
- PL_DBsignal
- PL_DBsingle
- PL_DBsub
- PL_DBtrace
- PL_No
- PL_Sv
- PL_Xpv
- PL_Yes
- PL_amagic_generation
- PL_an
- PL_argvgv
- PL_argvout_stack
- PL_argvoutgv
- PL_av_fetch_sv
- PL_basetime
- PL_beginav
- PL_bitcount
- PL_bodytarget
- PL_bostr
- PL_bufend
- PL_bufptr
- PL_check
- PL_checkav
- PL_chopset
- PL_colors
- PL_colorset
- PL_compcv
- PL_compiling
- PL_comppad
- PL_comppad_name
- PL_comppad_name_fill
- PL_comppad_name_floor
- PL_cop_seqmax
- PL_copline
- PL_curcop
- PL_curcopdb
- PL_curinterp
- PL_curpad
- PL_curpm
- PL_curstack
- PL_curstackinfo
- PL_curstash
- PL_curstname
- PL_dbargs
- PL_debstash
- PL_debug
- PL_defgv
- PL_defoutgv
- PL_defstash
- PL_delaymagic
- PL_diehook
- PL_dirty
- PL_do_undump
- PL_doextract
- PL_doswitches
- PL_dowarn
- PL_dumpindent
- PL_e_script
- PL_efloatbuf
- PL_efloatsize
- PL_egid
- PL_endav
- PL_envgv
- PL_errgv
- PL_error_count
- PL_errors
- PL_euid
- PL_eval_root
- PL_eval_start
- PL_evalseq
- PL_exit_flags
- PL_exitlist
- PL_exitlistlen
- PL_expect
- PL_extralen
- PL_fdpid
- PL_filemode
- PL_firstgv
- PL_fold
- PL_fold_locale
- PL_forkprocess
- PL_formfeed
- PL_formtarget
- PL_freq
- PL_gensym
- PL_gid
- PL_glob_index
- PL_globalstash
- PL_he_root
- PL_hexdigit
- PL_hintgv
- PL_hints
- PL_hv_fetch_ent_mh
- PL_hv_fetch_sv
- PL_in_clean_all
- PL_in_clean_objs
- PL_in_eval
- PL_in_my
- PL_in_my_stash
- PL_incgv
- PL_initav
- PL_inplace
- PL_last_in_gv
- PL_last_lop
- PL_last_lop_op
- PL_last_swash_hv
- PL_last_swash_key
- PL_last_swash_klen
- PL_last_swash_slen
- PL_last_swash_tmps
- PL_last_uni
- PL_lastfd
- PL_lastscream
- PL_laststatval
- PL_laststype
- PL_lex_brackets
- PL_lex_brackstack
- PL_lex_casemods
- PL_lex_casestack
- PL_lex_defer
- PL_lex_dojoin
- PL_lex_expect
- PL_lex_formbrack
- PL_lex_inpat
- PL_lex_inwhat
- PL_lex_op
- PL_lex_repl
- PL_lex_starts
- PL_lex_state
- PL_lex_stuff
- PL_lineary
- PL_linestr
- PL_localizing
- PL_localpatches
- PL_main_cv
- PL_main_root
- PL_main_start
- PL_mainstack
- PL_markstack
- PL_markstack_max
- PL_markstack_ptr
- PL_max_intro_pending
- PL_maxo
- PL_maxscream
- PL_maxsysfd
- PL_mess_sv
- PL_min_intro_pending
- PL_minus_F
- PL_minus_a
- PL_minus_c
- PL_minus_l
- PL_minus_n
- PL_minus_p
- PL_modglobal
- PL_multi_close
- PL_multi_end
- PL_multi_open
- PL_multi_start
- PL_multiline
- PL_na
- PL_nexttoke
- PL_nexttype
- PL_nextval
- PL_nice_chunk
- PL_nice_chunk_size
- PL_no_aelem
- PL_no_dir_func
- PL_no_func
- PL_no_helem
- PL_no_mem
- PL_no_modify
- PL_no_myglob
- PL_no_security
- PL_no_sock_func
- PL_no_symref
- PL_no_usym
- PL_no_wrongref
- PL_nomemok
- PL_nrs
- PL_ofmt
- PL_oldbufptr
- PL_oldname
- PL_oldoldbufptr
- PL_op
- PL_op_desc
- PL_op_mask
- PL_op_name
- PL_op_seqmax
- PL_opargs
- PL_origalen
- PL_origargc
- PL_origargv
- PL_origenviron
- PL_origfilename
- PL_osname
- PL_pad_reset_pending
- PL_padix
- PL_padix_floor
- PL_patchlevel
- PL_patleave
- PL_perl_destruct_level
- PL_perldb
- PL_pidstatus
- PL_ppaddr
- PL_preambleav
- PL_preambled
- PL_preprocess
- PL_profiledata
- PL_psig_name
- PL_psig_ptr
- PL_reg_call_cc
- PL_reg_curpm
- PL_reg_eval_set
- PL_reg_flags
- PL_reg_ganch
- PL_reg_leftiter
- PL_reg_magic
- PL_reg_maxiter
- PL_reg_oldcurpm
- PL_reg_oldpos
- PL_reg_oldsaved
- PL_reg_oldsavedlen
- PL_reg_poscache
- PL_reg_poscache_size
- PL_reg_re
- PL_reg_start_tmp
- PL_reg_start_tmpl
- PL_reg_starttry
- PL_reg_sv
- PL_reg_whilem_seen
- PL_regbol
- PL_regcc
- PL_regcode
- PL_regcomp_parse
- PL_regcomp_rx
- PL_regcompp
- PL_regdata
- PL_regdummy
- PL_regendp
- PL_regeol
- PL_regexecp
- PL_regflags
- PL_regfree
- PL_regindent
- PL_reginput
- PL_regint_start
- PL_regint_string
- PL_reginterp_cnt
- PL_regkind
- PL_reglastparen
- PL_regnarrate
- PL_regnaughty
- PL_regnpar
- PL_regprecomp
- PL_regprogram
- PL_regsawback
- PL_regseen
- PL_regsize
- PL_regstartp
- PL_regtill
- PL_regxend
- PL_replgv
- PL_restartop
- PL_retstack
- PL_retstack_ix
- PL_retstack_max
- PL_rs
- PL_rsfp
- PL_rsfp_filters
- PL_runops
- PL_savestack
- PL_savestack_ix
- PL_savestack_max
- PL_sawampersand
- PL_scopestack
- PL_scopestack_ix
- PL_scopestack_max
- PL_screamfirst
- PL_screamnext
- PL_secondgv
- PL_seen_evals
- PL_seen_zerolen
- PL_sh_path
- PL_sig_name
- PL_sig_num
- PL_sighandlerp
- PL_simple
- PL_sortcop
- PL_sortstash
- PL_splitstr
- PL_srand_called
- PL_stack_base
- PL_stack_max
- PL_stack_sp
- PL_start_env
- PL_statbuf
- PL_statcache
- PL_statgv
- PL_statname
- PL_statusvalue
- PL_stderrgv
- PL_stdingv
- PL_strtab
- PL_sub_generation
- PL_subline
- PL_subname
- PL_sv_arenaroot
- PL_sv_count
- PL_sv_no
- PL_sv_objcount
- PL_sv_root
- PL_sv_undef
- PL_sv_yes
- PL_sys_intern
- PL_tainted
- PL_tainting
- PL_tmps_floor
- PL_tmps_ix
- PL_tmps_max
- PL_tmps_stack
- PL_tokenbuf
- PL_top_env
- PL_toptarget
- PL_uid
- PL_unsafe
- PL_utf8_alnum
- PL_utf8_alnumc
- PL_utf8_alpha
- PL_utf8_ascii
- PL_utf8_cntrl
- PL_utf8_digit
- PL_utf8_graph
- PL_utf8_lower
- PL_utf8_mark
- PL_utf8_print
- PL_utf8_punct
- PL_utf8_space
- PL_utf8_tolower
- PL_utf8_totitle
- PL_utf8_toupper
- PL_utf8_upper
- PL_utf8_xdigit
- PL_utf8skip
- PL_uudmap
- PL_uuemap
- PL_varies
- PL_vtbl_amagic
- PL_vtbl_amagicelem
- PL_vtbl_arylen
- PL_vtbl_bm
- PL_vtbl_dbline
- PL_vtbl_defelem
- PL_vtbl_env
- PL_vtbl_envelem
- PL_vtbl_fm
- PL_vtbl_glob
- PL_vtbl_isa
- PL_vtbl_isaelem
- PL_vtbl_mglob
- PL_vtbl_nkeys
- PL_vtbl_pack
- PL_vtbl_packelem
- PL_vtbl_pos
- PL_vtbl_regdata
- PL_vtbl_regdatum
- PL_vtbl_regexp
- PL_vtbl_sig
- PL_vtbl_sigelem
- PL_vtbl_substr
- PL_vtbl_sv
- PL_vtbl_taint
- PL_vtbl_uvar
- PL_vtbl_vec
- PL_warn_nl
- PL_warn_nosemi
- PL_warn_reserved
- PL_warn_uninit
- PL_warnhook
- PL_widesyscalls
- PL_xiv_arenaroot
- PL_xiv_root
- PL_xnv_root
- PL_xpv_root
- PL_xpvav_root
- PL_xpvbm_root
- PL_xpvcv_root
- PL_xpvhv_root
- PL_xpviv_root
- PL_xpvlv_root
- PL_xpvmg_root
- PL_xpvnv_root
- PL_xrv_root
- PL_yychar
- PL_yydebug
- PL_yyerrflag
- PL_yylval
- PL_yynerrs
- PL_yyval
- PerlIO_canset_cnt
- PerlIO_exportFILE
- PerlIO_fast_gets
- PerlIO_fdopen
- PerlIO_findFILE
- PerlIO_getc
- PerlIO_getname
- PerlIO_getpos
- PerlIO_has_base
- PerlIO_has_cntptr
- PerlIO_importFILE
- PerlIO_init
- PerlIO_open
- PerlIO_printf
- PerlIO_putc
- PerlIO_puts
- PerlIO_releaseFILE
- PerlIO_reopen
- PerlIO_rewind
- PerlIO_setpos
- PerlIO_sprintf
- PerlIO_stdoutf
- PerlIO_tmpfile
- PerlIO_ungetc
- PerlIO_vprintf
- PerlIO_vsprintf
- Perl_Gv_AMupdate
- Perl_amagic_call
- Perl_av_clear
- Perl_av_delete
- Perl_av_exists
- Perl_av_extend
- Perl_av_fake
- Perl_av_fetch
- Perl_av_fill
- Perl_av_len
- Perl_av_make
- Perl_av_pop
- Perl_av_push
- Perl_av_reify
- Perl_av_shift
- Perl_av_store
- Perl_av_undef
- Perl_av_unshift
- Perl_avhv_delete_ent
- Perl_avhv_exists_ent
- Perl_avhv_fetch_ent
- Perl_avhv_iternext
- Perl_avhv_iterval
- Perl_avhv_keys
- Perl_avhv_store_ent
- Perl_block_gimme
- Perl_call_argv
- Perl_call_atexit
- Perl_call_list
- Perl_call_method
- Perl_call_pv
- Perl_call_sv
- Perl_cast_i32
- Perl_cast_iv
- Perl_cast_ulong
- Perl_cast_uv
- Perl_croak
- Perl_cv_const_sv
- Perl_cv_undef
- Perl_cx_dump
- Perl_delimcpy
- Perl_die
- Perl_do_binmode
- Perl_do_close
- Perl_do_gv_dump
- Perl_do_gvgv_dump
- Perl_do_hv_dump
- Perl_do_magic_dump
- Perl_do_op_dump
- Perl_do_open
- Perl_do_open9
- Perl_do_pmop_dump
- Perl_do_sv_dump
- Perl_dounwind
- Perl_dowantarray
- Perl_dump_all
- Perl_dump_eval
- Perl_dump_form
- Perl_dump_indent
- Perl_dump_packsubs
- Perl_dump_sub
- Perl_dump_vindent
- Perl_eval_pv
- Perl_eval_sv
- Perl_fbm_compile
- Perl_fbm_instr
- Perl_filter_add
- Perl_filter_del
- Perl_filter_read
- Perl_form
- Perl_fprintf_nocontext
- Perl_free_tmps
- Perl_get_av
- Perl_get_context
- Perl_get_cv
- Perl_get_hv
- Perl_get_op_descs
- Perl_get_op_names
- Perl_get_ppaddr
- Perl_get_sv
- Perl_get_vtbl
- Perl_gp_free
- Perl_gp_ref
- Perl_gv_AVadd
- Perl_gv_HVadd
- Perl_gv_IOadd
- Perl_gv_autoload4
- Perl_gv_check
- Perl_gv_dump
- Perl_gv_efullname
- Perl_gv_efullname3
- Perl_gv_fetchfile
- Perl_gv_fetchmeth
- Perl_gv_fetchmethod
- Perl_gv_fetchmethod_autoload
- Perl_gv_fetchpv
- Perl_gv_fullname
- Perl_gv_fullname3
- Perl_gv_init
- Perl_gv_stashpv
- Perl_gv_stashpvn
- Perl_gv_stashsv
- Perl_hv_clear
- Perl_hv_delayfree_ent
- Perl_hv_delete
- Perl_hv_delete_ent
- Perl_hv_exists
- Perl_hv_exists_ent
- Perl_hv_fetch
- Perl_hv_fetch_ent
- Perl_hv_free_ent
- Perl_hv_iterinit
- Perl_hv_iterkey
- Perl_hv_iterkeysv
- Perl_hv_iternext
- Perl_hv_iternextsv
- Perl_hv_iterval
- Perl_hv_ksplit
- Perl_hv_magic
- Perl_hv_store
- Perl_hv_store_ent
- Perl_hv_undef
- Perl_ibcmp
- Perl_ibcmp_locale
- Perl_init_i18nl10n
- Perl_init_i18nl14n
- Perl_init_os_extras
- Perl_init_stacks
- Perl_instr
- Perl_is_uni_alnum
- Perl_is_uni_alnum_lc
- Perl_is_uni_alnumc
- Perl_is_uni_alnumc_lc
- Perl_is_uni_alpha
- Perl_is_uni_alpha_lc
- Perl_is_uni_ascii
- Perl_is_uni_ascii_lc
- Perl_is_uni_cntrl
- Perl_is_uni_cntrl_lc
- Perl_is_uni_digit
- Perl_is_uni_digit_lc
- Perl_is_uni_graph
- Perl_is_uni_graph_lc
- Perl_is_uni_idfirst
- Perl_is_uni_idfirst_lc
- Perl_is_uni_lower
- Perl_is_uni_lower_lc
- Perl_is_uni_print
- Perl_is_uni_print_lc
- Perl_is_uni_punct
- Perl_is_uni_punct_lc
- Perl_is_uni_space
- Perl_is_uni_space_lc
- Perl_is_uni_upper
- Perl_is_uni_upper_lc
- Perl_is_uni_xdigit
- Perl_is_uni_xdigit_lc
- Perl_is_utf8_alnum
- Perl_is_utf8_alnumc
- Perl_is_utf8_alpha
- Perl_is_utf8_ascii
- Perl_is_utf8_char
- Perl_is_utf8_cntrl
- Perl_is_utf8_digit
- Perl_is_utf8_graph
- Perl_is_utf8_idfirst
- Perl_is_utf8_lower
- Perl_is_utf8_mark
- Perl_is_utf8_print
- Perl_is_utf8_punct
- Perl_is_utf8_space
- Perl_is_utf8_upper
- Perl_is_utf8_xdigit
- Perl_leave_scope
- Perl_load_module
- Perl_looks_like_number
- Perl_magic_dump
- Perl_markstack_grow
- Perl_mess
- Perl_mg_clear
- Perl_mg_copy
- Perl_mg_find
- Perl_mg_free
- Perl_mg_get
- Perl_mg_length
- Perl_mg_magical
- Perl_mg_set
- Perl_mg_size
- Perl_moreswitches
- Perl_my_atof
- Perl_my_exit
- Perl_my_failure_exit
- Perl_my_fflush_all
- Perl_my_lstat
- Perl_my_setenv
- Perl_my_stat
- Perl_newANONATTRSUB
- Perl_newANONHASH
- Perl_newANONLIST
- Perl_newANONSUB
- Perl_newASSIGNOP
- Perl_newATTRSUB
- Perl_newAV
- Perl_newAVREF
- Perl_newBINOP
- Perl_newCONDOP
- Perl_newCONSTSUB
- Perl_newCVREF
- Perl_newFORM
- Perl_newFOROP
- Perl_newGVOP
- Perl_newGVREF
- Perl_newGVgen
- Perl_newHV
- Perl_newHVREF
- Perl_newHVhv
- Perl_newIO
- Perl_newLISTOP
- Perl_newLOGOP
- Perl_newLOOPEX
- Perl_newLOOPOP
- Perl_newMYSUB
- Perl_newNULLLIST
- Perl_newOP
- Perl_newPADOP
- Perl_newPMOP
- Perl_newPROG
- Perl_newPVOP
- Perl_newRANGE
- Perl_newRV
- Perl_newRV_noinc
- Perl_newSLICEOP
- Perl_newSTATEOP
- Perl_newSUB
- Perl_newSV
- Perl_newSVOP
- Perl_newSVREF
- Perl_newSViv
- Perl_newSVnv
- Perl_newSVpv
- Perl_newSVpvf
- Perl_newSVpvn
- Perl_newSVrv
- Perl_newSVsv
- Perl_newSVuv
- Perl_newUNOP
- Perl_newWHILEOP
- Perl_newXS
- Perl_new_collate
- Perl_new_ctype
- Perl_new_numeric
- Perl_new_stackinfo
- Perl_ninstr
- Perl_op_dump
- Perl_op_free
- Perl_pad_sv
- Perl_pmflag
- Perl_pmop_dump
- Perl_pop_scope
- Perl_pregcomp
- Perl_pregexec
- Perl_pregfree
- Perl_push_scope
- Perl_re_intuit_start
- Perl_re_intuit_string
- Perl_regdump
- Perl_regexec_flags
- Perl_reginitcolors
- Perl_regnext
- Perl_repeatcpy
- Perl_require_pv
- Perl_rninstr
- Perl_runops_standard
- Perl_safesyscalloc
- Perl_safesysfree
- Perl_safesysmalloc
- Perl_safesysrealloc
- Perl_save_I16
- Perl_save_I32
- Perl_save_I8
- Perl_save_aelem
- Perl_save_alloc
- Perl_save_aptr
- Perl_save_ary
- Perl_save_clearsv
- Perl_save_delete
- Perl_save_destructor
- Perl_save_destructor_x
- Perl_save_freepv
- Perl_save_freesv
- Perl_save_generic_svref
- Perl_save_gp
- Perl_save_hash
- Perl_save_helem
- Perl_save_hints
- Perl_save_hptr
- Perl_save_int
- Perl_save_item
- Perl_save_iv
- Perl_save_list
- Perl_save_long
- Perl_save_nogv
- Perl_save_pptr
- Perl_save_re_context
- Perl_save_scalar
- Perl_save_sptr
- Perl_save_svref
- Perl_save_threadsv
- Perl_save_vptr
- Perl_savepv
- Perl_savepvn
- Perl_savestack_grow
- Perl_scan_bin
- Perl_scan_hex
- Perl_scan_num
- Perl_scan_oct
- Perl_screaminstr
- Perl_set_context
- Perl_set_numeric_local
- Perl_set_numeric_radix
- Perl_set_numeric_standard
- Perl_stack_grow
- Perl_start_subparse
- Perl_str_to_version
- Perl_sv_2bool
- Perl_sv_2cv
- Perl_sv_2io
- Perl_sv_2iv
- Perl_sv_2mortal
- Perl_sv_2nv
- Perl_sv_2pv
- Perl_sv_2pv_nolen
- Perl_sv_2pvbyte
- Perl_sv_2pvbyte_nolen
- Perl_sv_2pvutf8
- Perl_sv_2pvutf8_nolen
- Perl_sv_2uv
- Perl_sv_backoff
- Perl_sv_bless
- Perl_sv_catpv
- Perl_sv_catpv_mg
- Perl_sv_catpvf
- Perl_sv_catpvf_mg
- Perl_sv_catpvn
- Perl_sv_catpvn_mg
- Perl_sv_catsv
- Perl_sv_catsv_mg
- Perl_sv_chop
- Perl_sv_clear
- Perl_sv_cmp
- Perl_sv_cmp_locale
- Perl_sv_compile_2op
- Perl_sv_dec
- Perl_sv_derived_from
- Perl_sv_dump
- Perl_sv_eq
- Perl_sv_force_normal
- Perl_sv_free
- Perl_sv_gets
- Perl_sv_grow
- Perl_sv_inc
- Perl_sv_insert
- Perl_sv_isa
- Perl_sv_isobject
- Perl_sv_iv
- Perl_sv_len
- Perl_sv_len_utf8
- Perl_sv_magic
- Perl_sv_mortalcopy
- Perl_sv_newmortal
- Perl_sv_newref
- Perl_sv_nv
- Perl_sv_pos_b2u
- Perl_sv_pos_u2b
- Perl_sv_pv
- Perl_sv_pvbyte
- Perl_sv_pvbyten
- Perl_sv_pvbyten_force
- Perl_sv_pvn
- Perl_sv_pvn_force
- Perl_sv_pvutf8
- Perl_sv_pvutf8n
- Perl_sv_pvutf8n_force
- Perl_sv_reftype
- Perl_sv_replace
- Perl_sv_report_used
- Perl_sv_reset
- Perl_sv_rvweaken
- Perl_sv_setiv
- Perl_sv_setiv_mg
- Perl_sv_setnv
- Perl_sv_setnv_mg
- Perl_sv_setpv
- Perl_sv_setpv_mg
- Perl_sv_setpvf
- Perl_sv_setpvf_mg
- Perl_sv_setpviv
- Perl_sv_setpviv_mg
- Perl_sv_setpvn
- Perl_sv_setpvn_mg
- Perl_sv_setref_iv
- Perl_sv_setref_nv
- Perl_sv_setref_pv
- Perl_sv_setref_pvn
- Perl_sv_setsv
- Perl_sv_setsv_mg
- Perl_sv_setuv
- Perl_sv_setuv_mg
- Perl_sv_taint
- Perl_sv_tainted
- Perl_sv_true
- Perl_sv_unmagic
- Perl_sv_unref
- Perl_sv_untaint
- Perl_sv_upgrade
- Perl_sv_usepvn
- Perl_sv_usepvn_mg
- Perl_sv_utf8_decode
- Perl_sv_utf8_downgrade
- Perl_sv_utf8_encode
- Perl_sv_utf8_upgrade
- Perl_sv_uv
- Perl_sv_vcatpvf
- Perl_sv_vcatpvf_mg
- Perl_sv_vcatpvfn
- Perl_sv_vsetpvf
- Perl_sv_vsetpvf_mg
- Perl_sv_vsetpvfn
- Perl_swash_fetch
- Perl_swash_init
- Perl_taint_env
- Perl_taint_proper
- Perl_tmps_grow
- Perl_to_uni_lower
- Perl_to_uni_title
- Perl_to_uni_upper
- Perl_to_utf8_lower
- Perl_to_utf8_title
- Perl_to_utf8_upper
- Perl_unsharepvn
- Perl_utf16_to_utf8
- Perl_utf16_to_utf8_reversed
- Perl_utf8_distance
- Perl_utf8_hop
- Perl_utf8_to_uvchr
- Perl_uvchr_to_utf8
- Perl_vcroak
- Perl_vdeb
- Perl_vform
- Perl_vload_module
- Perl_vmess
- Perl_vnewSVpvf
- Perl_vwarn
- Perl_vwarner
- Perl_warn
- Perl_warner
- Perl_win32_init
- RunPerl
- boot_DynaLoader
- perl_alloc
- perl_construct
- perl_destruct
- perl_free
- perl_parse
- perl_run
- win32_abort
- win32_accept
- win32_access
- win32_alarm
- win32_bind
- win32_calloc
- win32_chdir
- win32_chmod
- win32_clearerr
- win32_close
- win32_closedir
- win32_closesocket
- win32_connect
- win32_crypt
- win32_dup
- win32_dup2
- win32_dynaload
- win32_endhostent
- win32_endnetent
- win32_endprotoent
- win32_endservent
- win32_environ
- win32_eof
- win32_errno
- win32_execv
- win32_execvp
- win32_fclose
- win32_fcloseall
- win32_fdopen
- win32_feof
- win32_ferror
- win32_fflush
- win32_fgetc
- win32_fgetpos
- win32_fgets
- win32_fileno
- win32_flock
- win32_flushall
- win32_fopen
- win32_fprintf
- win32_fputc
- win32_fputs
- win32_fread
- win32_free
- win32_freopen
- win32_fseek
- win32_fsetpos
- win32_fstat
- win32_ftell
- win32_fwrite
- win32_getc
- win32_getchar
- win32_getenv
- win32_gethostbyaddr
- win32_gethostbyname
- win32_gethostname
- win32_getnetbyaddr
- win32_getnetbyname
- win32_getnetent
- win32_getpeername
- win32_getpid
- win32_getprotobyname
- win32_getprotobynumber
- win32_getprotoent
- win32_gets
- win32_getservbyname
- win32_getservbyport
- win32_getservent
- win32_getsockname
- win32_getsockopt
- win32_htonl
- win32_htons
- win32_inet_addr
- win32_inet_ntoa
- win32_ioctl
- win32_ioctlsocket
- win32_kill
- win32_link
- win32_listen
- win32_longpath
- win32_lseek
- win32_malloc
- win32_mkdir
- win32_ntohl
- win32_ntohs
- win32_open
- win32_opendir
- win32_os_id
- win32_perror
- win32_pipe
- win32_printf
- win32_putc
- win32_putchar
- win32_putenv
- win32_puts
- win32_read
- win32_readdir
- win32_realloc
- win32_recv
- win32_recvfrom
- win32_rename
- win32_rewind
- win32_rewinddir
- win32_rmdir
- win32_seekdir
- win32_select
- win32_send
- win32_sendto
- win32_setbuf
- win32_sethostent
- win32_setmode
- win32_setnetent
- win32_setprotoent
- win32_setservent
- win32_setsockopt
- win32_setvbuf
- win32_shutdown
- win32_sleep
- win32_socket
- win32_stat
- win32_stderr
- win32_stdin
- win32_stdout
- win32_str_os_error
- win32_strerror
- win32_tell
- win32_telldir
- win32_times
- win32_tmpfile
- win32_uname
- win32_ungetc
- win32_unlink
- win32_utime
- win32_vfprintf
- win32_vprintf
- win32_waitpid
- win32_write
- Perl_pp_pack
- Perl_pp_unpack
- Perl_sv_2pv_flags
- Perl_sv_catpvn_flags
- Perl_sv_catsv_flags
- Perl_sv_setsv_flags
diff --git a/wince/win32io.c b/wince/win32io.c
new file mode 100644
index 0000000000..3683490ac4
--- /dev/null
+++ b/wince/win32io.c
@@ -0,0 +1,370 @@
+#define PERL_NO_GET_CONTEXT
+#define WIN32_LEAN_AND_MEAN
+#define WIN32IO_IS_STDIO
+#include <tchar.h>
+#ifdef __GNUC__
+#define Win32_Winsock
+#endif
+#include <windows.h>
+#include <cewin32.h>
+
+#include <sys/stat.h>
+#include "EXTERN.h"
+#include "perl.h"
+
+#ifdef PERLIO_LAYERS
+
+#include "perliol.h"
+
+#define NO_XSLOCKS
+#include "XSUB.h"
+
+
+/* Bottom-most level for Win32 case */
+
+typedef struct
+{
+ struct _PerlIO base; /* The generic part */
+ HANDLE h; /* OS level handle */
+ IV refcnt; /* REFCNT for the "fd" this represents */
+ int fd; /* UNIX like file descriptor - index into fdtable */
+} PerlIOWin32;
+
+PerlIOWin32 *fdtable[256];
+IV max_open_fd = -1;
+
+IV
+PerlIOWin32_popped(pTHX_ PerlIO *f)
+{
+ PerlIOWin32 *s = PerlIOSelf(f,PerlIOWin32);
+ if (--s->refcnt > 0)
+ {
+ *f = PerlIOBase(f)->next;
+ return 1;
+ }
+ fdtable[s->fd] = NULL;
+ return 0;
+}
+
+IV
+PerlIOWin32_fileno(pTHX_ PerlIO *f)
+{
+ return PerlIOSelf(f,PerlIOWin32)->fd;
+}
+
+IV
+PerlIOWin32_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg)
+{
+ IV code = PerlIOBase_pushed(aTHX_ f,mode,arg);
+ if (*PerlIONext(f))
+ {
+ PerlIOWin32 *s = PerlIOSelf(f,PerlIOWin32);
+ s->fd = PerlIO_fileno(PerlIONext(f));
+ }
+ PerlIOBase(f)->flags |= PERLIO_F_OPEN;
+ return code;
+}
+
+PerlIO *
+PerlIOWin32_open(pTHX_ PerlIO_funcs *self, PerlIO_list_t *layers, IV n, const char *mode, int fd, int imode, int perm, PerlIO *f, int narg, SV **args)
+{
+ const char *tmode = mode;
+ HANDLE h = INVALID_HANDLE_VALUE;
+ if (f)
+ {
+ /* Close if already open */
+ if (PerlIOBase(f)->flags & PERLIO_F_OPEN)
+ (*PerlIOBase(f)->tab->Close)(aTHX_ f);
+ }
+ if (narg > 0)
+ {
+ char *path = SvPV_nolen(*args);
+ DWORD access = 0;
+ DWORD share = 0;
+ DWORD create = -1;
+ DWORD attr = FILE_ATTRIBUTE_NORMAL;
+ if (*mode == '#')
+ {
+ /* sysopen - imode is UNIX-like O_RDONLY etc.
+ - do_open has converted that back to string form in mode as well
+ - perm is UNIX like permissions
+ */
+ mode++;
+ }
+ else
+ {
+ /* Normal open - decode mode string */
+ }
+ switch(*mode)
+ {
+ case 'r':
+ access = GENERIC_READ;
+ create = OPEN_EXISTING;
+ if (*++mode == '+')
+ {
+ access |= GENERIC_WRITE;
+ create = OPEN_ALWAYS;
+ mode++;
+ }
+ break;
+
+ case 'w':
+ access = GENERIC_WRITE;
+ create = TRUNCATE_EXISTING;
+ if (*++mode == '+')
+ {
+ access |= GENERIC_READ;
+ mode++;
+ }
+ break;
+
+ case 'a':
+ access = GENERIC_WRITE;
+ create = OPEN_ALWAYS;
+ if (*++mode == '+')
+ {
+ access |= GENERIC_READ;
+ mode++;
+ }
+ break;
+ }
+ if (*mode == 'b')
+ {
+ mode++;
+ }
+ else if (*mode == 't')
+ {
+ mode++;
+ }
+ if (*mode || create == -1)
+ {
+ //FIX-ME: SETERRNO(EINVAL,LIB$_INVARG);
+ XCEMessageBoxA(NULL, "NEED TO IMPLEMENT a place in ../wince/win32io.c", "Perl(developer)", 0);
+ return NULL;
+ }
+ if (!(access & GENERIC_WRITE))
+ share = FILE_SHARE_READ;
+ h = CreateFileW(path,access,share,NULL,create,attr,NULL);
+ if (h == INVALID_HANDLE_VALUE)
+ {
+ if (create == TRUNCATE_EXISTING)
+ h = CreateFileW(path,access,share,NULL,(create = OPEN_ALWAYS),attr,NULL);
+ }
+ }
+ else
+ {
+ /* fd open */
+ h = INVALID_HANDLE_VALUE;
+ if (fd >= 0 && fd <= max_open_fd)
+ {
+ PerlIOWin32 *s = fdtable[fd];
+ if (s)
+ {
+ s->refcnt++;
+ if (!f)
+ f = PerlIO_allocate(aTHX);
+ *f = &s->base;
+ return f;
+ }
+ }
+ if (*mode == 'I')
+ {
+ mode++;
+ switch(fd)
+ {
+ case 0:
+ h = XCEGetStdHandle(STD_INPUT_HANDLE);
+ break;
+ case 1:
+ h = XCEGetStdHandle(STD_OUTPUT_HANDLE);
+ break;
+ case 2:
+ h = XCEGetStdHandle(STD_ERROR_HANDLE);
+ break;
+ }
+ }
+ }
+ if (h != INVALID_HANDLE_VALUE)
+ fd = win32_open_osfhandle((intptr_t) h, PerlIOUnix_oflags(tmode));
+ if (fd >= 0)
+ {
+ PerlIOWin32 *s;
+ if (!f)
+ f = PerlIO_allocate(aTHX);
+ s = PerlIOSelf(PerlIO_push(aTHX_ f,self,tmode,PerlIOArg),PerlIOWin32);
+ s->h = h;
+ s->fd = fd;
+ s->refcnt = 1;
+ if (fd >= 0)
+ {
+ fdtable[fd] = s;
+ if (fd > max_open_fd)
+ max_open_fd = fd;
+ }
+ return f;
+ }
+ if (f)
+ {
+ /* FIXME: pop layers ??? */
+ }
+ return NULL;
+}
+
+SSize_t
+PerlIOWin32_read(pTHX_ PerlIO *f, void *vbuf, Size_t count)
+{
+ PerlIOWin32 *s = PerlIOSelf(f,PerlIOWin32);
+ DWORD len;
+ if (!(PerlIOBase(f)->flags & PERLIO_F_CANREAD))
+ return 0;
+ if (ReadFile(s->h,vbuf,count,&len,NULL))
+ {
+ return len;
+ }
+ else
+ {
+ if (GetLastError() != NO_ERROR)
+ {
+ PerlIOBase(f)->flags |= PERLIO_F_ERROR;
+ return -1;
+ }
+ else
+ {
+ if (count != 0)
+ PerlIOBase(f)->flags |= PERLIO_F_EOF;
+ return 0;
+ }
+ }
+}
+
+SSize_t
+PerlIOWin32_write(pTHX_ PerlIO *f, const void *vbuf, Size_t count)
+{
+ PerlIOWin32 *s = PerlIOSelf(f,PerlIOWin32);
+ DWORD len;
+ if (WriteFile(s->h,vbuf,count,&len,NULL))
+ {
+ return len;
+ }
+ else
+ {
+ PerlIOBase(f)->flags |= PERLIO_F_ERROR;
+ return -1;
+ }
+}
+
+IV
+PerlIOWin32_seek(pTHX_ PerlIO *f, Off_t offset, int whence)
+{
+ static const DWORD where[3] = { FILE_BEGIN, FILE_CURRENT, FILE_END };
+ PerlIOWin32 *s = PerlIOSelf(f,PerlIOWin32);
+ DWORD high = (sizeof(offset) > sizeof(DWORD)) ? (DWORD)(offset >> 32) : 0;
+ DWORD low = (DWORD) offset;
+ DWORD res = SetFilePointer(s->h,low,&high,where[whence]);
+ if (res != 0xFFFFFFFF || GetLastError() != NO_ERROR)
+ {
+ return 0;
+ }
+ else
+ {
+ return -1;
+ }
+}
+
+Off_t
+PerlIOWin32_tell(pTHX_ PerlIO *f)
+{
+ PerlIOWin32 *s = PerlIOSelf(f,PerlIOWin32);
+ DWORD high = 0;
+ DWORD res = SetFilePointer(s->h,0,&high,FILE_CURRENT);
+ if (res != 0xFFFFFFFF || GetLastError() != NO_ERROR)
+ {
+ return ((Off_t) high << 32) | res;
+ }
+ return (Off_t) -1;
+}
+
+IV
+PerlIOWin32_close(pTHX_ PerlIO *f)
+{
+ PerlIOWin32 *s = PerlIOSelf(f,PerlIOWin32);
+ if (s->refcnt == 1)
+ {
+ if (CloseHandle(s->h))
+ {
+ s->h = INVALID_HANDLE_VALUE;
+ return -1;
+ }
+ }
+ PerlIOBase(f)->flags &= ~PERLIO_F_OPEN;
+ return 0;
+}
+
+PerlIO *
+PerlIOWin32_dup(pTHX_ PerlIO *f, PerlIO *o, CLONE_PARAMS *params, int flags)
+{
+ PerlIOWin32 *os = PerlIOSelf(f,PerlIOWin32);
+ HANDLE proc = GetCurrentProcess();
+ HANDLE new;
+//vvv todo if (DuplicateHandle(proc, os->h, proc, &new, 0, FALSE, DUPLICATE_SAME_ACCESS))
+ if (0)
+ {
+ char mode[8];
+ int fd = win32_open_osfhandle((intptr_t) new, PerlIOUnix_oflags(PerlIO_modestr(o,mode)));
+ if (fd >= 0)
+ {
+ f = PerlIOBase_dup(aTHX_ f, o, params, flags);
+ if (f)
+ {
+ PerlIOWin32 *fs = PerlIOSelf(f,PerlIOWin32);
+ fs->h = new;
+ fs->fd = fd;
+ fs->refcnt = 1;
+ fdtable[fd] = fs;
+ if (fd > max_open_fd)
+ max_open_fd = fd;
+ }
+ else
+ {
+ win32_close(fd);
+ }
+ }
+ else
+ {
+ CloseHandle(new);
+ }
+ }
+ return f;
+}
+
+PerlIO_funcs PerlIO_win32 = {
+ "win32",
+ sizeof(PerlIOWin32),
+ PERLIO_K_RAW,
+ PerlIOWin32_pushed,
+ PerlIOWin32_popped,
+ PerlIOWin32_open,
+ NULL, /* getarg */
+ PerlIOWin32_fileno,
+ PerlIOWin32_dup,
+ PerlIOWin32_read,
+ PerlIOBase_unread,
+ PerlIOWin32_write,
+ PerlIOWin32_seek,
+ PerlIOWin32_tell,
+ PerlIOWin32_close,
+ PerlIOBase_noop_ok, /* flush */
+ PerlIOBase_noop_fail, /* fill */
+ PerlIOBase_eof,
+ PerlIOBase_error,
+ PerlIOBase_clearerr,
+ PerlIOBase_setlinebuf,
+ NULL, /* get_base */
+ NULL, /* get_bufsiz */
+ NULL, /* get_ptr */
+ NULL, /* get_cnt */
+ NULL, /* set_ptrcnt */
+};
+
+
+#endif
diff --git a/wince/wince.c b/wince/wince.c
index 7aabdd7dc5..8a4eb05f59 100644
--- a/wince/wince.c
+++ b/wince/wince.c
@@ -1632,7 +1632,115 @@ win32_open_osfhandle(intptr_t osfhandle, int flags)
int fh;
char fileflags=0; /* _osfile flags */
- XCEMessageBoxA(NULL, "NEED TO IMPLEMENT a place in ../wince/wince.c(win32_open_osfhandle)", "Perl(developer)", 0);
+ XCEMessageBoxA(NULL, "NEED TO IMPLEMENT in wince/wince.c(win32_open_osfhandle)", "error", 0);
Perl_croak_nocontext("win32_open_osfhandle() TBD on this platform");
return 0;
}
+
+int
+win32_get_osfhandle(intptr_t osfhandle, int flags)
+{
+ int fh;
+ char fileflags=0; /* _osfile flags */
+
+ XCEMessageBoxA(NULL, "NEED TO IMPLEMENT in wince/wince.c(win32_get_osfhandle)", "error", 0);
+ Perl_croak_nocontext("win32_get_osfhandle() TBD on this platform");
+ return 0;
+}
+
+/*
+ * a popen() clone that respects PERL5SHELL
+ *
+ * changed to return PerlIO* rather than FILE * by BKS, 11-11-2000
+ */
+
+DllExport PerlIO*
+win32_popen(const char *command, const char *mode)
+{
+ XCEMessageBoxA(NULL, "NEED TO IMPLEMENT in wince/wince.c(win32_popen)", "error", 0);
+ Perl_croak_nocontext("win32_popen() TBD on this platform");
+}
+
+/*
+ * pclose() clone
+ */
+
+DllExport int
+win32_pclose(PerlIO *pf)
+{
+#ifdef USE_RTL_POPEN
+ return _pclose(pf);
+#else
+ dTHX;
+ int childpid, status;
+ SV *sv;
+
+ LOCK_FDPID_MUTEX;
+ sv = *av_fetch(w32_fdpid, PerlIO_fileno(pf), TRUE);
+
+ if (SvIOK(sv))
+ childpid = SvIVX(sv);
+ else
+ childpid = 0;
+
+ if (!childpid) {
+ errno = EBADF;
+ return -1;
+ }
+
+#ifdef USE_PERLIO
+ PerlIO_close(pf);
+#else
+ fclose(pf);
+#endif
+ SvIVX(sv) = 0;
+ UNLOCK_FDPID_MUTEX;
+
+ if (win32_waitpid(childpid, &status, 0) == -1)
+ return -1;
+
+ return status;
+
+#endif /* USE_RTL_POPEN */
+}
+
+FILE *
+win32_fdupopen(FILE *pf)
+{
+ FILE* pfdup;
+ fpos_t pos;
+ char mode[3];
+ int fileno = win32_dup(win32_fileno(pf));
+
+ XCEMessageBoxA(NULL, "NEED TO IMPLEMENT a place in .../wince/wince.c(win32_fdupopen)", "Perl(developer)", 0);
+ Perl_croak_nocontext("win32_fdupopen() TBD on this platform");
+
+#if 0
+ /* open the file in the same mode */
+ if((pf)->_flag & _IOREAD) {
+ mode[0] = 'r';
+ mode[1] = 0;
+ }
+ else if((pf)->_flag & _IOWRT) {
+ mode[0] = 'a';
+ mode[1] = 0;
+ }
+ else if((pf)->_flag & _IORW) {
+ mode[0] = 'r';
+ mode[1] = '+';
+ mode[2] = 0;
+ }
+
+ /* it appears that the binmode is attached to the
+ * file descriptor so binmode files will be handled
+ * correctly
+ */
+ pfdup = win32_fdopen(fileno, mode);
+
+ /* move the file pointer to the same position */
+ if (!fgetpos(pf, &pos)) {
+ fsetpos(pfdup, &pos);
+ }
+#endif
+ return pfdup;
+}